{"_id":"@chada007/openclaw-feishu","_rev":"8-a1b7da79f4cdca1b293807cbfc7169ab","name":"@chada007/openclaw-feishu","dist-tags":{"latest":"1.0.7"},"versions":{"1.0.0":{"name":"@chada007/openclaw-feishu","version":"1.0.0","keywords":[],"author":"","license":"MIT","_id":"@chada007/openclaw-feishu@1.0.0","maintainers":[{"name":"shygoly007","email":"sgl1226@gmail.com"}],"bin":{"openclaw":"openclaw.mjs"},"dist":{"shasum":"46519c8833d28056906f358b4a4e56d3981d6f45","tarball":"https://registry.npmjs.org/@chada007/openclaw-feishu/-/openclaw-feishu-1.0.0.tgz","fileCount":2181,"integrity":"sha512-fv+BwrM6RNc/4Ib3D+Y+1zI/SksGfiYWhTHvesbNWOAaOCUyi6dk+4k8J8J9ha2AoT/ES86Foc7DBLRT1MfAQQ==","signatures":[{"sig":"MEUCIQC8+18TQeVwF8zoeThZKRYfjPXbpKLu2fNsvkOJHgrK6wIgEhuJnaUHxfo7aDSei5mcWZQOTKkKyUiMJW6ERub2ljw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20460810},"main":"dist/index.js","type":"module","_from":"file:chada007-openclaw-feishu-1.0.0.tgz","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/OpenClaw.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./openclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./plugin-sdk/*":"./dist/plugin-sdk/*"},"scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware src test","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsc -p tsconfig.json --noEmit false && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts","start":"node scripts/run-node.mjs","format":"oxfmt --check src test","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'","test:ui":"pnpm --dir ui test","tui:dev":"OPENCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","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":"pnpm format:fix && oxlint --type-aware --fix src test","mac:open":"open dist/OpenClaw.app","openclaw":"node scripts/run-node.mjs","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'","test:live":"OPENCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write src test","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","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","postinstall":"node scripts/postinstall.js","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources","openclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","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","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","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","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","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":"shygoly007","email":"sgl1226@gmail.com"},"_resolved":"/private/var/folders/0k/z6f9wmjn1m78n4v_zxq52sy00000gn/T/840d6c42af3c305af085bd2ef244985f/chada007-openclaw-feishu-1.0.0.tgz","overrides":{"tar":"7.5.4"},"_integrity":"sha512-fv+BwrM6RNc/4Ib3D+Y+1zI/SksGfiYWhTHvesbNWOAaOCUyi6dk+4k8J8J9ha2AoT/ES86Foc7DBLRT1MfAQQ==","_npmVersion":"11.6.2","description":"OpenClaw Feishu Edition - Personal AI Assistant for Feishu","directories":{},"_nodeVersion":"25.2.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":"^9.1.0","dotenv":"^17.2.3","grammy":"^1.39.3","undici":"^7.19.2","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.530","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.9","@clack/prompts":"^1.0.0","@slack/web-api":"^7.13.0","playwright-core":"1.58.1","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.38","@mariozechner/pi-ai":"0.50.7","@mariozechner/pi-tui":"0.50.7","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.980.0","@larksuiteoapi/node-sdk":"^1.30.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.13.1","@mariozechner/pi-agent-core":"0.50.7","@mariozechner/pi-coding-agent":"0.50.7","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.27.0","ollama":"^0.6.3","oxlint":"^1.42.0","vitest":"^4.0.18","rolldown":"1.0.0-rc.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.1.0","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@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.20260130.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-feishu_1.0.0_1770016156934_0.005025224901413772","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@chada007/openclaw-feishu","version":"1.0.1","keywords":[],"author":"","license":"MIT","_id":"@chada007/openclaw-feishu@1.0.1","maintainers":[{"name":"shygoly007","email":"sgl1226@gmail.com"}],"bin":{"openclaw":"openclaw.mjs"},"dist":{"shasum":"fd1f6290335dd0b4716c26e9ff4d15eb6067365b","tarball":"https://registry.npmjs.org/@chada007/openclaw-feishu/-/openclaw-feishu-1.0.1.tgz","fileCount":2181,"integrity":"sha512-A7p00RFb9H2TZnOkM32an6ySckAOkfKk7oSuhPENnJAlUtz1i+KE0M7RtVvN2DCmr+dXqWm2O3WUIjm3MZQg3A==","signatures":[{"sig":"MEUCIQCgoHUO4UrxDYURZLojMimZn4VIWIg6MpdK+RIK7i6EUgIgaYqatg0+655MY+7GARWWye6YCMv4UEHRzb9nXRA49qg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20462487},"main":"dist/index.js","pnpm":{"overrides":{"tar":"7.5.4","@sinclair/typebox":"0.34.47"},"minimumReleaseAge":2880},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/OpenClaw.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./openclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./plugin-sdk/*":"./dist/plugin-sdk/*"},"gitHead":"c4755755ca86d77e3ba5a0c78d2354da3cc169be","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware src test","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsc -p tsconfig.json --noEmit false && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts","start":"node scripts/run-node.mjs","format":"oxfmt --check src test","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","test:ui":"pnpm --dir ui test","tui:dev":"OPENCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","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":"pnpm format:fix && oxlint --type-aware --fix src test","mac:open":"open dist/OpenClaw.app","openclaw":"node scripts/run-node.mjs","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'","test:live":"OPENCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write src test","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","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","postinstall":"node scripts/postinstall.js","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources","openclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","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","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","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","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","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":"shygoly007","email":"sgl1226@gmail.com"},"overrides":{"tar":"7.5.4"},"_npmVersion":"11.6.2","description":"OpenClaw Feishu Edition - Personal AI Assistant for Feishu","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.4","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":"^9.1.0","dotenv":"^17.2.3","undici":"^7.19.2","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.530","sqlite-vec":"0.1.7-alpha.2","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.14.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.9","@clack/prompts":"^1.0.0","playwright-core":"1.58.1","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","@mariozechner/pi-ai":"0.50.7","@mariozechner/pi-tui":"0.50.7","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.980.0","@agentclientprotocol/sdk":"0.13.1","@mariozechner/pi-agent-core":"0.50.7","@mariozechner/pi-coding-agent":"0.50.7"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.27.0","ollama":"^0.6.3","oxlint":"^1.42.0","vitest":"^4.0.18","rolldown":"1.0.0-rc.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.1.0","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@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.20260130.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"grammy":"^1.39.3","@slack/bolt":"^4.6.0","signal-utils":"^0.21.1","@line/bot-sdk":"^10.6.0","@slack/web-api":"^7.13.0","@grammyjs/runner":"^2.0.3","discord-api-types":"^0.38.38","@larksuiteoapi/node-sdk":"^1.30.0","@whiskeysockets/baileys":"7.0.0-rc.9","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-feishu_1.0.1_1770022313605_0.3630278242644791","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@chada007/openclaw-feishu","version":"1.0.2","keywords":[],"author":"","license":"MIT","_id":"@chada007/openclaw-feishu@1.0.2","maintainers":[{"name":"shygoly007","email":"sgl1226@gmail.com"}],"bin":{"openclaw":"openclaw.mjs","openclaw-feishu":"openclaw.mjs"},"dist":{"shasum":"4956caf796a97ec9359672c8952bbe1f3e0d112f","tarball":"https://registry.npmjs.org/@chada007/openclaw-feishu/-/openclaw-feishu-1.0.2.tgz","fileCount":2181,"integrity":"sha512-ddQAvAOWZv0cYPArStOdj98UMAtYxHp1TlTn3YZCsXne7ynTPBOK0MgfilrZi2vxu0cJkrKamIstGoD+LfLprg==","signatures":[{"sig":"MEUCIQC4mAdEWdW12mgZOhNAFFfB583L1nRyVWI9NH8KjEW+RwIgHR6n//k0RN2p+apGT6/8X4ZBNFH99phJxQx2DV9eGrM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20462671},"main":"dist/index.js","pnpm":{"overrides":{"tar":"7.5.4","@sinclair/typebox":"0.34.47"},"minimumReleaseAge":2880},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/OpenClaw.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./openclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./plugin-sdk/*":"./dist/plugin-sdk/*"},"gitHead":"aad0f2820851a576e022c2518d317df420973e6d","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware src test","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsc -p tsconfig.json --noEmit false && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts","start":"node scripts/run-node.mjs","format":"oxfmt --check src test","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","test:ui":"pnpm --dir ui test","tui:dev":"OPENCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","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":"pnpm format:fix && oxlint --type-aware --fix src test","mac:open":"open dist/OpenClaw.app","openclaw":"node scripts/run-node.mjs","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'","test:live":"OPENCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write src test","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","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","postinstall":"node scripts/postinstall.js","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources","openclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","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","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","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","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","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":"shygoly007","email":"sgl1226@gmail.com"},"overrides":{"tar":"7.5.4"},"_npmVersion":"11.6.2","description":"OpenClaw Feishu Edition - Personal AI Assistant for Feishu","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.4","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":"^9.1.0","dotenv":"^17.2.3","undici":"^7.19.2","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.530","sqlite-vec":"0.1.7-alpha.2","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.14.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.9","@clack/prompts":"^1.0.0","playwright-core":"1.58.1","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","@mariozechner/pi-ai":"0.50.7","@mariozechner/pi-tui":"0.50.7","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.980.0","@agentclientprotocol/sdk":"0.13.1","@mariozechner/pi-agent-core":"0.50.7","@mariozechner/pi-coding-agent":"0.50.7"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.27.0","ollama":"^0.6.3","oxlint":"^1.42.0","vitest":"^4.0.18","rolldown":"1.0.0-rc.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.1.0","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@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.20260130.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"grammy":"^1.39.3","@slack/bolt":"^4.6.0","signal-utils":"^0.21.1","@line/bot-sdk":"^10.6.0","@slack/web-api":"^7.13.0","@grammyjs/runner":"^2.0.3","discord-api-types":"^0.38.38","@larksuiteoapi/node-sdk":"^1.30.0","@whiskeysockets/baileys":"7.0.0-rc.9","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-feishu_1.0.2_1770023209444_0.3166995875437957","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@chada007/openclaw-feishu","version":"1.0.3","keywords":[],"author":"","license":"MIT","_id":"@chada007/openclaw-feishu@1.0.3","maintainers":[{"name":"shygoly007","email":"sgl1226@gmail.com"}],"bin":{"openclaw":"openclaw.mjs","openclaw-feishu":"openclaw.mjs"},"dist":{"shasum":"5cafe25711aaf8e3c781c8000b32a8ff6ff67991","tarball":"https://registry.npmjs.org/@chada007/openclaw-feishu/-/openclaw-feishu-1.0.3.tgz","fileCount":2202,"integrity":"sha512-J9TRCZHeX4BsXxhJDcWNLC6+OxVU3jJ2UE6ZwQvlYdjfsd9tdc3liMqt8VlVxApLvAtRdW78s0EQUHw6ha6/tQ==","signatures":[{"sig":"MEUCIQC6BG1Ny7DrQG4+I2LRGciMwoM9rKoPJb1so2TUk5hZ2gIgRyBG6QJrFClkOkyOJgxvaPIv9ypa3Zskra71xy46YNs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20585086},"main":"dist/index.js","pnpm":{"overrides":{"tar":"7.5.4","@sinclair/typebox":"0.34.47"},"minimumReleaseAge":2880},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/OpenClaw.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./openclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./plugin-sdk/*":"./dist/plugin-sdk/*"},"gitHead":"9596b6ab8b843387fb9b484f1ad0694902a9959f","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware src test","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsc -p tsconfig.json --noEmit false && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts","start":"node scripts/run-node.mjs","format":"oxfmt --check src test","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","test:ui":"pnpm --dir ui test","tui:dev":"OPENCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","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":"pnpm format:fix && oxlint --type-aware --fix src test","mac:open":"open dist/OpenClaw.app","openclaw":"node scripts/run-node.mjs","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'","test:live":"OPENCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write src test","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","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","postinstall":"node scripts/postinstall.js","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources","openclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","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","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","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","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","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":"shygoly007","email":"sgl1226@gmail.com"},"overrides":{"tar":"7.5.4"},"_npmVersion":"11.6.2","description":"OpenClaw Feishu Edition - Personal AI Assistant for Feishu","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.4","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":"^9.1.0","dotenv":"^17.2.3","undici":"^7.19.2","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.530","sqlite-vec":"0.1.7-alpha.2","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.14.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.9","@clack/prompts":"^1.0.0","playwright-core":"1.58.1","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","@mariozechner/pi-ai":"0.50.7","@mariozechner/pi-tui":"0.50.7","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.980.0","@agentclientprotocol/sdk":"0.13.1","@mariozechner/pi-agent-core":"0.50.7","@mariozechner/pi-coding-agent":"0.50.7"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.27.0","ollama":"^0.6.3","oxlint":"^1.42.0","vitest":"^4.0.18","rolldown":"1.0.0-rc.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.1.0","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@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.20260130.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"grammy":"^1.39.3","@slack/bolt":"^4.6.0","signal-utils":"^0.21.1","@line/bot-sdk":"^10.6.0","@slack/web-api":"^7.13.0","@grammyjs/runner":"^2.0.3","discord-api-types":"^0.38.38","@larksuiteoapi/node-sdk":"^1.30.0","@whiskeysockets/baileys":"7.0.0-rc.9","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-feishu_1.0.3_1770024189676_0.010495907884352729","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@chada007/openclaw-feishu","version":"1.0.4","keywords":[],"author":"","license":"MIT","_id":"@chada007/openclaw-feishu@1.0.4","maintainers":[{"name":"shygoly007","email":"sgl1226@gmail.com"}],"bin":{"openclaw":"openclaw.mjs","openclaw-feishu":"openclaw.mjs"},"dist":{"shasum":"3f4b0db325a533881c39d01804dc6c8ce26df93d","tarball":"https://registry.npmjs.org/@chada007/openclaw-feishu/-/openclaw-feishu-1.0.4.tgz","fileCount":2202,"integrity":"sha512-+F7hwe3SynQEXgvT30rdWbSu/zFpsrLN/W8W4x7cYA06ohLCRm2b3zLB0KE7KwOiYpwH4APzLJS269jrWhNYYQ==","signatures":[{"sig":"MEQCIAYgJuVtRmZi7whjJ8i1/dIUPiI19TpNxiTm9RudGIEgAiBJ5VupquTPnEpZ23A78OrvA/8ns6xhR2ByHYuq++cQVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20585203},"main":"dist/index.js","pnpm":{"overrides":{"tar":"7.5.4","@sinclair/typebox":"0.34.47"},"minimumReleaseAge":2880},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/OpenClaw.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./openclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./plugin-sdk/*":"./dist/plugin-sdk/*"},"gitHead":"176a273fb310866f3e12730dfb1c017e9eb43525","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware src test","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsc -p tsconfig.json --noEmit false && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts","start":"node scripts/run-node.mjs","format":"oxfmt --check src test","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","test:ui":"pnpm --dir ui test","tui:dev":"OPENCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","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":"pnpm format:fix && oxlint --type-aware --fix src test","mac:open":"open dist/OpenClaw.app","openclaw":"node scripts/run-node.mjs","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'","test:live":"OPENCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write src test","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","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","postinstall":"node scripts/postinstall.js","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources","openclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","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","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","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","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","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":"shygoly007","email":"sgl1226@gmail.com"},"overrides":{"tar":"7.5.4"},"_npmVersion":"11.6.2","description":"OpenClaw Feishu Edition - Personal AI Assistant for Feishu","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.4","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":"^9.1.0","dotenv":"^17.2.3","undici":"^7.19.2","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.530","sqlite-vec":"0.1.7-alpha.2","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.14.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.9","@clack/prompts":"^1.0.0","playwright-core":"1.58.1","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","@mariozechner/pi-ai":"0.50.7","@mariozechner/pi-tui":"0.50.7","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.980.0","@agentclientprotocol/sdk":"0.13.1","@mariozechner/pi-agent-core":"0.50.7","@mariozechner/pi-coding-agent":"0.50.7"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.27.0","ollama":"^0.6.3","oxlint":"^1.42.0","vitest":"^4.0.18","rolldown":"1.0.0-rc.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.1.0","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@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.20260130.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"grammy":"^1.39.3","@slack/bolt":"^4.6.0","signal-utils":"^0.21.1","@line/bot-sdk":"^10.6.0","@slack/web-api":"^7.13.0","@grammyjs/runner":"^2.0.3","discord-api-types":"^0.38.38","@larksuiteoapi/node-sdk":"^1.30.0","@whiskeysockets/baileys":"7.0.0-rc.9","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-feishu_1.0.4_1770025323320_0.5129640962839199","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@chada007/openclaw-feishu","version":"1.0.5","keywords":[],"author":"","license":"MIT","_id":"@chada007/openclaw-feishu@1.0.5","maintainers":[{"name":"shygoly007","email":"sgl1226@gmail.com"}],"bin":{"openclaw":"openclaw.mjs","openclaw-feishu":"openclaw.mjs"},"dist":{"shasum":"ff31b727ca8be8b8b9828d9c0982d25377988e9c","tarball":"https://registry.npmjs.org/@chada007/openclaw-feishu/-/openclaw-feishu-1.0.5.tgz","fileCount":2202,"integrity":"sha512-lQbA9ImMuy1/0UuEftF6s+WAuqAx3BePsHjPZmegBkeiImZDhrDEDnTTXUaOr484n/cC4kWkXJNNp+fgFSgKHg==","signatures":[{"sig":"MEYCIQD78zErheQw5k7xIxSF1Q43nbqebfO735QPq2Jt44C5HQIhAJS90T6FpF6zLxxDFG/XdN4d1HZEdh44n8z5n6Dwf6X2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20585318},"main":"dist/index.js","pnpm":{"overrides":{"tar":"7.5.4","@sinclair/typebox":"0.34.47"},"minimumReleaseAge":2880},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/OpenClaw.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./openclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./plugin-sdk/*":"./dist/plugin-sdk/*"},"gitHead":"4478d53ac7ce95db6893eadfa7b81dd99a429cb6","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware src test","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsc -p tsconfig.json --noEmit false && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts","start":"node scripts/run-node.mjs","format":"oxfmt --check src test","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","test:ui":"pnpm --dir ui test","tui:dev":"OPENCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","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":"pnpm format:fix && oxlint --type-aware --fix src test","mac:open":"open dist/OpenClaw.app","openclaw":"node scripts/run-node.mjs","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'","test:live":"OPENCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write src test","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","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","postinstall":"node scripts/postinstall.js","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources","openclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","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","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","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","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","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":"shygoly007","email":"sgl1226@gmail.com"},"overrides":{"tar":"7.5.4"},"_npmVersion":"11.6.2","description":"OpenClaw Feishu Edition - Personal AI Assistant for Feishu","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.4","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":"^9.1.0","dotenv":"^17.2.3","undici":"^7.19.2","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.530","sqlite-vec":"0.1.7-alpha.2","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.14.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.9","@clack/prompts":"^1.0.0","playwright-core":"1.58.1","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","@mariozechner/pi-ai":"0.50.7","@mariozechner/pi-tui":"0.50.7","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.980.0","@agentclientprotocol/sdk":"0.13.1","@mariozechner/pi-agent-core":"0.50.7","@mariozechner/pi-coding-agent":"0.50.7"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.27.0","ollama":"^0.6.3","oxlint":"^1.42.0","vitest":"^4.0.18","rolldown":"1.0.0-rc.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.1.0","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@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.20260130.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"grammy":"^1.39.3","@slack/bolt":"^4.6.0","signal-utils":"^0.21.1","@line/bot-sdk":"^10.6.0","@slack/web-api":"^7.13.0","@grammyjs/runner":"^2.0.3","discord-api-types":"^0.38.38","@larksuiteoapi/node-sdk":"^1.30.0","@whiskeysockets/baileys":"7.0.0-rc.9","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-feishu_1.0.5_1770026686234_0.7579745549007615","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@chada007/openclaw-feishu","version":"1.0.6","keywords":[],"author":"","license":"MIT","_id":"@chada007/openclaw-feishu@1.0.6","maintainers":[{"name":"shygoly007","email":"sgl1226@gmail.com"}],"bin":{"openclaw":"openclaw.mjs","openclaw-feishu":"openclaw.mjs"},"dist":{"shasum":"7366ea14b8d2c8b4d745db1838031c6120c49d5d","tarball":"https://registry.npmjs.org/@chada007/openclaw-feishu/-/openclaw-feishu-1.0.6.tgz","fileCount":2202,"integrity":"sha512-CNciH5W7mcAQcmz+EJ5eZxPMWzqhJzA1Z/ahf5w5sWjYhBur75q31HYknMQhwvOzRM5zm9OoArruGR3GhxgB+w==","signatures":[{"sig":"MEUCIQDds2MxPdpuVkHgWR5jEviREQu+cp2In+PIhLuKlmEaNgIgbm0Hqf+cGOTQHcf7/WGRuLWIu3IsHdsetgkfmHOsmJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20586080},"main":"dist/index.js","pnpm":{"overrides":{"tar":"7.5.4","@sinclair/typebox":"0.34.47"},"minimumReleaseAge":2880},"type":"module","vitest":{"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/OpenClaw.app/**"],"include":["src/**/*.test.ts"],"coverage":{"exclude":["src/**/*.test.ts"],"include":["src/**/*.ts"],"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"branches":70,"functions":70,"statements":70}}},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./openclaw.mjs","./plugin-sdk":"./dist/plugin-sdk/index.js","./plugin-sdk/*":"./dist/plugin-sdk/*"},"gitHead":"e3fe20655f49aeb4b98d7367a756498bdffd5b61","scripts":{"dev":"node scripts/run-node.mjs","tui":"node scripts/run-node.mjs tui","lint":"oxlint --type-aware src test","test":"node scripts/test-parallel.mjs","build":"pnpm canvas:a2ui:bundle && tsc -p tsconfig.json --noEmit false && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts","start":"node scripts/run-node.mjs","format":"oxfmt --check src test","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","test:ui":"pnpm --dir ui test","tui:dev":"OPENCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","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":"pnpm format:fix && oxlint --type-aware --fix src test","mac:open":"open dist/OpenClaw.app","openclaw":"node scripts/run-node.mjs","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'","test:live":"OPENCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write src test","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","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","postinstall":"node scripts/postinstall.js","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources","openclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","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","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","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","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","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":"shygoly007","email":"sgl1226@gmail.com"},"overrides":{"tar":"7.5.4"},"_npmVersion":"11.6.2","description":"OpenClaw Feishu Edition - Personal AI Assistant for Feishu","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.19.0","ajv":"^8.17.1","tar":"7.5.4","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":"^9.1.0","dotenv":"^17.2.3","undici":"^7.19.2","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.530","sqlite-vec":"0.1.7-alpha.2","markdown-it":"^14.1.0","osc-progress":"^0.3.0","@buape/carbon":"0.14.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.9","@clack/prompts":"^1.0.0","playwright-core":"1.58.1","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","@mariozechner/pi-ai":"0.50.7","@mariozechner/pi-tui":"0.50.7","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.980.0","@agentclientprotocol/sdk":"0.13.1","@mariozechner/pi-agent-core":"0.50.7","@mariozechner/pi-coding-agent":"0.50.7"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"lit":"^3.3.2","tsx":"^4.21.0","oxfmt":"0.27.0","ollama":"^0.6.3","oxlint":"^1.42.0","vitest":"^4.0.18","rolldown":"1.0.0-rc.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.1.0","@lit/context":"^1.1.6","@types/express":"^5.0.6","@grammyjs/types":"^3.23.0","oxlint-tsgolint":"^0.11.4","@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.20260130.1"},"peerDependencies":{"node-llama-cpp":"3.15.1","@napi-rs/canvas":"^0.1.89"},"optionalDependencies":{"grammy":"^1.39.3","@slack/bolt":"^4.6.0","signal-utils":"^0.21.1","@line/bot-sdk":"^10.6.0","@slack/web-api":"^7.13.0","@grammyjs/runner":"^2.0.3","discord-api-types":"^0.38.38","@larksuiteoapi/node-sdk":"^1.30.0","@whiskeysockets/baileys":"7.0.0-rc.9","@grammyjs/transformer-throttler":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-feishu_1.0.6_1770028420921_0.9145665344549099","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@chada007/openclaw-feishu","version":"1.0.7","description":"OpenClaw Feishu Edition - Personal AI Assistant for Feishu","type":"module","main":"dist/index.js","exports":{".":"./dist/index.js","./plugin-sdk":"./dist/plugin-sdk/index.js","./plugin-sdk/*":"./dist/plugin-sdk/*","./cli-entry":"./openclaw.mjs"},"bin":{"openclaw":"openclaw.mjs","openclaw-feishu":"openclaw.mjs"},"scripts":{"dev":"node scripts/run-node.mjs","postinstall":"node scripts/postinstall.js","prepack":"pnpm build && pnpm ui:build","docs:list":"node scripts/docs-list.js","docs:bin":"node scripts/build-docs-list.mjs","docs:dev":"cd docs && mint dev","docs:build":"cd docs && pnpm dlx --reporter append-only mint broken-links","build":"pnpm canvas:a2ui:bundle && tsc -p tsconfig.json --noEmit false && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/write-build-info.ts","plugins:sync":"node --import tsx scripts/sync-plugin-versions.ts","release:check":"node --import tsx scripts/release-check.ts","ui:install":"node scripts/ui.js install","ui:dev":"node scripts/ui.js dev","ui:build":"node scripts/ui.js build","start":"node scripts/run-node.mjs","openclaw":"node scripts/run-node.mjs","gateway:watch":"node scripts/watch-node.mjs gateway --force","gateway:dev":"OPENCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway","gateway:dev:reset":"OPENCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset","tui":"node scripts/run-node.mjs tui","tui:dev":"OPENCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui","openclaw:rpc":"node scripts/run-node.mjs agent --mode rpc --json","moltbot:rpc":"node scripts/run-node.mjs agent --mode rpc --json","ios:gen":"cd apps/ios && xcodegen generate","ios:open":"cd apps/ios && xcodegen generate && open OpenClaw.xcodeproj","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'","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'","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.openclaw.android/.MainActivity","android:test":"cd apps/android && ./gradlew :app:testDebugUnitTest","mac:restart":"bash scripts/restart-mac.sh","mac:package":"bash scripts/package-mac-app.sh","mac:open":"open dist/OpenClaw.app","lint":"oxlint --type-aware src test","lint:swift":"swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)","lint:all":"pnpm lint && pnpm lint:swift","lint:fix":"pnpm format:fix && oxlint --type-aware --fix src test","format":"oxfmt --check src test","format:swift":"swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources","format:all":"pnpm format && pnpm format:swift","format:fix":"oxfmt --write src test","test":"node scripts/test-parallel.mjs","test:watch":"vitest","test:ui":"pnpm --dir ui test","test:force":"node --import tsx scripts/test-force.ts","test:coverage":"vitest run --coverage","test:e2e":"vitest run --config vitest.e2e.config.ts","test:live":"OPENCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts","test:docker:onboard":"bash scripts/e2e/onboard-docker.sh","test:docker:gateway-network":"bash scripts/e2e/gateway-network-docker.sh","test:docker:live-models":"bash scripts/test-live-models-docker.sh","test:docker:live-gateway":"bash scripts/test-live-gateway-models-docker.sh","test:docker:qr":"bash scripts/e2e/qr-import-docker.sh","test:docker:doctor-switch":"bash scripts/e2e/doctor-install-switch-docker.sh","test:docker:plugins":"bash scripts/e2e/plugins-docker.sh","test:docker:cleanup":"bash scripts/test-cleanup-docker.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","test:all":"pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all","test:install:e2e":"bash scripts/test-install-sh-e2e-docker.sh","test:install:smoke":"bash scripts/test-install-sh-docker.sh","test:install:e2e:openai":"OPENCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh","test:install:e2e:anthropic":"OPENCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh","protocol:gen":"node --import tsx scripts/protocol-gen.ts","protocol:gen:swift":"node --import tsx scripts/protocol-gen-swift.ts","protocol:check":"pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/OpenClawProtocol/GatewayModels.swift","canvas:a2ui:bundle":"bash scripts/bundle-a2ui.sh","check:loc":"node --import tsx scripts/check-ts-max-loc.ts --max 500"},"keywords":[],"author":"","license":"MIT","engines":{"node":">=22.12.0"},"packageManager":"pnpm@10.23.0","dependencies":{"@agentclientprotocol/sdk":"0.13.1","@aws-sdk/client-bedrock":"^3.980.0","@buape/carbon":"0.14.0","@clack/prompts":"^1.0.0","@homebridge/ciao":"^1.3.4","@lydell/node-pty":"1.2.0-beta.3","@mariozechner/pi-agent-core":"0.50.7","@mariozechner/pi-ai":"0.50.7","@mariozechner/pi-coding-agent":"0.50.7","@mariozechner/pi-tui":"0.50.7","@mozilla/readability":"^0.6.0","@sinclair/typebox":"0.34.48","ajv":"^8.17.1","chalk":"^5.6.2","chokidar":"^5.0.0","cli-highlight":"^2.1.11","commander":"^14.0.3","croner":"^9.1.0","dotenv":"^17.2.3","express":"^5.2.1","file-type":"^21.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.0","node-edge-tts":"^1.2.9","osc-progress":"^0.3.0","pdfjs-dist":"^5.4.530","playwright-core":"1.58.1","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","sharp":"^0.34.5","sqlite-vec":"0.1.7-alpha.2","tar":"7.5.4","tslog":"^4.10.2","undici":"^7.19.2","ws":"^8.19.0","yaml":"^2.8.2","zod":"^4.3.6"},"optionalDependencies":{"@grammyjs/runner":"^2.0.3","@grammyjs/transformer-throttler":"^1.2.1","@larksuiteoapi/node-sdk":"^1.30.0","@line/bot-sdk":"^10.6.0","@slack/bolt":"^4.6.0","@slack/web-api":"^7.13.0","@whiskeysockets/baileys":"7.0.0-rc.9","discord-api-types":"^0.38.38","grammy":"^1.39.3","signal-utils":"^0.21.1"},"peerDependencies":{"@napi-rs/canvas":"^0.1.89","node-llama-cpp":"3.15.1"},"devDependencies":{"@grammyjs/types":"^3.23.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.1.0","@types/proper-lockfile":"^4.1.4","@types/qrcode-terminal":"^0.12.2","@types/ws":"^8.18.1","@typescript/native-preview":"7.0.0-dev.20260130.1","@vitest/coverage-v8":"^4.0.18","lit":"^3.3.2","ollama":"^0.6.3","oxfmt":"0.27.0","oxlint":"^1.42.0","oxlint-tsgolint":"^0.11.4","rolldown":"1.0.0-rc.2","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^4.0.18"},"overrides":{"tar":"7.5.4"},"pnpm":{"minimumReleaseAge":2880,"overrides":{"@sinclair/typebox":"0.34.47","tar":"7.5.4"}},"vitest":{"coverage":{"provider":"v8","reporter":["text","lcov"],"thresholds":{"lines":70,"functions":70,"branches":70,"statements":70},"include":["src/**/*.ts"],"exclude":["src/**/*.test.ts"]},"include":["src/**/*.test.ts"],"exclude":["dist/**","apps/macos/**","apps/macos/.build/**","**/vendor/**","apps/macos/.build/**","dist/OpenClaw.app/**"]},"gitHead":"2bc800b517bad4b7fa363607bc1e8da05e54e0bb","_id":"@chada007/openclaw-feishu@1.0.7","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-tfMaIBW03WEZmj3lja5A8+c0TpPzlxn9DZpmU5gd2uZmJ1l7ExS5znkkno1Ku0AWrqYoNAUNQRHDAxwNXUXJFg==","shasum":"c85ed7a15598457e1995f805e47e375fadd2757f","tarball":"https://registry.npmjs.org/@chada007/openclaw-feishu/-/openclaw-feishu-1.0.7.tgz","fileCount":2202,"unpackedSize":20586232,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCnQME1ufuRTbGbdt4s9d/Q0lH3UUK1n6ZtndpEpwHEjgIgOXJGIkoI8oUfAUrYG4dh7TA09OnWC+Kk/uF4Azx/k7o="}]},"_npmUser":{"name":"shygoly007","email":"sgl1226@gmail.com"},"directories":{},"maintainers":[{"name":"shygoly007","email":"sgl1226@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-feishu_1.0.7_1770029104712_0.2884007665674453"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-02T07:09:16.871Z","modified":"2026-02-02T10:45:05.436Z","1.0.0":"2026-02-02T07:09:17.431Z","1.0.1":"2026-02-02T08:51:54.137Z","1.0.2":"2026-02-02T09:06:49.919Z","1.0.3":"2026-02-02T09:23:10.155Z","1.0.4":"2026-02-02T09:42:03.807Z","1.0.5":"2026-02-02T10:04:46.695Z","1.0.6":"2026-02-02T10:33:41.443Z","1.0.7":"2026-02-02T10:45:05.236Z"},"license":"MIT","keywords":[],"description":"OpenClaw Feishu Edition - Personal AI Assistant for Feishu","maintainers":[{"name":"shygoly007","email":"sgl1226@gmail.com"}],"readme":"# 🦞 OpenClaw 飞书版 — 个人 AI 助手\n\n<p align=\"center\">\n    <picture>\n        <source media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/openclaw/openclaw/main/docs/assets/openclaw-logo-text-dark.png\">\n        <img src=\"https://raw.githubusercontent.com/openclaw/openclaw/main/docs/assets/openclaw-logo-text.png\" alt=\"OpenClaw\" width=\"500\">\n    </picture>\n</p>\n\n<p align=\"center\">\n  <strong>飞书专用版本 | Feishu Specialized Edition</strong>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/shygoly/openclaw-feishu/actions/workflows/ci.yml?branch=main\"><img src=\"https://img.shields.io/github/actions/workflow/status/shygoly/openclaw-feishu/ci.yml?branch=main&style=for-the-badge\" alt=\"CI status\"></a>\n  <a href=\"https://github.com/shygoly/openclaw-feishu/releases\"><img src=\"https://img.shields.io/github/v/release/shygoly/openclaw-feishu?include_prereleases&style=for-the-badge\" alt=\"GitHub release\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge\" alt=\"MIT License\"></a>\n</p>\n\n## 项目介绍\n\n**OpenClaw 飞书版** 是基于 [OpenClaw](https://github.com/openclaw/openclaw) 的专用变体，专门为飞书（Feishu）优化。\n\n这个版本：\n- ✅ **飞书预配置** — 开箱即用，无需复杂配置\n- ✅ **精简专注** — 移除了其他消息渠道，只保留飞书集成\n- ✅ **完整功能** — 保留 OpenClaw 的所有核心 AI 助手功能\n- ✅ **本地运行** — 在自己的设备上运行，完全私密\n\n### 核心功能\n\n- 🤖 **AI 助手** — 通过飞书与 Claude/GPT 对话\n- 🎯 **智能回复** — 支持长上下文、思考链、工具调用\n- 🔌 **可扩展** — 支持自定义技能和工具集成\n- 🎨 **Canvas 渲染** — 实时交互式画布支持\n- 🔐 **隐私优先** — 所有数据本地处理，无云存储\n\n## 快速开始\n\n### 系统要求\n\n- **Node.js** ≥ 22\n- **macOS / Linux / Windows (WSL2)**\n\n### 安装\n\n```bash\n# 克隆项目\ngit clone https://github.com/shygoly/openclaw-feishu.git\ncd openclaw-feishu\n\n# 安装依赖\npnpm install\n\n# 构建项目\npnpm build\n\n# 运行初始化向导\npnpm openclaw onboard --install-daemon\n```\n\n### 配置飞书\n\n1. **获取飞书凭证**\n   - 访问 [飞书开发者平台](https://open.feishu.cn/)\n   - 创建应用并获取 App ID 和 App Secret\n\n2. **配置 OpenClaw**\n   ```bash\n   openclaw config set feishu.appId \"YOUR_APP_ID\"\n   openclaw config set feishu.appSecret \"YOUR_APP_SECRET\"\n   ```\n\n3. **启动网关**\n   ```bash\n   openclaw gateway --port 18789\n   ```\n\n### 使用示例\n\n```bash\n# 通过飞书发送消息\nopenclaw message send --to \"@user\" --message \"Hello from OpenClaw\"\n\n# 与 AI 助手对话\nopenclaw agent --message \"帮我总结一下今天的会议\" --thinking high\n\n# 查看频道状态\nopenclaw channels status --probe\n```\n\n## 开发\n\n### 项目结构\n\n```\nopenclaw-feishu/\n├── src/\n│   ├── feishu/           # 飞书集成核心代码\n│   ├── channels/         # 频道管理\n│   ├── cli/              # CLI 命令\n│   ├── commands/         # 命令实现\n│   └── ...\n├── extensions/\n│   └── feishu/           # 飞书扩展插件\n├── docs/\n│   └── channels/\n│       └── feishu.md     # 飞书文档\n└── package.json\n```\n\n### 常用命令\n\n```bash\n# 类型检查和构建\npnpm build\n\n# 运行测试\npnpm test\n\n# 代码检查和格式化\npnpm lint\npnpm format\n\n# 开发模式（自动重载）\npnpm gateway:watch\n\n# 运行 CLI\npnpm openclaw <command>\n```\n\n## 配置\n\n### 基本配置\n\n编辑 `~/.openclaw/config.json` 或使用 CLI：\n\n```bash\n# 设置 AI 模型\nopenclaw config set model.provider anthropic\nopenclaw config set model.name claude-opus-4-5\n\n# 设置飞书\nopenclaw config set feishu.appId \"YOUR_APP_ID\"\nopenclaw config set feishu.appSecret \"YOUR_APP_SECRET\"\n```\n\n### 环境变量\n\n```bash\n# 飞书配置\nexport FEISHU_APP_ID=\"your_app_id\"\nexport FEISHU_APP_SECRET=\"your_app_secret\"\n\n# AI 模型\nexport ANTHROPIC_API_KEY=\"your_api_key\"\n# 或\nexport OPENAI_API_KEY=\"your_api_key\"\n```\n\n## 文档\n\n- 📖 [飞书集成文档](./docs/channels/feishu.md)\n- 🔧 [配置指南](https://docs.openclaw.ai/configuration)\n- 🚀 [部署指南](https://docs.openclaw.ai/install/docker)\n- 💡 [常见问题](https://docs.openclaw.ai/start/faq)\n\n## 支持的 AI 模型\n\n### Anthropic\n- Claude 3.5 Sonnet\n- Claude 3.5 Haiku\n- Claude Opus 4.5\n\n### OpenAI\n- GPT-4o\n- GPT-4 Turbo\n- GPT-3.5 Turbo\n\n## 故障排除\n\n### 飞书连接失败\n\n```bash\n# 检查飞书配置\nopenclaw config get feishu\n\n# 查看详细日志\nopenclaw channels status --probe\n\n# 运行诊断\nopenclaw doctor\n```\n\n### 网关无法启动\n\n```bash\n# 检查端口占用\nlsof -i :18789\n\n# 查看日志\ntail -f ~/.openclaw/logs/gateway.log\n\n# 重启网关\npkill -f openclaw-gateway\nopenclaw gateway --port 18789 --verbose\n```\n\n## 许可证\n\nMIT License — 详见 [LICENSE](./LICENSE)\n\n## 致谢\n\n- 基于 [OpenClaw](https://github.com/openclaw/openclaw) 项目\n- 感谢所有贡献者和社区支持\n\n## 相关链接\n\n- 🌐 [OpenClaw 官网](https://openclaw.ai)\n- 📚 [OpenClaw 文档](https://docs.openclaw.ai)\n- 💬 [Discord 社区](https://discord.gg/clawd)\n- 🐛 [问题反馈](https://github.com/shygoly/openclaw-feishu/issues)\n\n---\n\n**OpenClaw 飞书版** — 在飞书上运行你自己的 AI 助手 🚀\n","readmeFilename":"README.zh.md"}