{"_id":"winclaw","_rev":"64-e4311c7057cd121b56637a38dcac3bec","name":"winclaw","dist-tags":{"latest":"2026.5.8"},"versions":{"2026.2.11":{"name":"winclaw","version":"2026.2.11","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.11","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs","openclaw":"winclaw.mjs"},"dist":{"shasum":"b388be4839d3331022dd0550c3af2ead2051814f","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.11.tgz","fileCount":2907,"integrity":"sha512-TGaKkaWJTZHO44B4rh38FeADzliyb8z9ZZFj2+3CwZ3f83BBFj+khqokglRLVuIrFmP1kTAFZffTDntas2qG3g==","signatures":[{"sig":"MEUCIG1ZH77/CKzew/3s4H+bfIJNNj461pu8OOMmZy9ZrORhAiEAmu6W/SjYYQeZfK1NBtES2ZthvT6HYfNvMfH7GIAi4XE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42832039},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"565d234741d6d88e5a5c72a6cdced2c0d21ebd38","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.openclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"OPENCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open OpenClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/OpenClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"OPENCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.openclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"OPENCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/OpenClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"OPENCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"OPENCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"OPENCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.11_1770827378202_0.865238999262294","host":"s3://npm-registry-packages-npm-production"}},"2026.2.15":{"name":"winclaw","version":"2026.2.15","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.15","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs","openclaw":"winclaw.mjs"},"dist":{"shasum":"5f1e4988b7e2f7c165607f267a7edc106be8f949","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.15.tgz","fileCount":3007,"integrity":"sha512-JHC0gIdAPoQHpT3IXgDngSNPrQP45uimowCqD5euDjwfrMe48uHXz2hRA419W1FzAys4KYg02/uBoYfcO2Id3w==","signatures":[{"sig":"MEYCIQD2u+WqyvA6Om4Vll1bX/xY2UaS8k3K3iKNd0uzX0ePdgIhAITG7GuoMGtBiNF8waE82uqQhKi9LVYq0Q0DFrSxiwoe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43092844},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"9f92429589aa998becb59e8c090d9bf0e11a5097","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.openclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"OPENCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open OpenClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/OpenClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"OPENCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.openclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"OPENCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/OpenClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"OPENCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"OPENCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"OPENCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.15_1771168319068_0.6438439805960483","host":"s3://npm-registry-packages-npm-production"}},"2026.2.16":{"name":"winclaw","version":"2026.2.16","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.16","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"51b929b5801f28e01dad99ae60b641d0680ee51a","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.16.tgz","fileCount":3007,"integrity":"sha512-E9lEEySYW/T8IbBuXxFT8xqUkr460snFXhb7ynBPWlekAO9lo0C+pnCZgu1zbmnjz5ZPoMyksDcQhnx9zz9YqQ==","signatures":[{"sig":"MEYCIQD7chiGky8SFlepi07W8C0qjteC2X9UhPWdHe6JXEZX3wIhAOk6cPU6yMBzwqN8Mr0IpzXa/gbI0+9uOQJWn9avsL50","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43078408},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"0e67697a56e67b99c1a3b770f1edd1c1a7751416","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open WinClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.16_1771249847887_0.989057748457284","host":"s3://npm-registry-packages-npm-production"}},"2026.2.17":{"name":"winclaw","version":"2026.2.17","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.17","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"8146b8ff8f4a8025abd73423441454e994b6798d","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.17.tgz","fileCount":3013,"integrity":"sha512-S/1Shq2U+HCyBK2XS//EGru72IavQAyF8RdPFBeH/VhpCmMSXG8h7Q78M5zA6c1+87D9lseJOUjj+kjdFZwC6Q==","signatures":[{"sig":"MEUCIQCALgyFQlf8ggv1WdT6OsTtcSSZ+Jv41ih5eRM3SW3DZwIgQUHKkf1AdHpgg8PvXI6nK0wq0FiqLJRlSCjOHY8n8y0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43163138},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"90899ce7237329c9d5fa7b0373c98c687b0cc8c9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open WinClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.17_1771312533564_0.26833391387944516","host":"s3://npm-registry-packages-npm-production"}},"2026.2.18":{"name":"winclaw","version":"2026.2.18","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.18","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"5071ab5461c94e7e91415e9661a240d13fbb6bc1","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.18.tgz","fileCount":3030,"integrity":"sha512-ZJHSsM10gAAqbylhIt/f577s/lzAHZaA90YGIyauJXkgpBkml9oQ9TmTf2lFnjkTYymx3gtU6MFcza0kyUOC5w==","signatures":[{"sig":"MEUCIGKZGwk70NujzBRVDp1yNu+WLyryQBaKNiuyKWk08H32AiEArdpctDjgOY1Uln8taSCIsJOeJ7mwLQ33MdKLe0NGQx8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43199240},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"48ee6c0dbad78821fdee56be119edb8e9255bff1","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open WinClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.18_1771343347936_0.8789882695503803","host":"s3://npm-registry-packages-npm-production"}},"2026.2.18-1":{"name":"winclaw","version":"2026.2.18-1","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.18-1","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"d7d1f8c8c114abcdc344870b2d01da1ee0b5f297","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.18-1.tgz","fileCount":3030,"integrity":"sha512-BSIGQy/NtwTIgz/4saEfVKM9MiymS4ilvFZk/DxeFKS6c1xnQ8wuc+Xk6jSn6YvapH3uU7D99O037Gol0LdhpA==","signatures":[{"sig":"MEYCIQDotZDEs1Bm7GEtSMGqIZoh7jt5hppLWa9lvMiMgS6YMQIhAJnoZCEmxCivftqwBBxbYvNUA/D+5co/YgTALHoMJB2w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43203624},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"d21fe67b5f168f5613eb53aaefffc38e5e000513","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open WinClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.18-1_1771379030935_0.026678275095882942","host":"s3://npm-registry-packages-npm-production"}},"2026.2.18-2":{"name":"winclaw","version":"2026.2.18-2","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.18-2","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"3f6118f2d1620f3624495259d152443fcf255508","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.18-2.tgz","fileCount":3030,"integrity":"sha512-qhQlBo05cpo+f/R93e+sOj0TtcVrC7xLGeZsA6wVRgQCnZqGlllnxZhjOMhV1SELKIGyVPZQpXiVkhjqu0PPiQ==","signatures":[{"sig":"MEUCIANLu0QW2YZ+JHr1Scw9Bpx0qexCu1ThKlLtU8XS7yKVAiEA3B8dn2wIXoEf5aonzeOZwEC2nZd+swgldeGCi+9Mxh8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43205435},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"4902327105fc144c08f451d358625fb90283419c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open WinClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.18-2_1771394276102_0.5146472266776274","host":"s3://npm-registry-packages-npm-production"}},"2026.2.18-3":{"name":"winclaw","version":"2026.2.18-3","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.18-3","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"10890dcd46e43fcd2c3940b9d126aa924c18b98a","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.18-3.tgz","fileCount":3030,"integrity":"sha512-HgV2QO38s8LFqiQkLcRMB7MhxSYpKiB8l0QRKywcIvNICCgdt7MO9slMcQOrUCIK8X6ezgV9zUnUU2SIS0T2kQ==","signatures":[{"sig":"MEUCIAKsRT+Y9nZNQdRhDde7L/GuG4nbwkd4LH/Zrx3Puwi3AiEAnBDizk8SsojkcUxq1Ku72JI8HO/dvg75eYwKjM8cT9Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43205435},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"4902327105fc144c08f451d358625fb90283419c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open WinClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.18-3_1771400195788_0.026082866964153073","host":"s3://npm-registry-packages-npm-production"}},"2026.2.18-4":{"name":"winclaw","version":"2026.2.18-4","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.18-4","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"50cb582896ba98ee134f6fadbf83aad526ce12b0","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.18-4.tgz","fileCount":3030,"integrity":"sha512-69ztyTnvwF4jC9b80/RbGjfY/JqSs3Y1Vdb7tNCspBiNIW7/YCjITZG9X1rUctBDMQF811Ml1g4hiHGb0GQfgg==","signatures":[{"sig":"MEUCICJv3mWvTBZdRoSMYNVnCsSyUbU1svEbsspSGcDUD1V5AiEAk9khTiPDXeYKEuNrZbw1ORYFgkTZQSkacVKTLZTTB7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43208188},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"4902327105fc144c08f451d358625fb90283419c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open WinClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.18-4_1771423729271_0.9455237802595886","host":"s3://npm-registry-packages-npm-production"}},"2026.2.19":{"name":"winclaw","version":"2026.2.19","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.19","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"b64d6f22779924c99a1e64643ebdc9a5f223c09a","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.19.tgz","fileCount":3041,"integrity":"sha512-Xxl3Y2/HKjwFY55uTa53nKOFMhDYvQh9ikiuT40nFff2aeftnPJ/1xaBL5U2uI5ctoTmfTBHztj8dCToLAFCdw==","signatures":[{"sig":"MEUCIQDPsxG2OpVY24rUXZE28ryUkBVoqqk81lKHb8AYabje3AIgMhsVkbqx2ltD7bPJeA2lv8ez+NI72IAG3MJcdFhyp0Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43291450},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"3603ef5326051aed2e150a0d4a9150f68a38eba8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open WinClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.19_1771511489683_0.16946311482529564","host":"s3://npm-registry-packages-npm-production"}},"2026.2.20":{"name":"winclaw","version":"2026.2.20","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.20","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"15ef836a8249239086ab4c9028e29d186edd6ad4","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.20.tgz","fileCount":3047,"integrity":"sha512-dUdKiT+ivKe+NYCVyVnlyd4ZXjuChc7JuHRPDRWDCyoW9l+jU+/5yzU2eR6qKfanbpKAkt8UDjnHrF0F6kM5LQ==","signatures":[{"sig":"MEYCIQDeKT8mNwgM5p5sVAoZZA7m+BNOrlT0xfnRgc3wJ49l4AIhAOu+guT1ozXgu9cwbuShS51ZUHQy15YOB62Pqd+xTTHc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43581660},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"14d06cbb87bb2771ea8e721c219c132e8a4da563","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open WinClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.20_1771602199107_0.10621306982561007","host":"s3://npm-registry-packages-npm-production"}},"2026.2.21":{"name":"winclaw","version":"2026.2.21","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.21","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"adc7cfbbafb60aff1327242b589640f8b27f111b","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.21.tgz","fileCount":3049,"integrity":"sha512-H9x4FPtVWMhIw/OpmK+RPx4JSZ6Q6TgQjWl2uCaDBcLwhGsMPvmZdh9JM3ACU+WoHMN04IR3zK0ANtj0FHBxtw==","signatures":[{"sig":"MEQCIEcKArSYyGbcC/k4JMD//uuQLgvuarLsZ5TvBzcIvGNhAiARPqlFvAFANPG77wBlniqWrC4BRZitSqbloaj6bpM7Rg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43605584},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.1","tar":"7.5.7","form-data":"2.5.4","tough-cookie":"4.1.3","fast-xml-parser":"5.3.4","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js"},"gitHead":"dcabb7bf639d61365887b0326ec0f9e29486210b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"cd apps/ios && xcodegen generate","ios:run":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"cd apps/ios && xcodegen generate && open WinClaw.xcodeproj","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc 'cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","tsgo:test":"tsgo -p tsconfig.test.json","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.7","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.2.4","grammy":"^1.40.0","undici":"^7.21.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.0","osc-progress":"^0.3.0","signal-utils":"^0.21.1","@buape/carbon":"0.14.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.52.9","@mariozechner/pi-tui":"0.52.9","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.986.0","@larksuiteoapi/node-sdk":"^1.58.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.52.9","@mariozechner/pi-coding-agent":"0.52.9","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.28.0","ollama":"^0.6.3","oxlint":"^1.43.0","tsdown":"^0.20.3","vitest":"^4.0.18","rolldown":"1.0.0-rc.3","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.2.2","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.11.5","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260209.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.21_1771663877669_0.8571383655000742","host":"s3://npm-registry-packages-npm-production"}},"2026.2.24":{"name":"winclaw","version":"2026.2.24","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.24","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"22453808d1303f65cf12da37896de17ffae57abb","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.24.tgz","fileCount":4120,"integrity":"sha512-CJQeWPK8n8gHxigA2LBvkO6Kcuny69kVzMWFyVTunDhIwyJelGs6c0A6WxBQsGe7HXt6RQx0z/Ek7AvkcKMlHw==","signatures":[{"sig":"MEQCIBoTXvMhuHGn+20zucA3C/wtn7tGcg1xpdW/Pr0gJnZLAiAdpnzHF15pb06QHe0AXRZjQMxcbqIfsAnXUzNwjDwzxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56209916},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"8cca076a4f4f0b2667c8ee42a1ba6223c2e686f8","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.24_1771945258217_0.3711765451847031","host":"s3://npm-registry-packages-npm-production"}},"2026.2.25":{"name":"winclaw","version":"2026.2.25","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.25","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"beb940cb89035879ace1d59427cb79f3387ebb9e","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.25.tgz","fileCount":4135,"integrity":"sha512-Y41po/lmsAVS13cQgMrcsDTDvI/MaJM0jFlcJZZnrjopxguCTtm1pinVU1OmJuzK1QgjYIkovRgbFR6qiQpK/g==","signatures":[{"sig":"MEYCIQCV0HyREKNBtzumSmFE8mzJKf1OziLdKhRphYhe4HjpdwIhAIGcx0F4Yd6VkZMqjDCarZae7NXac6y1w6WZ2Xltml73","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58822886},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"8914cafc8e8f4d363cd53f1db34b54325bd1be92","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.25_1772008443900_0.1200348209114841","host":"s3://npm-registry-packages-npm-production"}},"2026.2.26":{"name":"winclaw","version":"2026.2.26","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.26","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"38bb37bd545ffbf48af4115a2e13964e14c05045","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.26.tgz","fileCount":4129,"integrity":"sha512-3MW8VUYD+9mQH6AxIi3gDnGtRsXkOdkdrMOq88zlCLBPYs8E7yBaPpIHhqz4vv2x4J1yElh2MJ12JQSfi+nBwA==","signatures":[{"sig":"MEUCIQDvBJbiRAkmUwHGQ09FGpq5wpbFkmK21uvH2I6Y4XPGOAIgZIb8IwTy2FHqnntUFQquO6w9lPnfLQeYHrQP7r/rVu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58464200},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"8914cafc8e8f4d363cd53f1db34b54325bd1be92","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.26_1772084048707_0.13084800697137577","host":"s3://npm-registry-packages-npm-production"}},"2026.2.27":{"name":"winclaw","version":"2026.2.27","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.27","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"a33c76822202d986b8d2b87a95673a582b4c42cb","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.27.tgz","fileCount":4308,"integrity":"sha512-QjC6u4vKFAncWRZXk+emjdkRcs7JilQO7fpOLVa00Bm8nzgoK9Gutwuzn7S2BtXxRETi8MTeqj3dqddJtLOPUg==","signatures":[{"sig":"MEYCIQDxbFljeDe2neGIK4cyFJwvYv87IyUc8Z7uRt4HG/H1wgIhAMc8T8ELcsRf3BGfLG9+XP7e95zOEDhk1cYsLW51LpXE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61532210},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"3be8c0ce706d27cbbc6d3a626a03066c23b216ff","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.27_1772166494252_0.25708340927740747","host":"s3://npm-registry-packages-npm-production"}},"2026.2.28":{"name":"winclaw","version":"2026.2.28","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.28","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"c5269ad3182c07809b862510987acc193d202034","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.28.tgz","fileCount":4663,"integrity":"sha512-keXBgxHK2USJ+M1l/chulsv4vqoZXnvh8OCDxwGq3IOYAJWE6phIcF4vlQ72cn00eo0ZKLtAQm9daC4ynrqd3A==","signatures":[{"sig":"MEYCIQDsTN7vbsthiAolXdpNxTp1sg860Lb3AHALV6BnmxdLmQIhANAN8tY/HNEHOaydcR5Mh++qiALQgegbziU0JnIwqPkE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63764479},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"60430b5135efa9fccca99c7004d161b6ff9a6268","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.28_1772169441345_0.24519980908444672","host":"s3://npm-registry-packages-npm-production"}},"2026.2.29":{"name":"winclaw","version":"2026.2.29","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.29","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"1ae264fa2beb9d54d73ad573e3eb6ed067b5918b","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.29.tgz","fileCount":4663,"integrity":"sha512-X1hDIooSkmGgLuA0Qc0VJ+R9lpB83H/jlUQ1YpGhBFS4j2L85xwmxvxINiyFLFHW3/fLNxHXvAXfVsSKaEd62g==","signatures":[{"sig":"MEUCIHhW5IdjSdx3fd7RKJaeJFkmayzo5TnIVPv1L3/8xeucAiEAsgBQCdoDnTchB/p8Uqu40wiW8pqKbj2b2dVQQsEO6nA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63831944},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"6650ca8011c570dfca43425ae6b9746c9ddb64fb","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.29_1772184053005_0.8032313118123906","host":"s3://npm-registry-packages-npm-production"}},"2026.2.30":{"name":"winclaw","version":"2026.2.30","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.2.30","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"19fd215c38f0fcbb9a5628215503a06fef1a5117","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.2.30.tgz","fileCount":4669,"integrity":"sha512-faW8LScVAdoP4rdRE6WJZV0MQO4sPwcJlIoATt/FX1PspgYM0N6GD8S8oO4K1TiN2rMIPieQrrqMH5+VaJ1Ydg==","signatures":[{"sig":"MEYCIQCRe8fT0Cwz7QMdbkly8/FtUDah0w3WF3v80XMLL1tkbgIhAOtBrmpO4xlzpyct1An2f7KMKQS6XY5lsg7RgFiNmuCl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63905994},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"f6a937100c76e1afc004a2a107216bd2ea2cde88","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.2.30_1772255296615_0.4110819007246844","host":"s3://npm-registry-packages-npm-production"}},"2026.3.1":{"name":"winclaw","version":"2026.3.1","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.1","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"91493008129617ffa048c6de02b2463a4c5c48d4","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.1.tgz","fileCount":4746,"integrity":"sha512-muQ+FUEsOSeSBDU+c6iXqx8MqP2woSCZpYplwaGlBEXKe+8sXh+9TPxDhXEpDKxtzd0FUx7fA3eAaMCDQEU+Lg==","signatures":[{"sig":"MEQCIBjqipfGrXITcpK5TOu4/cI4GO+W3aTkXLVZdYaHpo/LAiAXJdjzMrbf7dN1bHHa22Qd4i9EdogE/2ZgR6yLoim/kQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64983891},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"7c5aef267a9c2aa5b923407f8e5219669bfc7094","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.1_1772331476587_0.8521680771812581","host":"s3://npm-registry-packages-npm-production"}},"2026.3.2":{"name":"winclaw","version":"2026.3.2","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.2","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"70bcb638e70fe69caf6f7b33d6df47ee7444b7f4","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.2.tgz","fileCount":4828,"integrity":"sha512-nhtBvZngEzfO+ZoFh9pHrp6l0IIcICh5nc7KRPTtsQ/FPORY4WK8HkekDR7Q6tniWMl1Z13u7oNM/ubYstdzcg==","signatures":[{"sig":"MEUCIG7e2tstG+bSQqTuql4pVajRCu+zAt0LW0GiMzfJG2ugAiEAyDgvuNpsId0qj8mbUHZDriArnMuXIB7dCs3cMUiSixk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65830885},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"bccc567157d860c17657f214611d817c4c9e5bad","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.2_1772432992020_0.5797337706700196","host":"s3://npm-registry-packages-npm-production"}},"2026.3.5":{"name":"winclaw","version":"2026.3.5","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.5","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"167f164b02665abb9b0eff110c08836f73862350","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.5.tgz","fileCount":4841,"integrity":"sha512-JDvwWhs2tU7TwIsV0y1JQJbMT6davjsESRIdSgqrMieuOPz+UxeJ45rFoL14W+J/ClQrf7v9sKQsgH67xbQGmA==","signatures":[{"sig":"MEYCIQDduBkhGiyi2FcvS4RZc71EKZcVxAR/f6xo44bmIJmDogIhALzFECpexBwdIAtDM5pRgP+F+sxqYKt55wPFFXXsEh+2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66258565},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"8ad0234b9cccd0764a6464b5ca84efbcf59ddad4","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.5_1772690281014_0.4610878057746022","host":"s3://npm-registry-packages-npm-production"}},"2026.3.6":{"name":"winclaw","version":"2026.3.6","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.6","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"244f7b83fe045e0c303e3cbbdccfe0b5b1e6d6d1","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.6.tgz","fileCount":5560,"integrity":"sha512-18YPdhW4hXw/JfYlVDsM2kHe/aR3bo91ZTwXYioELXqeF0GFWq/fO7r5rzVroIfC5RV658olbOY7E5qjIPvrNQ==","signatures":[{"sig":"MEUCIQC97fNO2ozBDwmpbP86z/ZRew/pJhVoddAhFhYJTw2K5AIgJMzt/318O5PSFV+4Ghwukd4EPO8bN0bqcH8zAskUm8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95265939},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"3157209f02410dd07fcb7407c83df20249dc76b7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.6_1772708069397_0.26436808446563154","host":"s3://npm-registry-packages-npm-production"}},"2026.3.10":{"name":"winclaw","version":"2026.3.10","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.10","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"8f79403b97ebc043ed37c7319eb7f91990c4de62","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.10.tgz","fileCount":5650,"integrity":"sha512-JetSZ7xjN06EXUwcRNlKCTA0DQu6xbu0Ns8yncxke3abZG3UHtU8IBImgYLwVujK2nk2kg4XO2Pw51E9cf9/pw==","signatures":[{"sig":"MEYCIQCtOBjMgl2WoA1ixgLaeeApoTafadCwGO/EK28hOIMVXgIhANgugINpE74FOqrjT6K0X0OhyA3pn3GKB6UxNh3ugK31","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101855140},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"42ed39db98450860cf9af7a4f32f9ae368dfc32e","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.10_1773126154106_0.41755027611184103","host":"s3://npm-registry-packages-npm-production"}},"2026.3.11":{"name":"winclaw","version":"2026.3.11","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.11","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"ee324fba85b427c6ccd07eda50599e536c8189d6","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.11.tgz","fileCount":5576,"integrity":"sha512-Fistk3fqjM06dBYZhq1xGKKOvxJkW3jHWezWrn0ZCdFUyyvT097jIYqC2l4TSN4bCJ5cYXaYS4UemZbii0SzYQ==","signatures":[{"sig":"MEYCIQDjqsiY/QyrKc46utOR4o836bvpfLFF3Cm/R7vl98Oc7wIhANXM2gZV7UTlMdANDEHel5vKRUWt0bS8p0+Ji1z7pj4u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96124792},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"c136977cb01b0e961cb8217f58726568f9ab7001","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.11_1773156879838_0.34972891424506924","host":"s3://npm-registry-packages-npm-production"}},"2026.3.12":{"name":"winclaw","version":"2026.3.12","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.12","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"0d80274cebaa8a2e6fb6ff16f6e6aa32db332428","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.12.tgz","fileCount":5652,"integrity":"sha512-yenb7Wxv6/XIRRUyjpSNUAnb2NlN2d6+Der0nY1Z7WBKAy+jM9KJcQJoQWHPir0uK1lkENmP7M3dXw4IjX0JBw==","signatures":[{"sig":"MEYCIQCjd4pL5c5caVX5w0TttDW7FrZ+r1QtdRXC1WKQwsgOGwIhAMkQuldllFDLM2GL2DxchurA6oJxC3TSPGLG9TXE4oF4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102085456},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"efa1ed7f06ba074211ee0242dd310ec0720722f5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.12_1773235006417_0.03623181279634502","host":"s3://npm-registry-packages-npm-production"}},"2026.3.13":{"name":"winclaw","version":"2026.3.13","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.13","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"96b3b272803fee488fed6b1c752b3d158c2678c6","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.13.tgz","fileCount":5577,"integrity":"sha512-J8rjiRcIeYdC4RXiUsXP3Oisx8uceM2d5C9M4ICk9UhHLgxB/fHHCTTbmPZg/++g4FE4afDOTR7JijDUVTu30w==","signatures":[{"sig":"MEYCIQC/VaxUfDIcazHyMDePMjMPbxqNCXr4X8SixxRf4dqY+QIhAKMlNerDSkL6sPipVh8ry8M5ZEPdsIiMjvsBg1uUwaD0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96140306},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"efa1ed7f06ba074211ee0242dd310ec0720722f5","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.13_1773245285637_0.08791766180693106","host":"s3://npm-registry-packages-npm-production"}},"2026.3.15":{"name":"winclaw","version":"2026.3.15","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.15","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"8861563a21d9dd2146e9a802ce556049bffb20e0","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.15.tgz","fileCount":5588,"integrity":"sha512-yttAIPl5CvetUkiDqm4IUnZQPovcQuMcQoyqoPHP8pMFXC593IcGd1WhqcBp1o+SRC1mFvxN16dqVEroG9a0Iw==","signatures":[{"sig":"MEUCIAOO4ppzsgERsAN0KZ9Mu69GoglACGUbXHQDvaF7ADWtAiEA0v+wuZe5gB5Uh/zddOVoCK3JktF2pd5k7CLcGAW6qf8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96472243},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"28716ed86a046a019e9d11f222e5a39d08cbe363","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.15_1773398969611_0.9969773338500876","host":"s3://npm-registry-packages-npm-production"}},"2026.3.16":{"name":"winclaw","version":"2026.3.16","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.16","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"9fba0dfdab6964e6e869b2aaf85ef0d392b4a7fd","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.16.tgz","fileCount":5681,"integrity":"sha512-Db0GB1HxVvNYAyMg/YwbfNxs5lV8hLQxkTrqm6/kUTmBKpf6INPqh9ZV2cRN1em2qs8k3kIMYqrsRlDdCBtNSQ==","signatures":[{"sig":"MEQCIBk5e48vd8gy7cY8m2sG3PE6yV7AytMH8ym1/JlMyzKDAiA+DgZ3MkOMbC4Rs9coAs84WYsxRVQRJNCjVUSL0R+tiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104110272},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"bd95d4404c6b993c813270c84671635b85abe4ff","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.16_1773842005406_0.5002431237094214","host":"s3://npm-registry-packages-npm-production"}},"2026.3.18":{"name":"winclaw","version":"2026.3.18","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.18","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"231e8fa19f7060f03058a11568f0e28e6a1e8494","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.18.tgz","fileCount":5606,"integrity":"sha512-7fgg5aCxte0HM7pWi0SOLXvVwMWZGSDB2MW10pKKmSovCheLgS92IZtLUDCVt2jabCXb2gtnj7q7KEtWH41CMA==","signatures":[{"sig":"MEUCIGupSG5RM3j+MvFoiYMgUyibgEbJMpTC3hvpLqZb39XfAiEAsbo4UefaGvq5xIwltKUC1De62tOfbzzVxo5O1ZZx+AY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98098140},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"34d7cc5770764ff5c5aeb4ac2e0d758fee060f2b","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.18_1773843195756_0.4958797772500929","host":"s3://npm-registry-packages-npm-production"}},"2026.3.19":{"name":"winclaw","version":"2026.3.19","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.19","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"3d07c5cb7386f151c0a6b8d609692423ebd3ebfb","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.19.tgz","fileCount":5606,"integrity":"sha512-khveHHtp7K9bfHx2TVbYoeGPT2I7TSRBqr/rG6lX77AoPnpm0gfXTzVlNHXyEt1QTnpRqFMv5MdeEMT+SgHfNA==","signatures":[{"sig":"MEYCIQCL0NUtVynpn9mU71wewgr14G1YZ97Sl3SL49En3qqr6QIhANj7V4owMDcnEcTEiI/14L802yePg2+WHrVtW6YSocaM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98102623},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"aaab2122f4f79884d571c8ac6b485acf74e6693c","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.19_1773919537864_0.1289352996048434","host":"s3://npm-registry-packages-npm-production"}},"2026.3.20":{"name":"winclaw","version":"2026.3.20","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.20","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"807f39f8d590d2b81939d6ceeb8e9fbab11f91d6","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.20.tgz","fileCount":5662,"integrity":"sha512-fdOsdRTFo7Lu1Frd6aQBXR9uEwuWSIvFXHDbpk68ooEho0XDEzNKMcmDLNaCY4XYDWFxT53BXmgQOZWsg20cCQ==","signatures":[{"sig":"MEUCIClKC1e/eUFRs+3D2KNBFJ9MvXP69PCUNHz0lJit2AcDAiEAjUYnksMr0LJSRow/XLi2NWTRlg1qMu2Ol81piZ1R49E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98491563},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"e46480f17a9cda6c773929a1919de422543e61e9","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.20_1773968688210_0.046952559122552806","host":"s3://npm-registry-packages-npm-production"}},"2026.3.21":{"name":"winclaw","version":"2026.3.21","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.21","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"bc456f6b2c77293ab066d3690027e4a19ddf2b60","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.21.tgz","fileCount":5737,"integrity":"sha512-zU4T2hE/hZrDiO5UJrF0etRdjRKSamhImvI/DApJT+MiqjGUQ7CbB3O2T2onHdwhXsj5EeWcK0D9czjuAKeIlA==","signatures":[{"sig":"MEQCIA+y2zxjsCkKjiOrgIxZU8vcprjkwOXJOB1d9c3g3oWoAiBmbSwhS3h8vyIHABCcxEWVu+e26YX+hhBhkXmgyrEECw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104509147},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"78c5bea872f8a80c273eec21efaa780e9b11f3a7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.21_1774058968053_0.36944011710272173","host":"s3://npm-registry-packages-npm-production"}},"2026.3.22":{"name":"winclaw","version":"2026.3.22","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.22","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"10c0556e9ae9a3e3f247035f93d4dfac9fae1a0d","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.22.tgz","fileCount":5662,"integrity":"sha512-8L998emM8NhGoUY2ncW72gthE3wn2ojcmO5S47JRXHGiHK5W9nRLi7mOe8NxIF1na6QUMhpqgchh/cXmtS8vIw==","signatures":[{"sig":"MEUCIQD8r0t5gc6UCloPRQPK3Y3gPOp73bknK7v36QSNALJQ+wIgOBAkCI2eTQXb7T2K4z7C9+DvXbNlW6COdd1DZ76wGPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98487957},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"78c5bea872f8a80c273eec21efaa780e9b11f3a7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.22_1774063416012_0.09466917689952492","host":"s3://npm-registry-packages-npm-production"}},"2026.3.23":{"name":"winclaw","version":"2026.3.23","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.23","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"828652209dd81197ddbdd0fa90860bdc395aafe3","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.23.tgz","fileCount":5662,"integrity":"sha512-ERj3H4cJ0N3O3/xf2svCKasxup45Bd5ybVzt+amXZAhLBYblj/WLOR7cI3w7vN7I31YrtMiazw0DDJk5qxpg3A==","signatures":[{"sig":"MEUCIHNOL9+JC26DeT5w2JsteAg8FViX7/lN01o2eQ0FhEWxAiEAvJFJriempxVrH8CenBl0xDHa9R0OfKkYyfrzMcxGTn8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98493806},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"78c5bea872f8a80c273eec21efaa780e9b11f3a7","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.23_1774067148004_0.6484142987928876","host":"s3://npm-registry-packages-npm-production"}},"2026.3.24":{"name":"winclaw","version":"2026.3.24","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.24","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"c25f3b2f22a63988df4eff3ccf0f4ee35644931b","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.24.tgz","fileCount":5737,"integrity":"sha512-5GiNtQc3boIfSeEdNstnR5VpPix6x4GvTRKrRxw7ynWH9PG9p4Gnw+MH/eHypqoek5Ab7cRHWeIqhnxEpj9GAw==","signatures":[{"sig":"MEYCIQDU5FWOQM9L8uDam4ImdwCFMYqbjRwkeINfHxkA5H4gRwIhAOmovRNaJjYtoL3ORq6lQgyDYYrdTPSW3qxYOClbdK1P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104513210},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"b13cd1b96297936bd298d9af5b09cc264bd26647","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.24_1774151660307_0.9741624138262","host":"s3://npm-registry-packages-npm-production"}},"2026.3.25":{"name":"winclaw","version":"2026.3.25","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.25","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"61ba7f43950c022b37473105b687debf4caa1f98","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.25.tgz","fileCount":5737,"integrity":"sha512-uVceXzIpN4MBxuN8eYwbz+2rC5cNSiGFE5XqKbs9E8Dgtx2m5C83JUGlUuQKGbTis6J8A/CvNKCRwBIq/7EOjA==","signatures":[{"sig":"MEUCIEeVDpzxX6rl2vYrNpaVBuyqgqYktF8nQ55ylxQC9u/AAiEA6rq0KOg8vr8RyOrcVuDkhtm4aEtkSv/UeY1idbxZidQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104513210},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"b13cd1b96297936bd298d9af5b09cc264bd26647","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.25_1774153241409_0.7130945806476092","host":"s3://npm-registry-packages-npm-production"}},"2026.3.26":{"name":"winclaw","version":"2026.3.26","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.26","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"9b8d2562900a0bc8f4c1d60e3ff66209946234ce","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.26.tgz","fileCount":5662,"integrity":"sha512-1fiB1xVUnomsicF8vjJKbVPZpBx52sezMmJ23jEMbU94H5HUgawlJQjbLhG9OYUVQgHiQLs4u09i357JU1EpAw==","signatures":[{"sig":"MEYCIQDqChkwK7/7oFJ/MIr/bWGdVg//XeA9sqnrNdByNe44tQIhANzWnL8Ob+7aOXa561V1k98HA/Yc+ejDnBBkhrTvO1zT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98495296},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.9","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"b13cd1b96297936bd298d9af5b09cc264bd26647","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.9","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7-alpha.2","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.14.1","@modelcontextprotocol/sdk":"^1.26.0","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.34.0","oxlint":"^1.49.0","tsdown":"^0.20.3","vitest":"^4.0.18","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.0.18","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.26_1774156033507_0.07917125453578766","host":"s3://npm-registry-packages-npm-production"}},"2026.3.27":{"name":"winclaw","version":"2026.3.27","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.27","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"d4e1131c0a8f8bda4b7eaa01b317dd0c34784078","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.27.tgz","fileCount":5663,"integrity":"sha512-xAdhtEpgoIkr9rL2spO9QDWWaUaXVDICNNGch/HgAdcvZohEJJNSgBVYoc3RX/mPciEMZvqoUeEFgIdLHFwr9A==","signatures":[{"sig":"MEUCIQDV0O4AcsOY1lydyIeLecf6vfJKCsyz2mVXYaoHxsfN5wIgJ0cNgBGjHjUlsB9SHaU6gqnj2gB3vSpwvM+aYTVSGnI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98537776},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.3.27.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.3.27.tgz","_integrity":"sha512-xAdhtEpgoIkr9rL2spO9QDWWaUaXVDICNNGch/HgAdcvZohEJJNSgBVYoc3RX/mPciEMZvqoUeEFgIdLHFwr9A==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.27_1774169883791_0.44679514282374777","host":"s3://npm-registry-packages-npm-production"}},"2026.3.28":{"name":"winclaw","version":"2026.3.28","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.28","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"2a40ee13cb3c5b020a0a7b13ddc0621511d96004","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.28.tgz","fileCount":5663,"integrity":"sha512-xbHVr1UIEnLOJePYIwjNoZ2oLLOb/14JS/umvzeFR+kSmzpkUp3hzlfzo1tYePM7iki4Ij6sL3z72l9bVb1Axw==","signatures":[{"sig":"MEUCIQCEeL3VeFDM6oIW6y7AfYZzyMizNik0QKS5MgGBxECVxwIgTV6Cg8gWgDpGGQ4IMpbA0114glVS2NoXRGCTbikCP7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98534158},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.3.28.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.3.28.tgz","_integrity":"sha512-xbHVr1UIEnLOJePYIwjNoZ2oLLOb/14JS/umvzeFR+kSmzpkUp3hzlfzo1tYePM7iki4Ij6sL3z72l9bVb1Axw==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.28_1774177048764_0.8473583468833596","host":"s3://npm-registry-packages-npm-production"}},"2026.3.29":{"name":"winclaw","version":"2026.3.29","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.29","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"280c893e649103a272ae1d9b7400f3ab2f584ae7","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.29.tgz","fileCount":5738,"integrity":"sha512-dJmdeq1sk4IoAWrdNfb3qF4Olk5kMQQFI2FNxb+SvMw9M4AM/6HDT4xt0jlGLr3ZiZc+VodkXuQuOfrHXEOyPg==","signatures":[{"sig":"MEQCIC3Oh7OGFb4NcgLrM+d4r4ub/gj4TDKFeXPrSWsu7Lo/AiAVjag6EUdsVmaKn14ByB5Ae4Bb744jwHlgR/4H6B5cQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104560530},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.3.29.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.3.29.tgz","_integrity":"sha512-dJmdeq1sk4IoAWrdNfb3qF4Olk5kMQQFI2FNxb+SvMw9M4AM/6HDT4xt0jlGLr3ZiZc+VodkXuQuOfrHXEOyPg==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.29_1774234385130_0.5315852601416755","host":"s3://npm-registry-packages-npm-production"}},"2026.3.30":{"name":"winclaw","version":"2026.3.30","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.30","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"d16dba0497e97ecb57540c8516e22f8650b84d38","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.30.tgz","fileCount":5663,"integrity":"sha512-1r6uDPFueADr9HMAAtisVzD7gQTKvUgq/57Pu+JuMRv0LNx+joBNNGQk6hjb8vzzw+gPV9BUyPZGB3slDUKKww==","signatures":[{"sig":"MEUCIQDQ2LChlMb8DsT5PWq0aeUf/lhzOodJrnx5kqSgNe0T0gIgNnwztwJ/khOWXvOGfG92ScXfroQZGvduVdMWW2TZMFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98543563},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.3.30.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.3.30.tgz","_integrity":"sha512-1r6uDPFueADr9HMAAtisVzD7gQTKvUgq/57Pu+JuMRv0LNx+joBNNGQk6hjb8vzzw+gPV9BUyPZGB3slDUKKww==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.30_1774263132494_0.07657636062413054","host":"s3://npm-registry-packages-npm-production"}},"2026.3.31":{"name":"winclaw","version":"2026.3.31","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.31","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"302eb18c711bae5524f8a7c5982c3075fdc51b1a","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.31.tgz","fileCount":5738,"integrity":"sha512-nX/MzRR1318eQ2klFHy0cVthg7eoPKmvLeGCEQ+dW4O4+O9gfVeEoPSmXbNrbIn4KZCHujShg6qgkLEKk/cGtw==","signatures":[{"sig":"MEUCICyTBMy+/AUp8Bs2XSRJnkQ3oEQZn1hJkDPHEfT8WSAEAiEA4XeLmmfIA+TuIhRozhPSWMMVojvaE/7cUNn0kr3j5rs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104580541},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.11","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"abcdfbe9f6f3a1f71a9ea523f0c4a0dad07608fe","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.31_1774352116350_0.8142375851202834","host":"s3://npm-registry-packages-npm-production"}},"2026.3.32":{"name":"winclaw","version":"2026.3.32","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.3.32","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"2dc3321c505502a99f2f125bbf24aea009227091","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.3.32.tgz","fileCount":5663,"integrity":"sha512-TG5EHEe65oXq6S1BCvk+lU09oIGBuQ/I7wJbYRIKy6nN6/fFN7JEJ03uNTk9bTIm4Kqm/tsbvM3tMncMfEb2dg==","signatures":[{"sig":"MEUCIGSl5ZBdrY/y7LM4+S4WBFCwzOMPtAbhKr5aFXfTOJ8PAiEA5NAgut3vx2PYMn1Fal75E3thYpKmQfogXJRrJ6GmbrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98562655},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.11","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"abcdfbe9f6f3a1f71a9ea523f0c4a0dad07608fe","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.3.32_1774362895330_0.9536273541864113","host":"s3://npm-registry-packages-npm-production"}},"2026.4.1":{"name":"winclaw","version":"2026.4.1","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.1","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"7ee7de557cdc1473766ebd94a33ec96f3267b27c","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.1.tgz","fileCount":5738,"integrity":"sha512-Oq/56i5LNqH7CCWiCG8qh0XzTUaYA2WAH5f0copk5unWwXurYQsNQZmpcRUhO+JcJrCfnYGLp5wCrghE1gsidA==","signatures":[{"sig":"MEQCIHHfaoadWnmTrL9ibxEyiDS/zmNWxjwDMveJkpmJnaJwAiBAKj2zZLJ3sSpO8IWtO99oE6P6HDlt0T6FPIMUqilVqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104590890},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.11","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"abcdfbe9f6f3a1f71a9ea523f0c4a0dad07608fe","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.1_1774365330473_0.3854982768708026","host":"s3://npm-registry-packages-npm-production"}},"2026.4.2":{"name":"winclaw","version":"2026.4.2","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.2","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"2ed227a21497483751707987803556c6cb270eb5","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.2.tgz","fileCount":5663,"integrity":"sha512-iaMZDIbujr5bHRd1cjzsAleMbWhquBKUCwOyfTAl/G0dHv+ISVgFwfDfrLd9kSPV16b08rjaPZAhCvAmZazchQ==","signatures":[{"sig":"MEUCIBu46VLIAahqa3TQZxBUGeBBisVnxf3KcQZHAol5PRdfAiEA7i3oNNwl1NmP7xmjib2j+OTChNcVpnf/boU/76vFcG4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98560155},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.11","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"abcdfbe9f6f3a1f71a9ea523f0c4a0dad07608fe","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.2_1774403131871_0.3738264611046713","host":"s3://npm-registry-packages-npm-production"}},"2026.4.3":{"name":"winclaw","version":"2026.4.3","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.3","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"77151d3a21b86ab5f34951d22b747402538ac63c","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.3.tgz","fileCount":5663,"integrity":"sha512-fAFaOHTdSqFZbtN+3QImY+6x4J/9UVnOy3d3dYlz3dEOFkk8OJLSDsNe9IrQ5O66pyosAksL5lgmyJ5orK25fg==","signatures":[{"sig":"MEQCIDX0nXl8Hf/RMijZhLjQjelN/tVOp2mnvAN5SMPOOIYeAiBEZjwMQXHQHfFeUNK/ZuFCeSuI4mOWwaxoEngcL0ZY8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98580650},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.4.3.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.4.3.tgz","_integrity":"sha512-fAFaOHTdSqFZbtN+3QImY+6x4J/9UVnOy3d3dYlz3dEOFkk8OJLSDsNe9IrQ5O66pyosAksL5lgmyJ5orK25fg==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.3_1774408967340_0.693173171868207","host":"s3://npm-registry-packages-npm-production"}},"2026.4.4":{"name":"winclaw","version":"2026.4.4","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.4","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"34b4357ff4a8a67ac115db7e142876b48a630bfd","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.4.tgz","fileCount":5663,"integrity":"sha512-KWQ4i+bKzfTZbgdHG59CiiU1sXu0ZJrirDCvkQQqQt8LRjNI2q8MZ7CnyZawpdfIGQMM0kkydMMC6JppxlU8cA==","signatures":[{"sig":"MEQCIF3HB+v4c7w15rm0X2ZYcvVDr3o3xMb32mHxbEd4sZWvAiAtSa7df/XlfOm3BwlOYAamUaHxj2ZlpzO22VponWdIMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98580285},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.4.4.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.4.4.tgz","_integrity":"sha512-KWQ4i+bKzfTZbgdHG59CiiU1sXu0ZJrirDCvkQQqQt8LRjNI2q8MZ7CnyZawpdfIGQMM0kkydMMC6JppxlU8cA==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.4_1774413291505_0.7688889658454394","host":"s3://npm-registry-packages-npm-production"}},"2026.4.5":{"name":"winclaw","version":"2026.4.5","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.5","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"94766266912de0a97e2a7b4dc6904943241962e8","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.5.tgz","fileCount":5663,"integrity":"sha512-Q3sTMDlH4rzUO9o/EWI2PI418YT0pPZYyQ+xQrHsF38E4z9fi0bop4+WnmNXTkAoht0LyDFnnNVm6AEjD8p0kg==","signatures":[{"sig":"MEQCIHKOkwMwtZfpuVkTL+fVrrPpSSXrUkfvwWEDvnzVCuEmAiAPg4Ug3CARWrA1RICqLXzxVsEuXRuxWB1F77zsLsGOOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98589011},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.4.5.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.4.5.tgz","_integrity":"sha512-Q3sTMDlH4rzUO9o/EWI2PI418YT0pPZYyQ+xQrHsF38E4z9fi0bop4+WnmNXTkAoht0LyDFnnNVm6AEjD8p0kg==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.5_1774495148165_0.1310210131009908","host":"s3://npm-registry-packages-npm-production"}},"2026.4.6":{"name":"winclaw","version":"2026.4.6","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.6","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"18c59d3098297d9c7eaa8ba95b02dd73a684dec6","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.6.tgz","fileCount":5663,"integrity":"sha512-mvYxk5n9Ur9y1pDiF5s5YRtqNAqTYMVJOVXzfAhHvtl1xD+1Z4lYNw26Ce/KT4oK6yqy4HlcWvB68c3KxJ9BHQ==","signatures":[{"sig":"MEQCICz4EkHrVa5WO9Ax6p3Gn8OUWBWiGKENGrX6rz48WhlNAiBVpSqwz0UKOtlFGtC/8AdeL5WfhBHTV/RsztPXNw46Vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98588911},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.4.6.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.4.6.tgz","_integrity":"sha512-mvYxk5n9Ur9y1pDiF5s5YRtqNAqTYMVJOVXzfAhHvtl1xD+1Z4lYNw26Ce/KT4oK6yqy4HlcWvB68c3KxJ9BHQ==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.6_1774496911050_0.4911916542068533","host":"s3://npm-registry-packages-npm-production"}},"2026.4.7":{"name":"winclaw","version":"2026.4.7","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.7","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"7138275a293d341ad1f99694d5c9da9638f969a2","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.7.tgz","fileCount":5663,"integrity":"sha512-SlORUQEAheeHYvfDGeC+jCCiV851zKOy62F1bl3aPECeAQODaYZyNxcewJ8qNZm5qPmnuNI3oBA6PfW+nsH2wQ==","signatures":[{"sig":"MEQCIENuyBPtrf1RuFyoMi80xIvuHb0SHrPjZp///wWMkyPmAiB01V0zet4fbrY/3ZUdNEojzUlkwz9PxpdC/7Ck5oQBCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98588678},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.4.7.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.4.7.tgz","_integrity":"sha512-SlORUQEAheeHYvfDGeC+jCCiV851zKOy62F1bl3aPECeAQODaYZyNxcewJ8qNZm5qPmnuNI3oBA6PfW+nsH2wQ==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.7_1774533931280_0.7624492879015705","host":"s3://npm-registry-packages-npm-production"}},"2026.4.8":{"name":"winclaw","version":"2026.4.8","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.8","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"6c2a31928201c22098290d732ca389ba9aa1a629","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.8.tgz","fileCount":5663,"integrity":"sha512-9h0qYBHAc073fBEQexVSEkPi5rOGPbS2Dr83Ht84ziCAqtqKdk5yZX+dee+YJIEuU9CiJXqvQgWCYED/JPX66w==","signatures":[{"sig":"MEYCIQCtTOAN7O7WrSedRGI0b09fsU73DRh2rXYp8LBQYHlMIgIhALUz6+9wBLVQco39McFSynH6zpNENPDwtTkh9biD84Zc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98588674},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.4.8.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.4.8.tgz","_integrity":"sha512-9h0qYBHAc073fBEQexVSEkPi5rOGPbS2Dr83Ht84ziCAqtqKdk5yZX+dee+YJIEuU9CiJXqvQgWCYED/JPX66w==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.8_1774535862150_0.37204935864128075","host":"s3://npm-registry-packages-npm-production"}},"2026.4.9":{"name":"winclaw","version":"2026.4.9","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.9","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"69e8dfb9bd39a4468160f47dc8e65ba152323e91","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.9.tgz","fileCount":5663,"integrity":"sha512-gxt7/sG6dBKG9iUUsDnlaF3jsbkYkb6UdqOPLgHS8MxpA7f11rS0lUllgxnx4Q6tKYZ2R3c3t3IGaXHe0j5i0w==","signatures":[{"sig":"MEUCIQDhex3oMYRHP26cpd9kg50gZjqE5v1m+w2UUBs42y5azgIgURjCd6PPauyxfmcNMmbZanxrxkJzMvCFIMAa84Uc8/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98588665},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.4.9.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.4.9.tgz","_integrity":"sha512-gxt7/sG6dBKG9iUUsDnlaF3jsbkYkb6UdqOPLgHS8MxpA7f11rS0lUllgxnx4Q6tKYZ2R3c3t3IGaXHe0j5i0w==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.9_1774536952426_0.44983812821978497","host":"s3://npm-registry-packages-npm-production"}},"2026.4.10":{"name":"winclaw","version":"2026.4.10","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.10","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"89484a2b0d73ccbf2c3a3c8531ea7adcca2adeca","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.10.tgz","fileCount":5663,"integrity":"sha512-SedL9N47dsAMCSTyV4J1DCWPncuxnkVcS5ZZ+8+9Fl6gxXdy+O+qREDrPb11jN6sj1+4ySSShtcxqCol5dMVvA==","signatures":[{"sig":"MEUCIQCc08Ab/WHiT++MPm6KKu6ew1nW5PHgjUnKgRy0VoRuLwIgf7D/2US5eQgjsPmOVGiFrGOwkqzj08ThulB3qT8yvjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98592297},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.4.10.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.4.10.tgz","_integrity":"sha512-SedL9N47dsAMCSTyV4J1DCWPncuxnkVcS5ZZ+8+9Fl6gxXdy+O+qREDrPb11jN6sj1+4ySSShtcxqCol5dMVvA==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.10_1774537292509_0.4211495621558896","host":"s3://npm-registry-packages-npm-production"}},"2026.4.11":{"name":"winclaw","version":"2026.4.11","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.11","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"8f8bc260b2cbabc000c75a7804745d3ebf0eb9bb","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.11.tgz","fileCount":5663,"integrity":"sha512-ODX6/fpk3hoHswDSa18ohHo14iIOGp8t3r8QvsYeuYOqFzYNpwPka7b/tsEny3SqE3YfE6wGBacbeEowIpHF6w==","signatures":[{"sig":"MEQCIBC4WylDetNkI2mHYFGR5VWLBYZykMikynfJan8rmsTYAiAVuuUYfKPYMDbXAhuKM0KsYfLApLXtOOAtA9bL2Z3G3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98592161},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.4.11.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.4.11.tgz","_integrity":"sha512-ODX6/fpk3hoHswDSa18ohHo14iIOGp8t3r8QvsYeuYOqFzYNpwPka7b/tsEny3SqE3YfE6wGBacbeEowIpHF6w==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.11_1774538161580_0.11062386510432076","host":"s3://npm-registry-packages-npm-production"}},"2026.4.12":{"name":"winclaw","version":"2026.4.12","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.12","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"180596df7bb59a629f11c723c77a7fe63215dff4","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.12.tgz","fileCount":5663,"integrity":"sha512-Pe6I0O55zuNuSuEHGsRcQuFYdNmNFt6jF+Fuzk8qQ+SFV8aV6CGBT20H2tLk5QS40ncdaxav5vtwXlvpKNwwaA==","signatures":[{"sig":"MEUCIDNnqHGyWld2yicA8x1Th2WVk4GH/gf4OFJ2cE90fpjtAiEAv5XxQzadjwsupKUKXDy95miN7hAdtE94lqQOB7FiKjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98589468},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.11","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"268cf72e65e24eea44d61df30b2dca051c0de745","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.12_1774662844473_0.6895017173689382","host":"s3://npm-registry-packages-npm-production"}},"2026.4.13":{"name":"winclaw","version":"2026.4.13","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.13","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"6e856c7171920819ae6c17ec641f6bc7f61cfa02","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.13.tgz","fileCount":5663,"integrity":"sha512-LrWqAWF/Kh5x/06Yk+Opaqi+L9cxmEXhZUXRXmDur+bb2UC0jxWPJhM7FxdasNCUJHYXUvbGDrvYemNgFyuKog==","signatures":[{"sig":"MEYCIQDs1g4tCTAjXQjaxQ4pnqB+X4W0B5Klx+w0g8yozmnbcQIhAIV4HP1hdkXyammT19cS37T03hRor7rwVq2bG7/oMhk7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98597537},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.11","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"268cf72e65e24eea44d61df30b2dca051c0de745","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.13_1774670417100_0.3800294262528614","host":"s3://npm-registry-packages-npm-production"}},"2026.4.15":{"name":"winclaw","version":"2026.4.15","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.15","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"219491d68f7f8051941e96dd47623ddd3a4bcee4","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.15.tgz","fileCount":5738,"integrity":"sha512-jYAodBVlxkb9NLGwiKd0n3d6GpXK8EN1pWWhmZ5/nHp3zQZLl/Gme1BDNjHKkGnb1nqf4Oe8s+WiYevgOnCxsw==","signatures":[{"sig":"MEUCIADzklPbLOj7RCa+LgsLrKb31xAl6nqd0iSbENhikWd3AiEAssz9iytrDHdlYDmuYEgHxiwllOEmtjs59fZ6eauT7lk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104626747},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.11","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"268cf72e65e24eea44d61df30b2dca051c0de745","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.15_1774697329383_0.11925336361247107","host":"s3://npm-registry-packages-npm-production"}},"2026.4.16":{"name":"winclaw","version":"2026.4.16","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.16","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"080ba028a28d8a99054dffdc1e87c6352cd97fc7","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.16.tgz","fileCount":5668,"integrity":"sha512-UT1SDDBJ7flgbaaqQ1bowpwzkCJAT1h6wdkgA/EdSb55O4PvDFehayTHDKQPms+0pub0JnbzL47YzFIkaRU5Eg==","signatures":[{"sig":"MEYCIQDM149u4jWP1JuDUdcU2EZtLxWMjzLjLlitjt+S1X0IywIhAJsVXmWgbIIGIjF/2fnyJUKvkgsVG7vxkJsgkoYHDiD7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98665878},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.4.16.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.4.16.tgz","_integrity":"sha512-UT1SDDBJ7flgbaaqQ1bowpwzkCJAT1h6wdkgA/EdSb55O4PvDFehayTHDKQPms+0pub0JnbzL47YzFIkaRU5Eg==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.16_1775030566249_0.5395719094473028","host":"s3://npm-registry-packages-npm-production"}},"2026.4.17":{"name":"winclaw","version":"2026.4.17","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.17","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"e1aa055506288c9b58aba2963dd5c89b84a179b6","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.17.tgz","fileCount":5669,"integrity":"sha512-LgeGT3oabg8GRTDr6ljaJWzeRGKGXBtj82bvzOCm3X46A7uZR8wfrsyCtWnog/3cqqWpb0f1bbWEYZQ5dtAjVA==","signatures":[{"sig":"MEYCIQDq/8Qyhf2uJMPkkpnT+xL3Y6zkp+67VR1/f3OvynrnCQIhALQln8i8SSdqAGYDFu+p1BXJABbrIOcWDzmOYSIIvOxe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98678784},"main":"dist/index.js","pnpm":{"overrides":{"qs":"6.14.2","tar":"7.5.11","hono":"4.11.10","request":"npm:@cypress/request@3.0.10","form-data":"2.5.4","minimatch":"10.2.1","tough-cookie":"4.1.3","fast-xml-parser":"5.3.6","request-promise":"npm:@cypress/request-promise@5.0.0","@sinclair/typebox":"0.34.48"},"minimumReleaseAge":2880,"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"gitHead":"490b333582f7b76be950f4203fd8cd1b2c23551a","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.17_1775317649386_0.6634887722824814","host":"s3://npm-registry-packages-npm-production"}},"2026.4.18":{"name":"winclaw","version":"2026.4.18","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.4.18","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"c266ac5aa9652b1122a1398b3c41601e1ce1fa04","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.4.18.tgz","fileCount":5725,"integrity":"sha512-MCOIe4uBZZdU9D24iFVq65OgRHbeiSXr1qB+D5QV6jw6bdhMgbEjGJELzOs8ET6QtycGvpbv3BIOIm+1tJOU9A==","signatures":[{"sig":"MEUCIQDc+ItHCdXmDG9mh/uPgKEQWLvQZ7ORpsE1C91zGDL5+AIgA4nc1paCTCQVHI9r8WzJ4nLjPDtnYWUDODIxxdCj7Jk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98962884},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.4.18.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.4.18.tgz","_integrity":"sha512-MCOIe4uBZZdU9D24iFVq65OgRHbeiSXr1qB+D5QV6jw6bdhMgbEjGJELzOs8ET6QtycGvpbv3BIOIm+1tJOU9A==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.4.18_1776734865752_0.6496786854979109","host":"s3://npm-registry-packages-npm-production"}},"2026.5.5":{"name":"winclaw","version":"2026.5.5","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.5.5","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"ea3ba37004c1be8b4cd5167db5327cac50e4af79","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.5.5.tgz","fileCount":5729,"integrity":"sha512-3g0pF0s5PUIU1CSingoJZv1gh4WGi8DQO/R1DolILYDtvtKnvs2FeBJeT2rY3mmVqf/M9gjO+0sRZAmUI1IToQ==","signatures":[{"sig":"MEQCIC/vEmEYKji5NBDxqkuSXH4WTW+oT4g4lG2UeO5Fj/wIAiBJ51tTuI6kWvhrwZR2i7YZApra2StBSPdw1fXAgJgC4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99027438},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.5.5.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.5.5.tgz","_integrity":"sha512-3g0pF0s5PUIU1CSingoJZv1gh4WGi8DQO/R1DolILYDtvtKnvs2FeBJeT2rY3mmVqf/M9gjO+0sRZAmUI1IToQ==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.5.5_1777953920970_0.15932740916385502","host":"s3://npm-registry-packages-npm-production"}},"2026.5.7":{"name":"winclaw","version":"2026.5.7","keywords":[],"author":"","license":"MIT","_id":"winclaw@2026.5.7","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"bin":{"winclaw":"winclaw.mjs"},"dist":{"shasum":"2b21c4f3c840654c243401f7c7eb5f1a3af59680","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.5.7.tgz","fileCount":5729,"integrity":"sha512-DYFruQQrbjepj7CvCeA6nrJqeE9/tGE0SWlcsEppWgQmaGQp5xjig6eG+DQMJg29yPpzS7powDLn6G6rxNshGA==","signatures":[{"sig":"MEYCIQDZPXR+6h/uf0PRuqEYcKn3iDVk3gzbiI4izXD6GDkxIwIhAPInvOB9XoQ61fxEh/6fZJ/Tn6bsP5Jrkq6zQgWzGQRP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99037633},"main":"dist/index.js","type":"module","_from":"file:winclaw-2026.5.7.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./winclaw.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"}},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","check":"pnpm format:check && pnpm tsgo && pnpm lint","start":"node scripts/run-node.mjs","format":"oxfmt --write","ui:dev":"node scripts/ui.js dev","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","test:ui":"pnpm --dir ui test","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","winclaw":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"oxlint --type-aware --fix && pnpm format","mac:open":"open dist/WinClaw.app","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:e2e":"vitest run --config vitest.e2e.config.ts","ui:build":"node scripts/ui.js build","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","docs:list":"node scripts/docs-list.js","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","lint:docs":"pnpm dlx markdownlint-cli2","test:fast":"vitest run --config vitest.unit.config.ts","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","test:force":"node --import tsx scripts/test-force.ts","test:watch":"vitest","ui:install":"node scripts/ui.js install","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:check":"oxfmt --check","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","protocol:gen":"node --import tsx scripts/protocol-gen.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","deadcode:knip":"pnpm dlx knip --no-progress","gateway:watch":"node scripts/watch-node.mjs gateway --force","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","release:check":"node --import tsx scripts/release-check.ts","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","android:install":"cd apps/android && ./gradlew :app:installDebug","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","docs:spellcheck":"bash scripts/docs-spellcheck.sh","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","docs:check-links":"node scripts/docs-link-audit.mjs","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","test:install:smoke":"bash scripts/test-install-sh-docker.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true"},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"_resolved":"C:\\work\\winclaw\\winclaw-2026.5.7.tgz","_integrity":"sha512-DYFruQQrbjepj7CvCeA6nrJqeE9/tGE0SWlcsEppWgQmaGQp5xjig6eG+DQMJg29yPpzS7powDLn6G6rxNshGA==","repository":{"url":"git+https://github.com/winclaw/winclaw.git","type":"git"},"_npmVersion":"10.9.2","description":"Multi-channel AI gateway with extensible messaging integrations","directories":{"doc":"docs","test":"test"},"_nodeVersion":"22.17.1","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.11","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.40.0","undici":"^7.24.4","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","opusscript":"^0.0.8","pdfjs-dist":"^5.4.624","sqlite-vec":"0.1.7","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.0.1","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.40","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.995.0","@larksuiteoapi/node-sdk":"^1.59.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.16.1","@modelcontextprotocol/sdk":"1.27.1","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.41.0","oxlint":"^1.56.0","tsdown":"^0.20.3","vitest":"^4.1.0","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.3.0","@lit/context":"^1.1.6","signal-utils":"0.21.1","@types/express":"^5.0.6","@grammyjs/types":"^3.24.0","oxlint-tsgolint":"^0.14.2","@lit-labs/signals":"^0.2.0","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.0","@types/qrcode-terminal":"^0.12.2","@typescript/native-preview":"7.0.0-dev.20260222.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/winclaw_2026.5.7_1778169581334_0.17887039967592622","host":"s3://npm-registry-packages-npm-production"}},"2026.5.8":{"name":"winclaw","version":"2026.5.8","description":"Multi-channel AI gateway with extensible messaging integrations","keywords":[],"homepage":"https://github.com/winclaw/winclaw#readme","bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"license":"MIT","author":"","repository":{"type":"git","url":"git+https://github.com/winclaw/winclaw.git"},"bin":{"winclaw":"winclaw.mjs"},"directories":{"doc":"docs","test":"test"},"type":"module","main":"dist/index.js","exports":{".":"./dist/index.js","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./cli-entry":"./winclaw.mjs"},"scripts":{"android:assemble":"cd apps/android && ./gradlew :app:assembleDebug","android:install":"cd apps/android && ./gradlew :app:installDebug","android:run":"cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.winclaw.android/.MainActivity","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","build":"pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts","build:plugin-sdk:dts":"tsc -p tsconfig.plugin-sdk.dts.json","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","check":"pnpm format:check && pnpm tsgo && pnpm lint","check:docs":"pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500","deadcode:ci":"pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused","deadcode:knip":"pnpm dlx knip --no-progress","deadcode:report":"pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused","deadcode:report:ci:knip":"mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true","deadcode:report:ci:ts-prune":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true","deadcode:report:ci:ts-unused":"mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true","deadcode:ts-prune":"pnpm dlx ts-prune src extensions scripts","deadcode:ts-unused":"pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount","dev":"node scripts/run-node.mjs","docs:bin":"node scripts/build-docs-list.mjs","docs:check-links":"node scripts/docs-link-audit.mjs","docs:dev":"cd docs && mint dev","docs:list":"node scripts/docs-list.js","docs:spellcheck":"bash scripts/docs-spellcheck.sh","docs:spellcheck:fix":"bash scripts/docs-spellcheck.sh --write","format":"oxfmt --write","format:all":"pnpm format && pnpm format:swift","format:check":"oxfmt --check","format:diff":"oxfmt --write && git --no-pager diff","format:docs":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write","format:docs:check":"git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check","format:fix":"oxfmt --write","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/WinClawKit/Sources","gateway:dev":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","gateway:dev:reset":"WINCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","gateway:watch":"node scripts/watch-node.mjs gateway --force","ios:build":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'","ios:gen":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'","ios:open":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open WinClaw.xcodeproj'","ios:run":"bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project WinClaw.xcodeproj -scheme WinClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.winclaw.ios'","lint":"oxlint --type-aware","lint:all":"pnpm lint && pnpm lint:swift","lint:docs":"pnpm dlx markdownlint-cli2","lint:docs:fix":"pnpm dlx markdownlint-cli2 --fix","lint:fix":"oxlint --type-aware --fix && pnpm format","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","mac:open":"open dist/WinClaw.app","mac:package":"bash scripts/package-mac-app.sh","mac:restart":"bash scripts/restart-mac.sh","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","prepack":"pnpm build && pnpm ui:build","prepare":"command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/WinClawProtocol/GatewayModels.swift","protocol:gen":"node --import tsx scripts/protocol-gen.ts","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","release:check":"node --import tsx scripts/release-check.ts","start":"node scripts/run-node.mjs","test":"node scripts/test-parallel.mjs","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:coverage":"vitest run --config vitest.unit.config.ts --coverage","test:docker:all":"pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup","test:docker:cleanup":"bash scripts/test-cleanup-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","test:e2e":"vitest run --config vitest.e2e.config.ts","test:fast":"vitest run --config vitest.unit.config.ts","test:force":"node --import tsx scripts/test-force.ts","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","test:install:e2e:anthropic":"WINCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","test:install:e2e:openai":"WINCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:live":"WINCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","test:macmini":"WINCLAW_TEST_VM_FORKS=0 WINCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs","test:ui":"pnpm --dir ui test","test:voicecall:closedloop":"vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1","test:watch":"vitest","tui":"node scripts/run-node.mjs tui","tui:dev":"WINCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","ui:build":"node scripts/ui.js build","ui:dev":"node scripts/ui.js dev","ui:install":"node scripts/ui.js install","winclaw":"node scripts/run-node.mjs","winclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json"},"dependencies":{"@agentclientprotocol/sdk":"0.16.1","@aws-sdk/client-bedrock":"^3.995.0","@buape/carbon":"0.0.0-beta-20260216184201","@clack/prompts":"^1.0.1","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@grammyjs/transformer-throttler":"^1.2.1","@homebridge/ciao":"^1.3.5","@larksuiteoapi/node-sdk":"^1.59.0","@line/bot-sdk":"^10.6.0","@modelcontextprotocol/sdk":"1.27.1","@lydell/node-pty":"1.2.0-beta.3","@mariozechner/pi-agent-core":"0.54.1","@mariozechner/pi-ai":"0.54.1","@mariozechner/pi-coding-agent":"0.54.1","@mariozechner/pi-tui":"0.54.1","@mozilla/readability":"^0.6.0","@sinclair/typebox":"0.34.48","@slack/bolt":"^4.6.0","@slack/web-api":"^7.14.1","@whiskeysockets/baileys":"7.0.0-rc.9","ajv":"^8.18.0","chalk":"^5.6.2","chokidar":"^5.0.0","cli-highlight":"^2.1.11","commander":"^14.0.3","croner":"^10.0.1","discord-api-types":"^0.38.40","dotenv":"^17.3.1","express":"^5.2.1","file-type":"^21.3.0","grammy":"^1.40.0","https-proxy-agent":"^7.0.6","ipaddr.js":"^2.3.0","jiti":"^2.6.1","json5":"^2.2.3","jszip":"^3.10.1","linkedom":"^0.18.12","long":"^5.3.2","markdown-it":"^14.1.1","node-edge-tts":"^1.2.10","opusscript":"^0.0.8","osc-progress":"^0.3.0","pdfjs-dist":"^5.4.624","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","sharp":"^0.34.5","sqlite-vec":"0.1.7","tar":"7.5.11","tslog":"^4.10.2","undici":"^7.24.4","ws":"^8.19.0","yaml":"^2.8.2","zod":"^4.3.6"},"devDependencies":{"@grammyjs/types":"^3.24.0","@lit-labs/signals":"^0.2.0","@lit/context":"^1.1.6","@types/express":"^5.0.6","@types/markdown-it":"^14.1.2","@types/node":"^25.3.0","@types/qrcode-terminal":"^0.12.2","@types/ws":"^8.18.1","@typescript/native-preview":"7.0.0-dev.20260222.1","@vitest/coverage-v8":"^4.1.0","lit":"^3.3.2","oxfmt":"0.41.0","oxlint":"^1.56.0","oxlint-tsgolint":"^0.14.2","signal-utils":"0.21.1","tsdown":"^0.20.3","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^4.1.0"},"peerDependencies":{"@napi-rs/canvas":"^0.1.89","node-llama-cpp":"3.15.1"},"optionalDependencies":{"@discordjs/opus":"^0.10.0"},"engines":{"node":">=22.12.0"},"packageManager":"pnpm@10.23.0","pnpm":{"minimumReleaseAge":2880,"overrides":{"hono":"4.11.10","fast-xml-parser":"5.3.6","request":"npm:@cypress/request@3.0.10","request-promise":"npm:@cypress/request-promise@5.0.0","form-data":"2.5.4","minimatch":"10.2.1","qs":"6.14.2","@sinclair/typebox":"0.34.48","tar":"7.5.11","tough-cookie":"4.1.3"},"onlyBuiltDependencies":["@lydell/node-pty","@matrix-org/matrix-sdk-crypto-nodejs","@napi-rs/canvas","@whiskeysockets/baileys","authenticate-pam","esbuild","koffi","node-llama-cpp","protobufjs","sharp"]},"_id":"winclaw@2026.5.8","gitHead":"12d8899718a837adb4dd9743d789140d3956202e","_nodeVersion":"22.17.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-6+3iA5+SiXuPz/cwdis8HRAXtrCqsmeAdClZ9VYg6zviqjtfWe9LhkTbRazK0qY6zOudIPG2LASRr3hYsSh1/w==","shasum":"7f2eb065f306c3e5ba28a44cabe091c3abb189ac","tarball":"https://registry.npmjs.org/winclaw/-/winclaw-2026.5.8.tgz","fileCount":5805,"unpackedSize":105095385,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDN03aMqJKAsTad62e8ugZ8LS48P3QH5hFJj1MygmBF4AiAMBB4rDE0U4QQBFrsBO3Rx6QgoyebjqeXOycSnySjztA=="}]},"_npmUser":{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"},"maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/winclaw_2026.5.8_1778298541377_0.09801316224790435"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-11T16:29:38.201Z","modified":"2026-05-09T03:49:02.496Z","2026.2.11":"2026-02-11T16:29:39.033Z","2026.2.15":"2026-02-15T15:11:59.702Z","2026.2.16":"2026-02-16T13:50:48.629Z","2026.2.17":"2026-02-17T07:15:34.170Z","2026.2.18":"2026-02-17T15:49:08.593Z","2026.2.18-1":"2026-02-18T01:43:51.519Z","2026.2.18-2":"2026-02-18T05:57:56.726Z","2026.2.18-3":"2026-02-18T07:36:36.506Z","2026.2.18-4":"2026-02-18T14:08:49.989Z","2026.2.19":"2026-02-19T14:31:30.380Z","2026.2.20":"2026-02-20T15:43:19.792Z","2026.2.21":"2026-02-21T08:51:18.580Z","2026.2.24":"2026-02-24T15:00:59.082Z","2026.2.25":"2026-02-25T08:34:04.613Z","2026.2.26":"2026-02-26T05:34:09.699Z","2026.2.27":"2026-02-27T04:28:15.260Z","2026.2.28":"2026-02-27T05:17:22.114Z","2026.2.29":"2026-02-27T09:20:53.810Z","2026.2.30":"2026-02-28T05:08:17.389Z","2026.3.1":"2026-03-01T02:17:57.386Z","2026.3.2":"2026-03-02T06:29:52.791Z","2026.3.5":"2026-03-05T05:58:01.814Z","2026.3.6":"2026-03-05T10:54:30.615Z","2026.3.10":"2026-03-10T07:02:35.156Z","2026.3.11":"2026-03-10T15:34:40.863Z","2026.3.12":"2026-03-11T13:16:47.941Z","2026.3.13":"2026-03-11T16:08:06.717Z","2026.3.15":"2026-03-13T10:49:30.543Z","2026.3.16":"2026-03-18T13:53:26.324Z","2026.3.18":"2026-03-18T14:13:17.249Z","2026.3.19":"2026-03-19T11:25:38.772Z","2026.3.20":"2026-03-20T01:04:49.208Z","2026.3.21":"2026-03-21T02:09:28.962Z","2026.3.22":"2026-03-21T03:23:36.963Z","2026.3.23":"2026-03-21T04:25:49.021Z","2026.3.24":"2026-03-22T03:54:21.234Z","2026.3.25":"2026-03-22T04:20:42.400Z","2026.3.26":"2026-03-22T05:07:14.479Z","2026.3.27":"2026-03-22T08:58:04.860Z","2026.3.28":"2026-03-22T10:57:29.686Z","2026.3.29":"2026-03-23T02:53:06.215Z","2026.3.30":"2026-03-23T10:52:13.473Z","2026.3.31":"2026-03-24T11:35:17.304Z","2026.3.32":"2026-03-24T14:34:56.283Z","2026.4.1":"2026-03-24T15:15:31.452Z","2026.4.2":"2026-03-25T01:45:32.849Z","2026.4.3":"2026-03-25T03:22:48.326Z","2026.4.4":"2026-03-25T04:34:52.466Z","2026.4.5":"2026-03-26T03:19:09.126Z","2026.4.6":"2026-03-26T03:48:31.986Z","2026.4.7":"2026-03-26T14:05:32.267Z","2026.4.8":"2026-03-26T14:37:43.484Z","2026.4.9":"2026-03-26T14:55:53.304Z","2026.4.10":"2026-03-26T15:01:33.436Z","2026.4.11":"2026-03-26T15:16:02.505Z","2026.4.12":"2026-03-28T01:54:05.686Z","2026.4.13":"2026-03-28T04:00:18.042Z","2026.4.15":"2026-03-28T11:28:50.328Z","2026.4.16":"2026-04-01T08:02:47.267Z","2026.4.17":"2026-04-04T15:47:30.329Z","2026.4.18":"2026-04-21T01:27:46.687Z","2026.5.5":"2026-05-05T04:05:21.851Z","2026.5.7":"2026-05-07T15:59:42.325Z","2026.5.8":"2026-05-09T03:49:02.375Z"},"bugs":{"url":"https://github.com/winclaw/winclaw/issues"},"license":"MIT","homepage":"https://github.com/winclaw/winclaw#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/winclaw/winclaw.git"},"description":"Multi-channel AI gateway with extensible messaging integrations","maintainers":[{"name":"winclaw","email":"ou-shigou@itccloudsoft.com"}],"readme":"# WinClaw -- 个人AI助手\n\n[![CI](https://github.com/itc-ou-shigou/winclaw/actions/workflows/ci.yml/badge.svg)](https://github.com/itc-ou-shigou/winclaw/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/v/release/itc-ou-shigou/winclaw)](https://github.com/itc-ou-shigou/winclaw/releases/latest)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/itc-ou-shigou/winclaw/blob/main/LICENSE)\n[![npm](https://img.shields.io/npm/v/winclaw)](https://www.npmjs.com/package/winclaw)\n\n[English](./README.md) | **简体中文**\n\n---\n\n## 概述\n\nWinClaw 是一款开源的多渠道 AI 网关与个人助手。它将 Anthropic Claude、OpenAI GPT、Google Gemini 等大语言模型接入你日常使用的即时通讯工具，包括 WhatsApp、Telegram、Slack、Discord、Google Chat、Signal、iMessage、Microsoft Teams、Matrix、Zalo 以及内置 WebChat，让你通过熟悉的聊天界面与 AI 助手交互。\n\nWinClaw 采用 ESM-only 架构，基于 Node.js 22+、pnpm monorepo 和 tsdown 构建工具链。完全跨平台：macOS 通过 launchd 守护进程运行，Linux 通过 systemd 管理服务，Windows 通过 schtasks (任务计划程序) 实现自动启动。\n\nWinClaw 现已提供原生 Windows 支持，包含基于 Inno Setup 构建的 EXE 安装程序，内置 Node.js 22 运行时，无需任何额外依赖即可开箱使用。同时提供 Windows 专属技能：Office 文档操作、系统管理、文件资源管理器集成和 Outlook 邮件操控。\n\n---\n\n## Windows 安装\n\n### 方法一：EXE 安装程序（推荐）\n\n安装程序内置完整 Node.js 22 运行时，无需任何前置条件。\n\n1. 从 [SourceForge](https://sourceforge.net/projects/winclaw/files/latest/download) 或 [GitHub Releases](https://github.com/itc-ou-shigou/winclaw/releases/latest) 下载 `WinClawSetup-{version}.exe`（也可从本仓库 [`releases/`](releases/) 目录获取）\n2. 运行安装程序（默认使用用户权限，无需管理员）\n3. 在安装向导中按需选择选项：\n\n| 选项                  | 说明                                    | 默认 |\n| --------------------- | --------------------------------------- | ---- |\n| 创建桌面快捷方式      | 在桌面生成 WinClaw 图标                 | 否   |\n| 添加到 PATH           | 将 WinClaw 加入用户环境变量             | 是   |\n| 安装 Gateway 守护进程 | 注册 Windows 任务计划程序任务，开机自启 | 是   |\n\n安装程序会自动完成以下操作：\n\n- 释放 Node.js 22 运行时到 `node\\` 子目录\n- 安装应用到 `app\\` 子目录，设置 `WINCLAW_HOME` 环境变量\n- 若勾选守护进程，执行 `winclaw daemon install` 注册计划任务\n- 在安装完成页面提供 **交互式引导向导** 复选框（`winclaw onboard --flow quickstart`）\n\n默认安装路径：`%LOCALAPPDATA%\\Programs\\WinClaw`\n\n> **注意：** 如果之前安装的 WinClaw 的 Node.js 进程仍在运行，安装程序会提示关闭。\n> 选择「自动关闭应用程序」并点击「下一步」即可继续。\n\n### 安装后引导向导\n\n安装完成页面勾选「Run WinClaw Setup Wizard」并点击完成后，会弹出终端窗口运行交互式引导向导。向导会依次完成以下配置：\n\n1. **Gateway 模式** -- 设置 `gateway.mode` 为 `local`（单机推荐）\n2. **认证令牌** -- 自动生成 `gateway.auth.token`，用于 Gateway WebSocket 安全认证\n3. **AI 模型凭据** -- 配置 Anthropic (Claude)、OpenAI 等提供商的 API 密钥 / OAuth 令牌\n4. **消息渠道** -- 可选连接 WhatsApp、Telegram、Slack 等渠道\n5. **守护进程** -- 可选注册 Gateway 为 Windows 计划任务\n\n如果安装时跳过了向导，或需要重新运行：\n\n```powershell\nwinclaw onboard --flow quickstart\n```\n\n桌面快捷方式和开始菜单启动器（`winclaw-ui.cmd`）也会自动检测首次运行：如果 `gateway.mode` 未配置，会先启动引导向导。\n\n### 安装后：访问控制面板 (Dashboard)\n\n引导向导完成后，Gateway 监听 `http://127.0.0.1:18789/`。控制面板 (Dashboard) 需要使用 Gateway 令牌进行认证。\n\n**方式一：自动打开（推荐）**\n\n```powershell\nwinclaw dashboard\n```\n\n此命令会在浏览器中自动打开 Dashboard，URL 中已包含令牌（`http://127.0.0.1:18789/#token=<你的令牌>`）。\n\n**方式二：仅打印 URL**\n\n```powershell\nwinclaw dashboard --no-open\n```\n\n复制输出的 URL 粘贴到浏览器中打开。\n\n**方式三：手动访问**\n\n1. 在浏览器中打开 `http://127.0.0.1:18789/`\n2. 如果显示「disconnected (1008): unauthorized: gateway token mismatch」，说明需要提供 Gateway 令牌\n3. 获取令牌：\n   ```powershell\n   winclaw config get gateway.auth.token\n   ```\n4. 将令牌附加到 URL：`http://127.0.0.1:18789/#token=<你的令牌>`\n\n### 安装后：AI 模型认证令牌\n\nGateway 需要有效的 AI 提供商凭据。如果遇到 `HTTP 401 authentication_error: OAuth token has expired`，需要刷新或添加新令牌：\n\n```powershell\n# 交互式登录（打开浏览器进行 OAuth 流程）\nwinclaw models auth login --provider anthropic\n\n# 或手动粘贴令牌\nwinclaw models auth add\n```\n\n认证配置文件位于 `%USERPROFILE%\\.winclaw\\agents\\main\\agent\\auth-profiles.json`，也可直接编辑此文件。\n\n### 方法二：PowerShell 一键安装\n\n```powershell\nirm https://raw.githubusercontent.com/itc-ou-shigou/winclaw/main/install.ps1 | iex\n```\n\n自动检测环境、安装 Node.js、通过 npm 安装 WinClaw 并启动引导向导。\n\n### 方法三：npm 安装（已安装 Node.js 的情况）\n\n```bash\nnpm install -g winclaw@latest\nwinclaw onboard --install-daemon\n```\n\n### 方法四：winget\n\n```powershell\nwinget install WinClaw.WinClaw\nwinclaw onboard --install-daemon\n```\n\n---\n\n## macOS / Linux / Windows 跨平台安装 (npm)\n\nnpm 包支持 **Windows / macOS / Linux** 全平台，只需 Node.js 22+ 即可安装：\n\n```bash\n# 安装\nnpm install -g winclaw\n\n# 安装指定版本\nnpm install -g winclaw@2026.3.29\n\n# 启动 Gateway\nwinclaw gateway\n\n# 运行引导向导\nwinclaw onboard --install-daemon\n```\n\n- **macOS**：守护进程通过 launchd 注册为 `ai.winclaw.gateway`\n- **Linux**：守护进程通过 systemd 注册为 `winclaw-gateway.service`\n- **Windows**：守护进程通过 schtasks 注册为计划任务\n\n> 系统要求：Node.js 22+。建议使用 [nvm](https://github.com/nvm-sh/nvm) 或 [fnm](https://github.com/Schniz/fnm) 管理版本。\n\n**其他安装方式：**\n\n| 方式        | 命令 / 链接                                                      |\n| ----------- | ---------------------------------------------------------------- |\n| npm (全平台)| `npm install -g winclaw`                                         |\n| Docker      | `docker pull itccloudsoft/winclaw-node:latest`                   |\n| DockerHub   | [itccloudsoft/winclaw-node](https://hub.docker.com/r/itccloudsoft/winclaw-node) |\n| npmjs       | [winclaw](https://www.npmjs.com/package/winclaw)                 |\n| 源码构建    | 见下方 [开发](#从源码开发) 章节                                  |\n\n---\n\n## 快速开始\n\n### Windows（EXE 安装后）\n\n```powershell\n# 1. 如果安装时跳过了引导向导，现在运行\nwinclaw onboard --flow quickstart\n\n# 2. 安装并启动守护进程（如未运行）\nwinclaw daemon install\n\n# 3. 打开控制面板（自动在浏览器中打开并带令牌）\nwinclaw dashboard\n\n# 4. 启动终端交互界面\nwinclaw tui\n\n# 5. 发送测试消息\nwinclaw agent --message \"你好\" --thinking high\n\n# 6. 诊断检查\nwinclaw doctor\n```\n\n### macOS / Linux\n\n```bash\n# 1. 引导设置（选择模型、配置密钥、选择渠道）\nwinclaw onboard --install-daemon\n\n# 2. 启动网关\nwinclaw gateway --port 18789 --verbose\n\n# 3. 打开控制面板\nwinclaw dashboard\n\n# 4. 发送测试消息\nwinclaw agent --message \"你好\" --thinking high\n\n# 5. 启动终端交互界面\nwinclaw tui\n```\n\n### 主要 CLI 命令\n\n| 命令                                        | 说明                       |\n| ------------------------------------------- | -------------------------- |\n| `winclaw onboard`                           | 引导设置向导               |\n| `winclaw gateway`                           | 启动网关服务               |\n| `winclaw dashboard`                         | 打开控制面板（自动带令牌） |\n| `winclaw agent --message \"...\"`             | 发送单条消息               |\n| `winclaw daemon install / status / restart` | 守护进程管理               |\n| `winclaw doctor`                            | 诊断配置问题               |\n| `winclaw tui`                               | 终端交互界面               |\n| `winclaw models auth login`                 | 刷新 AI 模型认证令牌       |\n| `winclaw config get <key>`                  | 查看配置项                 |\n| `winclaw config set <key> <value>`          | 修改配置项                 |\n\n---\n\n## ⭐ 重点推荐技能\n\nWinClaw 内置了五个强大的自动化技能，大幅提升你在 Windows PC 上的开发效率。\n\n### 🧪 AI Dev System Testing — Web 应用自动化测试\n\nAI 驱动的全自动 Web 应用测试：代码结构分析、业务逻辑提取、代码审查并自动修复 BUG、优先级分层测试数据生成、双层测试协议（标准 CRUD + 场景化业务逻辑测试）—— **无需编写任何测试脚本**，AI agent 全程自动完成。\n\n**支持自动修复的语言：** Python、PHP、Go、JavaScript/Node.js、TypeScript/React 等解释型语言。\n\n> **注意：** 编译型语言（Java、C++、C# 等）的自动化测试和 BUG 自动修复不包含在开源版本中。如需企业级支持，请联系 **info@itccloudsoft.com**。\n\n#### 前置条件\n\n1. **WinClaw** 已安装在你的 Windows PC 上\n2. **Claude in Chrome** 浏览器扩展 — 从 [Chrome 应用商店](https://chromewebstore.google.com/) 安装（Phase 5C 浏览器 UI 测试必需）\n3. **Claude 订阅**（推荐 Pro/Max 以获得最佳效果），或使用替代模型（见下文）\n\n#### 使用替代模型（如 GLM-5 智谱清言）\n\n不一定需要 Claude 订阅 —— 任何 OpenAI 兼容模型都可以。例如使用**智谱 GLM-5**：\n\n```cmd\nSet ANTHROPIC_BASE_URL=https://open.bigmodel.cn/api/anthropic\nSet ANTHROPIC_AUTH_TOKEN=你的GLM API Key\nSet ANTHROPIC_MODEL=glm-5\n```\n\n#### 使用方法\n\n**对话模式（推荐首次使用）：**\n\n```powershell\n# 在 WinClaw Chat 标签页中直接告诉 AI：\n\"帮我测试 C:\\path\\to\\my-project 这个项目，前端是 http://localhost:3000，后端是 http://localhost:8000\"\n```\n\n**直接运行脚本：**\n\n```powershell\n# 基本用法（交互式 — 会询问 URL 配置）\n& \"C:\\Users\\USER\\AppData\\Local\\Programs\\WinClaw\\app\\skills\\ai-dev-system-testing\\scripts\\run-all.ps1\" `\n    -Workspace \"C:\\path\\to\\my-project\"\n\n# 完整参数（非交互式）\n& \"C:\\Users\\USER\\AppData\\Local\\Programs\\WinClaw\\app\\skills\\ai-dev-system-testing\\scripts\\run-all.ps1\" `\n    -Workspace \"C:\\path\\to\\my-project\" `\n    -FrontendUrl \"http://localhost:3000\" `\n    -BackendUrl \"http://localhost:8000\" `\n    -NonInteractive\n\n# Resume 模式（跳过已完成的阶段）\n& \"C:\\Users\\USER\\AppData\\Local\\Programs\\WinClaw\\app\\skills\\ai-dev-system-testing\\scripts\\run-all.ps1\" `\n    -Workspace \"C:\\path\\to\\my-project\" -Resume\n```\n\n#### 测试阶段\n\n| 阶段 | 功能 | 输出文件 |\n|------|------|----------|\n| Phase 2 | 代码结构分析 | `CODE_ANALYSIS.md` |\n| Phase 3 | 代码审查 + 自动修复 BUG + 业务逻辑提取（参考框架最佳实践） | `CODE_REVIEW_REPORT.md`、`BUSINESS_LOGIC_TESTCASES.md` |\n| Phase 5A | 测试数据生成（基于业务逻辑理解的优先级分层 P0–P5 场景） | `test-data/` |\n| Phase 5B | API 端点测试 — 覆盖全部 pattern 的双层协议（迭代式） | `test-logs/phase5b_*.json` |\n| Phase 5C | 浏览器 UI 自动化测试 — 覆盖全部 pattern 的双层协议 | `test-logs/phase5c_*.json` |\n| Phase 6 | 自动生成文档 | `docs/` |\n\n#### 框架最佳实践（Phase 3 参考文档）\n\nPhase 3 会根据项目检测到的技术栈，动态加载框架专属的最佳实践文档。这些文档定义了反模式（Bug 风险型 vs. 仅风格型）、安全检查清单和性能指南，用于指导代码审查和自动修复决策。\n\n| 最佳实践文档 | 框架 | 主要领域 |\n|-------------|------|----------|\n| `python-fastapi.md` | Python 3.10+ / FastAPI + SQLAlchemy 2.0 | 三层架构、异步模式、Pydantic 验证、N+1 查询防护 |\n| `java-spring-boot.md` | Java 21+ / Spring Boot 3.x–4.x | 依赖注入、Spring Security、JPA 模式、测试策略 |\n| `php-laravel.md` | PHP 8.1+ / Laravel | Eloquent ORM、中间件、表单请求、验证规则 |\n| `go-zero.md` | Go 1.19+ / go-zero | gRPC 模式、struct 标签验证、服务层设计 |\n| `react-nextjs.md` | React 18+ / Next.js 13.5+ | Server vs Client 组件、状态管理、记忆化、不可变性 |\n\n#### 业务逻辑管线（Phase 3 → 5A → 5B/5C）\n\nPhase 3 参考上述最佳实践执行深度代码审查，然后从源代码中直接提取 **6 大类业务逻辑模式**：\n\n1. **验证规则** — Pydantic `Field()`、JPA `@NotNull/@Size`、Laravel `rules()`、go-zero struct 标签\n2. **状态机** — status/state 字段转换、枚举定义、if-chain/switch 逻辑\n3. **授权模式** — `@login_required`、`@PreAuthorize`、auth guard、基于角色的中间件\n4. **业务约束** — 库存检查、唯一约束、余额/配额限制、引用完整性\n5. **错误处理路径** — 异常处理器、自定义异常、HTTP 错误响应\n6. **条件业务逻辑** — 基于角色的功能、功能开关、分级定价、基于时间的规则\n\n这些模式输出为 `BUSINESS_LOGIC_TESTCASES.md`，Phase 5A 消费该文件生成**优先级分层（P0–P5）多场景测试数据**：管理员用户、无效验证载荷、各种状态的记录、约束触发数据、错误路径触发器等。Phase 5B/5C 执行**覆盖全部提取 pattern 的双层测试协议**：Layer 1（标准 CRUD/页面测试）+ Layer 2（针对 Phase 3 发现的每个 pattern 的必选场景测试）。每个阶段最多运行 15 次迭代，自动修复失败的测试用例，直到通过率达到 95%+（API）或 100%（UI）。\n\n#### 测试账号配置\n\nPhase 5 测试需要测试账号凭据：\n\n```powershell\n$env:TEST_USER_EMAIL = \"test@example.com\"\n$env:TEST_USER_PASSWORD = \"YourTestPassword123\"\n```\n\n---\n\n### 🆓 Free LLM Updater — 10+ 免费模型 API，每天自动更新\n\n自动发现并注册免费 LLM API 提供商到 WinClaw。技能从 [cheahjs/free-llm-api-resources](https://github.com/cheahjs/free-llm-api-resources) 获取最新的免费提供商列表，验证每个 API Key 和端点是否可用，然后将可用的提供商添加到你的模型列表中。**每天早上 10 点自动更新** —— 通过 cron 定时任务自动检查新的免费提供商，无需手动操作。\n\n**可用的免费提供商：**\n\n| 提供商 | 可用模型 | 注册地址 |\n|--------|----------|----------|\n| Groq | LLaMA, Mixtral | [console.groq.com](https://console.groq.com) |\n| OpenRouter | 100+ 模型 | [openrouter.ai](https://openrouter.ai) |\n| Google AI Studio | Gemini Pro/Flash | [aistudio.google.com](https://aistudio.google.com) |\n| Cerebras | LLaMA 70B | [cloud.cerebras.ai](https://cloud.cerebras.ai) |\n| Mistral | Mistral/Mixtral | [console.mistral.ai](https://console.mistral.ai) |\n| GitHub Models | GPT-4o, LLaMA | [github.com/marketplace/models](https://github.com/marketplace/models) |\n| NVIDIA NIM | LLaMA, Mixtral | [build.nvidia.com](https://build.nvidia.com) |\n| HuggingFace | 开源模型 | [huggingface.co](https://huggingface.co) |\n| Cohere | Command R+ | [cohere.com](https://cohere.com) |\n| …更多 | 自动发现 | 每日更新 |\n\n#### 使用方法\n\n1. 在上面的免费提供商注册免费 API Key\n2. 设置环境变量（如 `GROQ_API_KEY`、`GEMINI_API_KEY`）\n3. 在 WinClaw Chat 中说：**\"更新免费 LLM 提供商\"**\n4. WinClaw 自动验证每个提供商，将可用的添加到模型列表\n5. 在 **WinClaw 模型切换下拉菜单** 中选择使用免费模型\n\n首次运行时自动注册每日更新定时任务，无需手动配置。\n\n---\n\n### ☁️ 云部署技能 — 一键部署到 AWS、Azure 和阿里云\n\nWinClaw 内置三个云部署技能，从简单的基础设施到复杂的企业级安全架构，通过 WinClaw Chat 中的自然语言对话即可全部搞定。每个技能涵盖需求分析 → 架构设计 → 基础设施搭建 → 代码部署 → 部署后验证的完整流程。当需要企业级安全时，技能会自动调用 `/architecture` 命令（Engineering Plugin）设计完善的安全架构（WAF、DDoS 防护、KMS、IAM、威胁检测、合规监控），然后再执行部署。\n\n| 技能 | 云平台 | 触发短语 | IaC 格式 |\n|------|--------|---------|---------|\n| **aws-cloud-deploy** | Amazon Web Services | \"deploy to aws\"、\"AWS deploy\"、\"部署到AWS\" | CloudFormation (YAML) |\n| **azure-cloud-deploy** | Microsoft Azure | \"deploy to azure\"、\"Azure deploy\"、\"部署到Azure\" | ARM Templates (JSON) |\n| **aliyun-cloud-deploy** | 阿里云 | \"deploy to aliyun\"、\"阿里云部署\"、\"部署到阿里云\" | ROS Templates (JSON) |\n\n#### 6 种架构模式\n\n根据预算、流量和需求自动选择最优架构模式：\n\n| 模式 | 预算 | 流量 | AWS | Azure | 阿里云 |\n|------|------|------|-----|-------|--------|\n| **Lite** | $10-40/月 | <500/天 | EC2 + EIP | VM + Public IP | ECS + EIP |\n| **Standard** | $50-150/月 | 500-5K/天 | EC2 + ALB + RDS | App Service + DB | ECS + SLB + RDS |\n| **HA** | $150-300/月 | 5K-50K/天 | ASG + Multi-AZ RDS | App Gateway + HA DB | ESS + Multi-AZ RDS |\n| **Elastic** | $250-600/月 | 50K-500K/天 | ASG + ElastiCache + CloudFront | VMSS + Redis + CDN | ESS + Redis + CDN |\n| **Serverless** | $0-100/月 | 弹性 | Lambda + API Gateway | Functions + API Mgmt | FC + API Gateway |\n| **Container** | $300+/月 | 50K-1M+/天 | EKS + ECR | AKS + ACR | ACK + ACR |\n\n#### 工作流程\n\n```\nPhase 1: 需求收集       → 检测项目类型，询问预算/流量/数据库/安全等级\n                          企业级安全？ → 自动调用 /architecture 设计安全 ADR\nPhase 2: 方案设计       → 推荐架构方案，展示费用估算表，获取用户确认\nPhase 3A: 基础设施部署   → 生成并验证 IaC 模板，通过 CLI 或控制台部署\nPhase 3B: 代码部署      → 生成部署脚本，执行 SCP/Docker/kubectl/CLI 部署\nPhase 3C: 验证与自动修复 → 健康检查 → 错误诊断 → 自动修复 → 重新部署（循环）\nPhase 3D: 部署报告      → 生成包含访问 URL 和后续步骤的部署报告\n```\n\n> **自动恢复：** 当 Phase 3C 验证检测到错误（HTTP 故障、服务崩溃、资源配置错误）时，WinClaw 会自动分析日志、定位根因、应用修复并重新部署 —— 循环执行直到所有健康检查通过。当需要人工干预时（如 DNS 配置、IAM 权限），WinClaw 会提供详细的分步指导，请求用户提供简单协助以快速完成部署。\n\n#### 前提条件 — 云平台 CLI 认证配置\n\n**使用云部署技能前，必须预先配置好云平台 CLI 认证。** WinClaw 不会在聊天中要求你输入凭据 — 请在终端环境中提前完成认证配置。\n\n| 云平台 | 认证命令 | 验证命令 |\n|--------|---------|---------|\n| AWS | `aws configure`（Access Key + Secret Key） | `aws sts get-caller-identity` |\n| Azure | `az login`（浏览器 SSO 认证） | `az account show` |\n| 阿里云 | `aliyun configure`（Access Key + Secret Key） | `aliyun sts GetCallerIdentity` |\n\n> **安全提示：** 切勿将凭据直接粘贴到 WinClaw Chat 中。请务必通过云平台的 CLI 工具在终端中配置认证。WinClaw 只会从 CLI 环境中读取已配置的凭据，不会存储任何敏感信息。\n\n#### 使用方法\n\n1. **启动** — 告诉 WinClaw：*\"把我的项目部署到 AWS\"*（Azure / 阿里云同理）\n2. **回答问题** — WinClaw 检测项目类型后，询问预算、流量、数据库、安全需求\n3. **安全设计** *（按需）* — 企业级需求时，自动调用 `/architecture` 设计 WAF、KMS、IAM、威胁检测、合规架构\n4. **审核方案** — WinClaw 推荐架构并展示费用明细，确认或调整\n5. **执行部署** — WinClaw 生成基础设施模板，创建云资源，部署应用代码\n6. **自动验证与修复** — 执行健康检查，发现错误时自动诊断、修复并重新部署，直到全部通过。仅在需要人工操作时请求用户简单协助\n\n```\n你：    把我的 Express 应用部署到 AWS，预算每月 $100 左右\nWinClaw: 检测到 Node.js/Express 项目（端口 3000）。\n         为了设计最佳架构，我需要问你几个问题…\n         [询问流量、数据库、安全需求]\n         …\n         推荐：Standard 模式（EC2 + ALB + RDS MySQL）\n         预估费用：$71.62/月 — 确认部署吗？\n你：    确认，开始部署\nWinClaw: [生成 CloudFormation → 部署堆栈 → SCP 代码 → 健康检查]\n         ⚠ 健康检查返回 HTTP 502 — 正在排查…\n         根因：PM2 启动失败（缺少 ecosystem.config.js）\n         [自动修复：生成配置文件 → 重新部署 → 再次检查]\n         ✅ 所有健康检查已通过！\n         部署完成！访问地址：http://my-app-alb-123.us-east-1.elb.amazonaws.com/\n```\n\n---\n\n## 内置插件\n\nWinClaw 内置 **18 个预构建插件**，覆盖 15 个专业领域 —— **88 个斜杠命令**、**90+ AI 技能**、**40+ MCP 集成**，开箱即用。在聊天中说一句话，或在配置文件中改一行，即可启用任意插件。\n\n### 快速开始\n\n**方式 A — 自然语言**（直接在聊天中输入）：\n```\n你：   启用 sales 插件\nAI：   已启用！Sales 插件包含 3 个命令和 6 个技能。\n       输入 /sales:draft-outreach 即可调研潜在客户并起草外联消息。\n```\n\n**方式 B — 配置文件**（`winclaw.json`）：\n```json\n{\n  \"plugins\": {\n    \"entries\": {\n      \"data\": { \"enabled\": true },\n      \"sales\": { \"enabled\": true },\n      \"bio-research\": { \"enabled\": true }\n    }\n  }\n}\n```\n\n### 插件目录\n\n#### 业务基础\n\n<details>\n<summary><b>productivity</b> — 任务管理与跨会话持久记忆</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/start` | 初始化生产力仪表盘并同步任务 |\n| 命令 | `/update` | 从当前活动刷新任务和记忆 |\n| 技能 | task-management | 通过 TASKS.md 跟踪任务和状态更新 |\n| 技能 | memory-management | 跨会话的双层记忆系统 |\n\nMCP: Slack, Notion, Asana, Linear, Monday, Atlassian, Google Calendar, Gmail\n</details>\n\n<details>\n<summary><b>data</b> — SQL 生成、数据探索、仪表盘与可视化</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/analyze` | 回答数据问题，从快速查找到完整分析 |\n| 命令 | `/build-dashboard` | 构建带图表和筛选器的交互式 HTML 仪表盘 |\n| 命令 | `/create-viz` | 用 Python 创建出版级可视化图表 |\n| 命令 | `/explore-data` | 数据集画像 — 分布、异常值、质量 |\n| 命令 | `/validate` | 分享前的分析 QA 检查 |\n| 命令 | `/write-query` | 按最佳实践生成优化 SQL |\n| 技能 | sql-queries | 全主流数据库通用的正确高效 SQL |\n| 技能 | data-exploration | 探索数据集的形状与质量 |\n| 技能 | data-visualization | 用 Python（matplotlib, plotly）制作有效图表 |\n| 技能 | interactive-dashboard-builder | 构建自包含的交互式 HTML 仪表盘 |\n| 技能 | statistical-analysis | 描述统计、假设检验、回归分析 |\n| 技能 | data-validation | 验证方法论、准确性和完整性 |\n| 技能 | data-context-extractor | 生成企业特定的数据分析上下文 |\n\nMCP: Snowflake, Databricks, BigQuery, Hex, Amplitude, Atlassian\n</details>\n\n<details>\n<summary><b>finance</b> — 财务报表、差异分析、对账与审计</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/income-statement` | 生成带期间对比的利润表 |\n| 命令 | `/journal-entry` | 编制借贷正确的记账凭证 |\n| 命令 | `/reconciliation` | 总账与明细账、银行对账 |\n| 命令 | `/sox-testing` | 生成 SOX 抽样和测试底稿 |\n| 命令 | `/variance-analysis` | 按驱动因素分解差异并生成说明 |\n| 技能 | financial-statements | 利润表、资产负债表、现金流量表 |\n| 技能 | variance-analysis | 按驱动因素分解差异并解释 |\n| 技能 | reconciliation | 总账与明细账、银行记录的匹配 |\n| 技能 | journal-entry-prep | 附佐证的正确借贷凭证编制 |\n| 技能 | audit-support | SOX 404 合规测试与抽样选择 |\n| 技能 | close-management | 月结任务排序与跟踪 |\n\nMCP: Snowflake, Databricks, BigQuery, Slack, Google Calendar, Gmail\n</details>\n\n<details>\n<summary><b>operations</b> — 流程优化、供应商管理与风险评估</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/capacity-plan` | 预测资源需求与分配 |\n| 命令 | `/change-request` | 起草和跟踪变更管理请求 |\n| 命令 | `/process-doc` | 逐步记录运营流程 |\n| 命令 | `/runbook` | 创建可重复操作的运行手册 |\n| 命令 | `/status-report` | 生成运营状态报告 |\n| 命令 | `/vendor-review` | 评估和比较供应商表现 |\n| 技能 | process-optimization | 识别瓶颈并提出改进方案 |\n| 技能 | vendor-management | 评估、比较和管理供应商关系 |\n| 技能 | risk-assessment | 带严重度和缓解措施的风险评估 |\n| 技能 | resource-planning | 容量规划与资源分配 |\n| 技能 | change-management | 组织变更的结构化和跟踪 |\n| 技能 | compliance-tracking | 监控合规要求和状态 |\n\nMCP: Slack, ServiceNow, Asana, Atlassian, Notion, Google Calendar, Gmail\n</details>\n\n#### 客户相关\n\n<details>\n<summary><b>sales</b> — 管道管理、潜客调研与个性化外联</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/call-summary` | 从通话笔记或录音提取行动项 |\n| 命令 | `/forecast` | 生成加权销售预测（最佳/预期/最差） |\n| 命令 | `/pipeline-review` | 分析管道健康度 — 优先排序与风险标记 |\n| 技能 | draft-outreach | 调研潜客后起草个性化消息 |\n| 技能 | account-research | 调研企业并获取可操作的销售洞察 |\n| 技能 | call-prep | 用参会者画像和谈话要点准备通话 |\n| 技能 | competitive-intelligence | 调研竞品并制作战斗卡 |\n| 技能 | create-an-asset | 生成定制销售资料（演示文稿、落地页） |\n| 技能 | daily-briefing | 以优先级排序的销售简报开启每一天 |\n\nMCP: HubSpot, Clay, ZoomInfo, Apollo, Slack, Notion, Outreach, Gmail\n</details>\n\n<details>\n<summary><b>customer-support</b> — 工单分拣、回复起草、升级与知识库文章</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/draft-response` | 起草专业的客户回复 |\n| 命令 | `/escalate` | 打包升级给工程或产品团队 |\n| 命令 | `/kb-article` | 从已解决问题创建知识库文章 |\n| 命令 | `/research` | 多源调研客户问题 |\n| 命令 | `/triage` | 分类、排优先级并路由支持工单 |\n| 技能 | ticket-triage | 按紧急度分类工单并路由到对应团队 |\n| 技能 | response-drafting | 起草有同理心的专业客户回复 |\n| 技能 | escalation | 构建面向工程的升级包 |\n| 技能 | customer-research | 跨文档、日志、CRM 搜索上下文 |\n| 技能 | knowledge-management | 将已解决问题转化为自助内容 |\n\nMCP: Slack, Intercom, HubSpot, Guru, Atlassian, Notion, Gmail\n</details>\n\n<details>\n<summary><b>marketing</b> — 活动策划、内容创作、SEO 与效果分析</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/brand-review` | 按品牌风格和调性审查内容 |\n| 命令 | `/campaign-plan` | 生成含渠道和时间线的完整活动策划 |\n| 命令 | `/competitive-brief` | 竞品调研和定位分析 |\n| 命令 | `/draft-content` | 起草博客、社交媒体、邮件、简报 |\n| 命令 | `/email-sequence` | 设计多邮件培育序列 |\n| 命令 | `/performance-report` | 构建含关键指标的营销效果报告 |\n| 命令 | `/seo-audit` | 关键词调研、页面审核与优化 |\n| 技能 | campaign-planning | 含目标、受众和渠道的活动策划 |\n| 技能 | content-creation | 全渠道营销内容创作 |\n| 技能 | brand-voice | 保持一致的品牌调性和信息传达 |\n| 技能 | competitive-analysis | 对比定位、信息传达和策略 |\n| 技能 | performance-analytics | 分析指标、趋势和 ROI |\n\nMCP: Canva, HubSpot, Ahrefs, Klaviyo, Figma, Amplitude, Notion, Slack\n</details>\n\n#### 产品与工程\n\n<details>\n<summary><b>product-management</b> — 功能规格、路线图、用户调研与利益相关者汇报</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/competitive-brief` | 创建竞品分析简报 |\n| 命令 | `/metrics-review` | 审查和分析带趋势的产品指标 |\n| 命令 | `/roadmap-update` | 更新或重新排列产品路线图优先级 |\n| 命令 | `/sprint-planning` | 规划和结构化冲刺工作 |\n| 命令 | `/stakeholder-update` | 按受众定制利益相关者更新 |\n| 命令 | `/synthesize-research` | 从访谈和调查中综合调研结果 |\n| 命令 | `/write-spec` | 从问题陈述编写功能规格或 PRD |\n| 技能 | feature-spec | 编写带验收标准的结构化 PRD |\n| 技能 | roadmap-management | 用 RICE/MoSCoW 框架排列优先级 |\n| 技能 | user-research-synthesis | 综合定性与定量调研 |\n| 技能 | competitive-analysis | 功能对比矩阵和定位分析 |\n| 技能 | metrics-tracking | 定义、跟踪和分析产品指标 |\n| 技能 | stakeholder-comms | 按受众定制汇报（高管、工程、销售） |\n\nMCP: Linear, Amplitude, Pendo, Figma, Slack, Atlassian, Notion, Intercom\n</details>\n\n<details>\n<summary><b>engineering</b> — 代码审查、系统设计、事件响应与文档</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/architecture` | 带权衡分析的系统架构设计 |\n| 命令 | `/debug` | 带根因分析的系统化调试 |\n| 命令 | `/deploy-checklist` | 生成部署前检查清单 |\n| 命令 | `/incident` | 结构化事件响应和复盘 |\n| 命令 | `/review` | 含安全和性能检查的代码审查 |\n| 命令 | `/standup` | 从近期活动生成站会摘要 |\n| 技能 | system-design | 带架构图的可扩展系统设计 |\n| 技能 | code-review | 正确性和安全性的深度代码审查 |\n| 技能 | incident-response | 结构化事件响应和无责复盘 |\n| 技能 | documentation | 从代码自动生成技术文档 |\n| 技能 | tech-debt | 识别和排列技术债优先级 |\n| 技能 | testing-strategy | 设计全面的测试策略 |\n\nMCP: GitHub, PagerDuty, Datadog, Linear, Slack, Atlassian, Notion\n</details>\n\n<details>\n<summary><b>design</b> — 无障碍审核、UX 文案、设计评审与开发交接</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/accessibility` | 运行 WCAG 无障碍审核 |\n| 命令 | `/critique` | 获取结构化的设计反馈 |\n| 命令 | `/design-system` | 管理和文档化设计系统组件 |\n| 命令 | `/handoff` | 生成像素级精确的开发交接规范 |\n| 命令 | `/research-synthesis` | 综合 UX 调研发现 |\n| 命令 | `/ux-copy` | 编写和审查微文案与界面文字 |\n| 技能 | accessibility-review | WCAG 合规审核并提供修复建议 |\n| 技能 | design-critique | 基于设计原则的结构化评审 |\n| 技能 | design-handoff | 含设计令牌、间距和状态的开发规范 |\n| 技能 | design-system-management | 文档化和维护组件库 |\n| 技能 | user-research | 将用户调研综合为可操作洞察 |\n| 技能 | ux-writing | 编写清晰一致的界面文案 |\n\nMCP: Figma, Linear, Slack, Asana, Atlassian, Notion, Intercom\n</details>\n\n#### 专业领域\n\n<details>\n<summary><b>legal</b> — 合同审查、NDA 分拣、合规检查与法务简报</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/brief` | 生成上下文关联的法务简报 |\n| 命令 | `/compliance-check` | 检查 GDPR、CCPA 与法规合规 |\n| 命令 | `/respond` | 生成模板化法务回复 |\n| 命令 | `/review-contract` | 按谈判剧本审查合同 |\n| 命令 | `/signature-request` | 准备签署请求包 |\n| 命令 | `/triage-nda` | 将 NDA 分类为 GREEN / YELLOW / RED |\n| 命令 | `/vendor-check` | 查看现有供应商协议状态 |\n| 技能 | contract-review | 按组织标准审查合同 |\n| 技能 | nda-triage | 筛查 NDA — 标准（GREEN）或需审查（RED） |\n| 技能 | compliance | 导航 GDPR、CCPA 和隐私法规 |\n| 技能 | legal-risk-assessment | 带缓解建议的风险严重度评估 |\n| 技能 | meeting-briefing | 为法务会议准备简报 |\n| 技能 | canned-responses | 为常见咨询生成模板回复 |\n\nMCP: Box, DocuSign, Egnyte, Atlassian, Slack, Google Calendar, Gmail\n</details>\n\n<details>\n<summary><b>human-resources</b> — 招聘、薪酬分析、入职与绩效评估</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/comp-analysis` | 对标市场数据的薪酬分析 |\n| 命令 | `/draft-offer` | 起草合规的录用通知书 |\n| 命令 | `/onboarding` | 创建结构化入职计划 |\n| 命令 | `/people-report` | 生成人员分析报告 |\n| 命令 | `/performance-review` | 结构化绩效评估讨论 |\n| 命令 | `/policy-lookup` | 查询公司政策和回答 HR 问题 |\n| 技能 | interview-prep | 含评分卡的面试计划结构化 |\n| 技能 | compensation-benchmarking | 对标市场数据的薪酬基准分析 |\n| 技能 | recruiting-pipeline | 跟踪和优化招聘管道 |\n| 技能 | org-planning | 组织架构与编制规划 |\n| 技能 | people-analytics | 分析留存率、敬业度和人员指标 |\n| 技能 | employee-handbook | 起草和维护员工手册政策 |\n\nMCP: Slack, Google Calendar, Gmail, Notion, Atlassian\n</details>\n\n<details>\n<summary><b>enterprise-search</b> — 一个查询搜遍全公司工具</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/digest` | 生成跨工具活动的日报/周报摘要 |\n| 命令 | `/search` | 一次查询搜索全部已连接数据源 |\n| 技能 | search-strategy | 将复杂查询分解为多源搜索 |\n| 技能 | knowledge-synthesis | 综合搜索结果生成连贯摘要 |\n| 技能 | source-management | 管理和配置已连接的 MCP 数据源 |\n\nMCP: Slack, Notion, Guru, Atlassian, Asana, Google Calendar, Gmail\n</details>\n\n<details>\n<summary><b>bio-research</b> — 文献搜索、临床试验、基因组学与实验室数据分析</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/start` | 设置生物研究环境并探索可用工具 |\n| 技能 | scientific-problem-selection | 帮助科学家选择和确定研究问题优先级 |\n| 技能 | single-cell-rna-qc | 用 scanpy 做单细胞 RNA-seq 数据质控 |\n| 技能 | scvi-tools | 用 scvi-tools 进行单细胞分析的深度学习 |\n| 技能 | nextflow-development | 运行 nf-core 生信流程（rnaseq, sarek） |\n| 技能 | instrument-data-to-allotrope | 将实验室仪器输出文件转换为 Allotrope 格式 |\n\nMCP: PubMed, bioRxiv, ChEMBL, ClinicalTrials.gov, Open Targets, Benchling, Synapse\n</details>\n\n#### 合作伙伴\n\n<details>\n<summary><b>apollo</b> — 通过 Apollo API 进行线索增强、潜客发掘与序列加载</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 技能 | prospect | 用自然语言描述 ICP，获取排序后的线索列表 |\n| 技能 | enrich-lead | 通过姓名、邮箱或 LinkedIn URL 增强联系人信息 |\n| 技能 | sequence-load | 一站式完成联系人搜索、增强并加载到序列 |\n\nMCP: Apollo\n</details>\n\n<details>\n<summary><b>brand-voice</b> — 从现有素材自动生成和执行品牌指南</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/discover-brand` | 从文档、通话和聊天中发现品牌信号 |\n| 命令 | `/enforce-voice` | 对 AI 生成的内容应用品牌指南 |\n| 命令 | `/generate-guidelines` | 从现有素材生成品牌调性指南 |\n| 技能 | discover-brand | 跨 Notion、Drive、Gong、Slack 搜索品牌信号 |\n| 技能 | guideline-generation | 将品牌素材提炼为可执行的指南 |\n| 技能 | brand-voice-enforcement | 对所有 AI 生成内容应用指南 |\n\nMCP: Notion, Figma, Gong, Atlassian, Box\n</details>\n\n<details>\n<summary><b>common-room</b> — 基于产品使用、互动与意向信号的 GTM 情报</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/generate-account-plan` | 从信号数据创建战略客户计划 |\n| 命令 | `/weekly-brief` | 为即将到来的通话生成周度简报 |\n| 技能 | account-research | 用真实互动数据调研客户 |\n| 技能 | contact-research | 从多信号源构建联系人画像 |\n| 技能 | call-prep | 用参会者画像和谈话要点准备通话 |\n| 技能 | prospect | 从信号数据构建目标潜客列表 |\n| 技能 | compose-outreach | 跨邮件和 LinkedIn 起草个性化外联 |\n| 技能 | weekly-prep-brief | 为每个即将到来的通话准备周度简报 |\n\nMCP: Common Room\n</details>\n\n<details>\n<summary><b>slack</b> — 通过 Slack API 实现频道摘要、站会总结与消息起草</summary>\n\n| 类型 | 名称 | 功能说明 |\n|------|------|---------|\n| 命令 | `/channel-digest` | 总结指定时间段的频道活动 |\n| 命令 | `/draft-announcement` | 起草团队公告 |\n| 命令 | `/find-discussions` | 跨频道查找相关讨论 |\n| 命令 | `/standup` | 从 Slack 活动生成站会摘要 |\n| 命令 | `/summarize-channel` | 创建简洁的频道总结 |\n| 技能 | slack-messaging | 发送和管理 Slack 消息与线程 |\n| 技能 | slack-search | 跨 Slack 频道和对话搜索 |\n\nMCP: Slack\n</details>\n\n### 插件使用示例\n\n**生成优化 SQL**（data 插件）：\n```\n你：   写一个查询，找出本季度收入前 10 的客户\nAI：   /data:write-query — 这是为你的 Snowflake 仓库优化的查询：\n       SELECT customer_id, SUM(amount) as total_revenue\n       FROM orders WHERE order_date >= DATE_TRUNC('quarter', CURRENT_DATE)\n       GROUP BY customer_id ORDER BY total_revenue DESC LIMIT 10;\n       已添加索引提示和分区裁剪以提升性能。\n```\n\n**NDA 分拣**（legal 插件）：\n```\n你：   审查供应商发来的这份保密协议\nAI：   /legal:triage-nda — 分类：GREEN（标准条款）。\n       期限：2 年，双向义务，标准例外条款。\n       注意：第 7 条竞业限制范围偏大。\n       建议：谈判缩小至直接竞争对手范围。\n```\n\n**搜索临床试验**（bio-research 插件）：\n```\n你：   查找 pembrolizumab 治疗肺癌的临床试验\nAI：   /bio-research:start — 搜索 PubMed + ClinicalTrials.gov 中...\n       找到 47 项正在招募的 III 期试验。排名靠前的结果：\n       | NCT ID | 设计 | 入组 | 状态 |\n       | NCT04567890 | 联合化疗 | n=800 | 招募中 |\n       | NCT04891234 | 辅助治疗 | n=1200 | 招募中 |\n       需要分析终点指标或查找相关 PubMed 论文吗？\n```\n\n**发掘销售线索**（apollo 插件）：\n```\n你：   查找湾区 B 轮 SaaS 公司的 VP Engineering 联系人\nAI：   正在搜索 Apollo... 找到 12 个匹配联系人（按匹配度排序）：\n       | 姓名 | 职位 | 公司 | 员工数 | 融资轮次 |\n       | Jane Smith | VP Eng | Acme AI | 150 | B 轮 |\n       | ...\n       需要增强这些联系人信息或加载到序列吗？\n```\n\n**策划营销活动**（marketing 插件）：\n```\n你：   为我们的新 API 功能策划产品发布活动\nAI：   /marketing:campaign-plan — 多渠道活动策划简报：\n       目标：30 天内获取 500 个 API 注册\n       渠道：邮件序列（3 封）、博客、社交媒体、网络研讨会\n       时间线：第 1 周预告 → 第 2 周发布 → 第 3-4 周培育\n       KPI：注册数、激活率、文档页面浏览量\n```\n\n**评估运营风险**（operations 插件）：\n```\n你：   评估支付系统迁移到新服务商的风险\nAI：   /operations:risk-assessment — 风险矩阵：\n       | 风险 | 严重度 | 可能性 | 缓解措施 |\n       | 迁移中数据丢失 | 高 | 低 | 并行运行 30 天 |\n       | API 宕机 | 中 | 中 | 功能开关 + 回滚 |\n       | 合规缺口 | 高 | 低 | 迁移前审计 |\n       综合评估：中等 — 建议分阶段上线并并行运行。\n```\n\n---\n\n## 配置说明\n\n### 配置文件路径\n\n| 平台                    | 路径                                  |\n| ----------------------- | ------------------------------------- |\n| Windows（所有安装方式） | `%USERPROFILE%\\.winclaw\\winclaw.json` |\n| macOS / Linux           | `~/.winclaw/winclaw.json`             |\n\n可通过 `WINCLAW_CONFIG_PATH` 或 `WINCLAW_STATE_DIR` 环境变量覆盖。\n\nWindows 下的主要配置文件：\n\n| 文件     | 路径                                                          | 用途                                  |\n| -------- | ------------------------------------------------------------- | ------------------------------------- |\n| 主配置   | `%USERPROFILE%\\.winclaw\\winclaw.json`                         | Gateway、渠道、技能、代理设置         |\n| 认证配置 | `%USERPROFILE%\\.winclaw\\agents\\main\\agent\\auth-profiles.json` | AI 提供商令牌（Anthropic、OpenAI 等） |\n| 渠道凭据 | `%USERPROFILE%\\.winclaw\\credentials\\`                         | WhatsApp 会话等渠道认证数据           |\n| 会话记录 | `%USERPROFILE%\\.winclaw\\agents\\main\\sessions\\`                | 对话会话历史                          |\n\n### 最小配置示例\n\n```json\n{\n  \"gateway\": {\n    \"mode\": \"local\",\n    \"port\": 18789,\n    \"auth\": {\n      \"mode\": \"token\",\n      \"token\": \"<自动生成的令牌>\"\n    }\n  },\n  \"agent\": {\n    \"model\": \"claude-opus-4-6\"\n  }\n}\n```\n\n> **提示：** 引导向导会自动生成此配置。手动编辑仅用于高级定制。\n\n### 关键配置项\n\n| 配置项                  | 说明                                                  |\n| ----------------------- | ----------------------------------------------------- |\n| `agent.model`           | AI 模型标识 (`claude-sonnet-4-20250514`, `gpt-4o` 等) |\n| `agent.apiKey`          | 模型 API 密钥                                         |\n| `agent.systemPrompt`    | 自定义系统提示词                                      |\n| `channels.<id>.enabled` | 启用/禁用指定消息渠道                                 |\n| `gateway.port`          | 网关监听端口，默认 18789                              |\n| `skills.entries`        | 技能加载配置                                          |\n| `skills.dynamicFilter`  | 动态技能加载配置                                      |\n\n### 动态技能加载\n\n大量技能场景下，基于关键词匹配按需加载技能，避免注入全部上下文：\n\n```json\n{\n  \"skills\": {\n    \"dynamicFilter\": {\n      \"mode\": \"auto\",\n      \"maxSkills\": 20,\n      \"maxSkillsPromptChars\": 50000,\n      \"alwaysInclude\": [\"github\", \"coding-agent\"]\n    }\n  }\n}\n```\n\n`mode` 可选 `auto` / `on` / `off`；`alwaysInclude` 设置始终加载的技能列表。\n\n---\n\n## 插件系统\n\nWinClaw 支持通过插件架构扩展网关功能。插件位于 `extensions/` 目录，\n通过配置文件中的 `plugins.entries` 启用。\n\n### MCP Bridge 插件\n\n**MCP Bridge** 插件（`extensions/mcp-bridge/`）将外部\n[Model Context Protocol (MCP)](https://modelcontextprotocol.io/) 服务器\n桥接为 WinClaw 代理的可调用工具。支持浏览器自动化、数据库访问、自定义 API 等\nMCP 兼容的工具服务器，通过自然对话直接使用。\n\n**核心功能：**\n\n- 支持 **stdio**（子进程）和 **SSE**（HTTP）两种 MCP 传输方式\n- 自动重连（可配置重试次数）\n- 工具调用以 `mcp__<服务器名>__<工具名>` 格式命名空间化\n- Chrome 标签页保护：`before_tool_call` 钩子阻止危险操作（关闭标签页、终止 Chrome、导航到用户标签页）\n\n**配置示例：**\n\n```json\n{\n  \"plugins\": {\n    \"entries\": {\n      \"mcp-bridge\": {\n        \"enabled\": true,\n        \"servers\": [\n          {\n            \"name\": \"chrome-devtools\",\n            \"transport\": \"stdio\",\n            \"command\": \"npx\",\n            \"args\": [\"-y\", \"@anthropic/chrome-devtools-mcp@latest\"]\n          }\n        ]\n      }\n    }\n  }\n}\n```\n\n### 桌面应用操控（VNC + MCP）\n\n**desktop-app-control** 技能使 AI 助手能够通过 VNC + Chrome DevTools MCP\n管道操控原生桌面应用程序（Windows / macOS）。助手可以打开应用、点击按钮、\n输入文字、操作菜单、截取屏幕截图——全部通过自然语言命令完成。\n\n**架构：** 用户请求 → WinClaw 代理 → `mcp__chrome_devtools__*` 工具\n→ Chrome DevTools Protocol → noVNC 标签页 → websockify → VNC 服务器 → 桌面\n\n**前置条件：**\n\n- 启用 MCP Bridge 插件并配置 `chrome-devtools` 服务器\n- VNC 服务器运行中（Windows: TightVNC，macOS: 屏幕共享）\n- websockify + noVNC（基于浏览器的 VNC 访问）\n- Chrome 以 `--remote-debugging-port` 启动（端口自动选择）\n\n**安全的 Chrome 调试：** 使用随附的 `scripts/ensure-chrome-debug.ps1` 脚本，\n可在不中断现有浏览器会话的情况下安全启用 Chrome 远程调试。脚本自动扫描端口\n**9222-9229**，使用第一个可用端口，无需担心端口冲突。\n\n---\n\n## Windows 专属功能\n\n### Windows 原生技能\n\n| 技能               | 说明                                                                                           |\n| ------------------ | ---------------------------------------------------------------------------------------------- |\n| `windows-office`   | 创建/编辑 Word、Excel、PowerPoint (python-docx, openpyxl, python-pptx)，可选 COM 支持 PDF 导出 |\n| `windows-system`   | 系统管理：服务、进程、注册表、事件日志、计划任务 (PowerShell)                                  |\n| `windows-explorer` | 文件操作：递归搜索、批量重命名、压缩解压、剪贴板                                               |\n| `windows-outlook`  | 通过 Outlook COM Automation 发送/读取邮件                                                      |\n\n### PowerShell 脚本支持\n\n技能脚本同时提供 `.sh` 和 `.ps1` 版本，Windows 上自动使用 PowerShell 执行。\n\n### Windows 包管理器\n\n| 管理器   | 用途                       |\n| -------- | -------------------------- |\n| `winget` | Windows 原生包管理器       |\n| `scoop`  | 便携式包管理器，面向开发者 |\n| `choco`  | Chocolatey，企业级包管理   |\n| `pip`    | Python 包 (Office 技能等)  |\n\n### Gateway 守护进程 (schtasks)\n\n- 任务名称：`WinClaw Gateway`，用户登录时自动启动\n- 以当前用户身份运行，无需管理员权限\n- 管理：`winclaw daemon install | uninstall | status`\n\n### WINCLAW_HOME 与嵌入式 Node.js\n\n```\n%WINCLAW_HOME%\\\n  node\\          ← 嵌入式 Node.js 22 运行时\n  app\\           ← WinClaw 应用代码与依赖\n  winclaw.cmd    ← CLI 启动器 (自动使用嵌入式 Node.js)\n  winclaw-ui.cmd ← UI 启动器 (启动 Gateway + 打开浏览器)\n  assets\\        ← 图标等资源\n```\n\n### 桌面快捷方式 / 开始菜单启动器\n\n安装程序创建的桌面快捷方式和开始菜单项运行 `winclaw-ui.cmd`，该脚本：\n\n1. 检测是否需要首次配置（无配置文件或 `gateway.mode` 未设置）\n2. 如需要，自动启动引导向导\n3. 以最小化窗口启动 Gateway（如未运行）\n4. 在默认浏览器中打开控制面板（`http://127.0.0.1:18789/`）\n\n### Windows 常见问题排查\n\n**「disconnected (1008): unauthorized: gateway token mismatch」**\n\n控制面板无法通过 Gateway 认证。解决方法：\n\n```powershell\n# 获取带令牌的正确 Dashboard URL\nwinclaw dashboard --no-open\n# 在浏览器中打开输出的 URL\n```\n\n**Gateway 未启动 / 端口 18789 无响应**\n\n```powershell\n# 检查 Gateway 是否运行\nwinclaw health\n\n# 检查守护进程状态\nwinclaw daemon status\n\n# 重启守护进程\nwinclaw daemon restart\n\n# 或手动启动\nwinclaw gateway --port 18789\n```\n\n**「OAuth token has expired」(HTTP 401)**\n\n```powershell\n# 重新认证 Anthropic\nwinclaw models auth login --provider anthropic\n\n# 或手动添加令牌\nwinclaw models auth add\n\n# 查看当前认证配置\nwinclaw models status\n```\n\n**控制面板 Config 为空 / 显示 Schema unavailable**\n\n说明控制面板未连接到 Gateway。使用 `winclaw dashboard` 以正确的令牌打开面板，或重新运行引导向导：\n\n```powershell\nwinclaw onboard --flow quickstart\n```\n\n**安装时提示「Node.js JavaScript Runtime 正在使用」**\n\n之前的 WinClaw Gateway 进程仍在运行。选择「自动关闭应用程序」，或手动停止：\n\n```powershell\nwinclaw daemon stop\n# 或强制终止所有 WinClaw 的 Node.js 进程\nGet-Process -Name node | Where-Object { $_.Path -like '*WinClaw*' } | Stop-Process -Force\n```\n\n---\n\n## 渠道配置\n\n| 渠道            | 配置键                | 协议                              |\n| --------------- | --------------------- | --------------------------------- |\n| WhatsApp        | `channels.whatsapp`   | WhatsApp Web (Baileys)            |\n| Telegram        | `channels.telegram`   | Telegram Bot API                  |\n| Slack           | `channels.slack`      | Slack Events API / Socket Mode    |\n| Discord         | `channels.discord`    | Discord Bot API                   |\n| Google Chat     | `channels.googlechat` | Google Chat API                   |\n| Signal          | `channels.signal`     | Signal CLI / API                  |\n| iMessage        | `channels.imessage`   | BlueBubbles / AppleScript (macOS) |\n| Microsoft Teams | `channels.msteams`    | Microsoft Graph API               |\n| Matrix          | `channels.matrix`     | Matrix Client-Server API          |\n| Zalo            | `channels.zalo`       | Zalo OA API                       |\n| WebChat         | `channels.webchat`    | 内置 Web 界面                     |\n\n每个渠道需配置 `enabled`、认证凭据和允许列表 (`allowFrom`)。详见[官方文档](https://github.com/itc-ou-shigou/winclaw/tree/main/docs)。\n\n---\n\n## 技能系统\n\n每个技能是一个 `SKILL.md` 文件，包含名称、描述、前置条件和使用说明。\n\n| 类型       | 位置                          | 说明                      |\n| ---------- | ----------------------------- | ------------------------- |\n| 内置技能   | `skills/` (安装目录)          | 随 WinClaw 发布，开箱即用 |\n| 托管技能   | `~/.winclaw/skills/`          | 用户安装或社区获取        |\n| 工作区技能 | 项目目录下 `.winclaw/skills/` | 项目级，跟随项目分发      |\n\n内置 50+ 技能，涵盖：**生产力** (github, notion, obsidian, trello)、**编码** (coding-agent, canvas)、**多媒体** (openai-image-gen, video-frames, whisper-api)、**通信** (himalaya, discord, voice-call)、**系统** (windows-office/system/explorer/outlook)、**智能家居** (openhue, sonoscli)。\n\n技能依赖通过多种包管理器自动安装：`npm`, `pip`, `brew`, `apt`, `winget`, `scoop`, `choco`。\n\n---\n\n## 通过聊天配置（设置技能）\n\nWinClaw 内置了 6 个**设置技能**，让你通过 Chat 标签页或任何已连接的消息渠道，用自然对话完成所有配置。无需手动编辑配置文件，只需告诉 AI 你想做什么。\n\n### 设置技能一览\n\n| 技能                 | 图标 | 功能                                                       |\n| -------------------- | ---- | ---------------------------------------------------------- |\n| `winclaw-setup`      | ⚙️   | Gateway 核心设置：端口、认证令牌、TLS、AI 模型、主题、日志 |\n| `winclaw-channels`   | 🔗   | 添加、删除、启用/禁用消息渠道，管理 DM/群组策略            |\n| `winclaw-agents`     | 🤖   | 创建和配置 AI 代理：模型、人设、工作区、思考级别           |\n| `winclaw-cron`       | ⏰   | 调度定期任务：每日报告、提醒、定期检查                     |\n| `winclaw-status`     | 📊   | 查看系统状态、使用统计、已连接渠道、活跃会话               |\n| `winclaw-sns-wizard` | 📲   | 逐步引导连接 19 个支持平台中的任意一个                     |\n\n### 使用方法\n\n打开控制面板的 **Chat** 标签页（或通过已连接的消息渠道发送消息），用自然语言描述你想做的事。AI 会自动调用合适的技能，通过 Gateway API 完成设置。\n\n### 对话示例\n\n**初始设置：**\n\n```\n你:   帮我完成 WinClaw 的初始设置\nAI:   我来引导你完成初始设置。正在检查当前配置…\n      Gateway 正在端口 18789 上运行。先来配置 AI 模型吧，\n      你想使用哪个提供商？\n你:   Anthropic 的 Claude\nAI:   搞定！已将 agent.model 设置为 claude-sonnet-4-20250514。\n      接下来要连接消息渠道吗？\n```\n\n**连接消息平台：**\n\n```\n你:   我要连接 Telegram\nAI:   好的！我们来逐步设置 Telegram。\n      1. 在 Telegram 中搜索 @BotFather\n      2. 发送 /newbot，按提示创建机器人\n      3. 复制机器人令牌（格式如 123456:ABC-DEF...）\n      准备好后把令牌粘贴到这里。\n你:   7891234567:AAH2kx9...\nAI:   ✅ Telegram 已连接！机器人现在可以接收消息了。\n      需要配置 DM 策略或添加允许的用户吗？\n```\n\n**调度定期任务：**\n\n```\n你:   每天早上8点给我发天气摘要\nAI:   我来创建一个定时任务。设置每天 08:00 执行的任务，\n      提示词为\"给出今天的简要天气摘要\"…\n      ✅ 定时任务已创建！每天早上 8 点你会收到天气摘要。\n```\n\n**查看系统状态：**\n\n```\n你:   一切正常吗？给我看看连接情况\nAI:   📊 系统状态:\n      • Gateway: 正常（运行时间 3 天 12 小时）\n      • 渠道: WhatsApp ✅、Telegram ✅、Discord ❌（已禁用）\n      • 活跃会话: 4\n      • 模型: claude-sonnet-4-20250514\n      • 已加载技能: 23/50\n```\n\n**管理代理：**\n\n```\n你:   创建一个叫\"translator\"的新代理，用 GPT-4o\nAI:   我来创建一个使用 gpt-4o、ID 为\"translator\"的新代理。\n      需要设置系统提示词或人设吗？\n你:   好，让它做日英翻译\nAI:   ✅ 代理\"translator\"已创建，配置了翻译专用的系统提示词。\n      可以直接使用了。需要将它绑定到某个渠道吗？\n```\n\n> **提示：** 这些技能基于关键词匹配自动加载。只需自然地描述你的需求，WinClaw 会自动选择合适的技能来响应。\n\n---\n\n## 开发（从源码）\n\n```bash\ngit clone https://github.com/itc-ou-shigou/winclaw.git\ncd winclaw\npnpm install --frozen-lockfile\npnpm build\npnpm dev                 # 开发模式\npnpm test                # 运行测试\npnpm check               # 格式化 + 类型检查 + Lint\n```\n\n### 项目结构\n\n```\nwinclaw/\n  src/\n    agents/         ← AI 代理核心、工具调用、技能加载\n    channels/       ← 消息渠道插件系统\n    config/         ← 配置解析、校验、迁移\n    daemon/         ← 守护进程 (launchd/systemd/schtasks)\n    acp/            ← Agent Communication Protocol\n  skills/           ← 内置技能集合\n  scripts/          ← 构建与打包脚本\n  docs/             ← 文档\n```\n\n---\n\n## 构建 Windows 安装程序\n\n前置条件：[Inno Setup 6+](https://jrsoftware.org/isinfo.php)、PowerShell 5.1+、pnpm 10+。\n最终安装程序通过自动化体积优化，严格控制在 **100 MB 以内**。\n\n```powershell\n# 完整构建（包含 pnpm build）\n.\\scripts\\package-windows-installer.ps1\n\n# 跳过 pnpm build 步骤（复用已有构建产物）\n.\\scripts\\package-windows-installer.ps1 -SkipBuild\n\n# 仅重新打包安装程序（复用已有构建产物，跳过 pnpm build）\n.\\scripts\\rebuild-installer.ps1\n```\n\n构建流程：\n\n1. 下载 Node.js 22 LTS 便携版到 `dist/cache/`\n2. 运行 `pnpm build` 生成生产包（仅完整构建时执行）\n3. 运行 `npm pack` 并解压到 `dist/win-staging/app/`\n4. **清除冗余文件**：删除 `npm pack` 通过 `package.json` `files` 字段带入的旧安装程序 EXE、下载缓存和 staging 残留\n5. **移除重型可选依赖**：GPU 运行时 (CUDA/Vulkan/ARM64)、`node-llama-cpp`、`@napi-rs/canvas`、`playwright-core`、`@lydell/node-pty` 和纯类型包 (`@types`、`bun-types` 等)。用户可在安装后按需单独安装\n6. **精简 node_modules**：移除测试套件、文档、TypeScript 源文件、Source Map 等运行时不需要的文件\n7. 复制 Node.js 运行时、启动脚本、WinClawUI 桌面应用和资源到 `dist/win-staging/`\n8. 使用 Inno Setup 以 LZMA2/ultra64 固实压缩编译 `scripts/windows-installer.iss` 为 `dist/WinClawSetup-{version}.exe`\n9. 复制安装程序到 `releases/`\n\nInno Setup 编译大约需要 1-2 分钟。生成的安装程序通常约 **84 MB**。\n\n---\n\n## 架构图\n\n```\n                        +------------------+\n                        |  用户 (Chat App)  |\n                        +--------+---------+\n                                 |\n            +--------------------+--------------------+\n            |                    |                    |\n      +-----v-----+      +------v------+      +-----v------+\n      |  WhatsApp  |      |  Telegram   |      |  Discord   | ...\n      +-----+------+      +------+------+      +-----+------+\n            |                    |                    |\n            +--------------------+--------------------+\n                                 |\n                        +--------v---------+\n                        |    Gateway       |\n                        |  (HTTP :18789)   |\n                        +--------+---------+\n                                 |\n                  +--------------+--------------+\n                  |                             |\n           +------v-------+            +-------v--------+\n           | Channel      |            | Session        |\n           | Plugin       |            | Manager        |\n           | Registry     |            +-------+--------+\n           +--------------+                    |\n                                       +-------v--------+\n                                       |   AI Agent     |\n                                       | (Claude/GPT/..) |\n                                       +-------+--------+\n                                               |\n                                  +------------+------------+\n                                  |            |            |\n                            +-----v---+  +----v----+ +-----v-----+\n                            | Shell   |  | Skills  | | Plugins   |\n                            | Tools   |  | Engine  | | MCP Bridge|\n                            +---------+  +---------+ +-----+-----+\n                                                           |\n                                                    +------v------+\n                                                    | MCP Servers |\n                                                    | (DevTools,  |\n                                                    |  DB, etc.)  |\n                                                    +-------------+\n```\n\n---\n\n## 安全模型\n\n**认证与授权**\n\n- 渠道允许列表 (`allowFrom`)：仅允许指定用户/群组交互\n- API 密钥通过环境变量替换 (`${ENV_VAR}`)，避免明文存储\n- 多 Auth Profile 支持优先级轮询、冷却与故障转移\n\n**工具执行安全**\n\n- 敏感操作 (文件写入、Shell 命令) 需用户确认\n- 支持 Docker 沙箱隔离；通过 `tools.alsoAllow` 控制工具白名单\n\n**数据保护**\n\n- 诊断输出自动脱敏密钥和 Token\n- 会话隔离：每个用户/对话独立上下文\n- 本地优先：数据不经过第三方中转服务器\n\n**Windows 安全**\n\n- 安装程序默认用户权限 (`PrivilegesRequired=lowest`)\n- 计划任务以当前用户身份运行，注册表操作仅限 `HKCU`\n\n---\n\n## 许可证\n\n[MIT License](https://github.com/itc-ou-shigou/winclaw/blob/main/LICENSE) -- Copyright (c) WinClaw Contributors\n","readmeFilename":"README.zh-CN.md"}