{"_id":"opencode-bridge","_rev":"27-d35b875e88f8dda634a7991f6d0a112f","name":"opencode-bridge","dist-tags":{"beta":"2.9.53","latest":"3.1.5"},"versions":{"2.9.0-beta":{"name":"opencode-bridge","version":"2.9.0-beta","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.0-beta","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"ff0963c2e060e0eeb275054af91c71384016624c","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.0-beta.tgz","fileCount":237,"integrity":"sha512-rumI4R6q5CYUiQ3ujV/0GEX9oap970r2iEIgNvMfqj3v3/0f1EqnrJAiSPymfYKkM7VFVch2+6cX5MhMS3YKfA==","signatures":[{"sig":"MEQCIHsQHUlYcvc6T4rclbavC25+miZAZVymjplAt4M3h3eAAiAm7TRRz8Fao31xnMeJYCnA2w1V7s2/4EwRWiDf2s5UQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1706324},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"28469b3f0b63894057c59222c2085f1e893fcf2b","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","pack:check":"npm pack --dry-run","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.11.1","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.12.0","dependencies":{"dotenv":"^16.4.5","node-cron":"^4.2.1","discord.js":"^14.25.1","@opencode-ai/sdk":"latest","@larksuiteoapi/node-sdk":"^1.36.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","typescript":"^5.6.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.0-beta_1773380626507_0.19174553028424435","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"opencode-bridge","version":"2.9.0","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.0","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"cda3d2193d08879d46dcc23a1e3d65bfa92574ea","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.0.tgz","fileCount":237,"integrity":"sha512-07u8sHV/pKs3dw5EdR017PwH3qWvxjJgK81qHwiGvcPzKcw/05zngkUCmztyreM1wBHdLJKkaHW9iHq8H2SbuQ==","signatures":[{"sig":"MEUCIHkjDsl+UY+LQWoMU2aHk5rg7PFVYKwYtyZDKlM4RhXvAiEAt8VmZ17JkRAUNYkMv007sWyHJsspsR6BF6S+QaTm6vE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1708047},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"e3be5db1b54b3ba8c9571d1e8da6121eac372dc2","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","pack:check":"npm pack --dry-run","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.11.1","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.12.0","dependencies":{"dotenv":"^16.4.5","node-cron":"^4.2.1","discord.js":"^14.25.1","@opencode-ai/sdk":"latest","@larksuiteoapi/node-sdk":"^1.36.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","typescript":"^5.6.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.0_1773551271672_0.8234339961061865","host":"s3://npm-registry-packages-npm-production"}},"2.9.1":{"name":"opencode-bridge","version":"2.9.1","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.1","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"2240288d748365852770241bd75c768ebef2a029","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.1.tgz","fileCount":245,"integrity":"sha512-ONg4y/dOG4g3Vpe0OG98VHglKyKQr22MmptGQMce+DGGgwjH0UIs114fz2b8yAADeJUj79hspUvJ7JvPea73Ug==","signatures":[{"sig":"MEYCIQD3td6LBt40e7uvGUVsfNZ0isc6Bi1qJFlymuzYdxb6AgIhALLYl1/3kICrth7hnx5YFdHH9J2QpwHFnUclQOVe6fQI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1683061},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"4ff493b070173b3371f1655b3c51c9ae0a12d294","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","pack:check":"npm pack --dry-run","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","node-cron":"^4.2.1","discord.js":"^14.25.1","@opencode-ai/sdk":"latest","@larksuiteoapi/node-sdk":"^1.36.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","typescript":"^5.6.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.1_1773751854003_0.2573445391765825","host":"s3://npm-registry-packages-npm-production"}},"2.9.1-1":{"name":"opencode-bridge","version":"2.9.1-1","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.1-1","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"aa14596e856062d884e1ab15c31985f48318e6ac","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.1-1.tgz","fileCount":245,"integrity":"sha512-HY8QavDUOoq1Fse/eISqSSG4FLA33Tq0MUnBdFLdzaZWlH8rFu8Nb4bcoiAkbxkp5vxujCVYvYQINqE6zAuxgw==","signatures":[{"sig":"MEUCIQDlR+wlkAUbVFO7KWsSMSdd9WxjCutDxWakkgE/yMm1dQIgFKYp+HTLEI7Yg38df7ordQh9Gzz92pBrqdZAErK9os4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1682393},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"fbd4ee24008c8a36136c951235218436568c7ab0","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","pack:check":"npm pack --dry-run","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","node-cron":"^4.2.1","discord.js":"^14.25.1","@opencode-ai/sdk":"latest","@larksuiteoapi/node-sdk":"^1.36.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","typescript":"^5.6.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.1-1_1773841742745_0.28334922020851083","host":"s3://npm-registry-packages-npm-production"}},"2.9.3-beta":{"name":"opencode-bridge","version":"2.9.3-beta","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.3-beta","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"2668d897b06adff210a415cef864e265078833b6","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.3-beta.tgz","fileCount":298,"integrity":"sha512-7BM5vAJTsU0t8Q8N4P2gQkbImSDekFLQCQJMDPcx9KJu93rPmHnv/3YZUcD/lrntoKa2DE7GqvGRiadJ/pS5tA==","signatures":[{"sig":"MEYCIQCYR6/LjgHaVlummzK0VFC/G+AfOBjMV3tFtakId1UDkwIhAP3daEDEf6KgFDYJXu9qbvTbqGLDlsAyP5QnDrRQ4rfd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3498238},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"c14a590c5cf14ca5c3cb1ccee35f22ebee063358","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","build:all":"npm run build:web && npm run build","build:web":"cd web && pnpm install && pnpm run build","pack:check":"npm pack --dry-run","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","better-sqlite3":"^12.8.0","@opencode-ai/sdk":"latest","@larksuiteoapi/node-sdk":"^1.36.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","puppeteer":"^24.40.0","typescript":"^5.6.0","@types/node":"^22.10.0","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.3-beta_1774023024949_0.8188943760795313","host":"s3://npm-registry-packages-npm-production"}},"2.9.5-beta":{"name":"opencode-bridge","version":"2.9.5-beta","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.5-beta","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"932d6c18b2249c421818b63404de99e10604c4b8","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.5-beta.tgz","fileCount":396,"integrity":"sha512-bd3mMLUZa8tpyuseUig1Ke3GMyIww9m/QKf5lRR02+KkMKdZHWedP1x38wE9OvB8Os2H5p2IZpCmghyzCbHdAA==","signatures":[{"sig":"MEQCICUpgIzbAoZ0iJK7NOaKEwLlMN1p8Wxlo41rrxFOOJbNAiBTpUUjc+w8OK+IEro4NhVpjo5bQ5ffT7p+KVlbnKhMGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4459485},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"2aad220121878d60a003c51f66126d58ec753e8f","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","build:all":"npm run build:web && npm run build","build:web":"cd web && pnpm install && pnpm run build","pack:check":"npm pack --dry-run","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","better-sqlite3":"^12.8.0","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","puppeteer":"^24.40.0","typescript":"^5.6.0","@types/node":"^22.10.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.5-beta_1774269575497_0.9423073126550117","host":"s3://npm-registry-packages-npm-production"}},"2.9.5":{"name":"opencode-bridge","version":"2.9.5","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.5","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"ebe2b0705a82341327ae374f4e6428571c990da2","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.5.tgz","fileCount":398,"integrity":"sha512-moyprqvwSV3pV5e4hJLSgkhYMfGbYMP3UqKYOBX3xsn3GcurQ2QLA1pFRJ2wUOWlCHdV/FnVKSjk8bDBNB8zhA==","signatures":[{"sig":"MEYCIQDLfqwGjBsB9rwfNPsFuCFQIhiy7IqwCDMLL93bAYC2fwIhAJn/hn8aBrFaPWiqg2ZVF+PhbZtVWX5e+wJf4rP9Pgij","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4490738},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"e0f73b3f02e2630010cbe5e2e1a017084e4d8da2","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","build:all":"npm run build:web && npm run build","build:web":"cd web && pnpm install && pnpm run build","pack:check":"npm pack --dry-run","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","better-sqlite3":"^12.8.0","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","puppeteer":"^24.40.0","typescript":"^5.6.0","@types/node":"^22.10.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.5_1774276099848_0.378283307463231","host":"s3://npm-registry-packages-npm-production"}},"2.9.51":{"name":"opencode-bridge","version":"2.9.51","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.51","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"38937c7464c25d1b18a79eceba219e1c81d48ee4","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.51.tgz","fileCount":430,"integrity":"sha512-1EtaPzbN/cIIK4nb8WYK54rFdYVRFfsXW6H7KV6qjwA4ZEUdHD0ghOjgGHtuAWHoAnsXM/ZMLeBeTlSb7yzL/A==","signatures":[{"sig":"MEUCIHsfdkqRpThW8eeOLy6kizLUVe6wY9PWTm2bV+c0uBSiAiEA8s1mkh31/3DbafNBDpuDnkfzwj4mSpGFtCPHJ9f888g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4653508},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"0cd16a5e0e4f9ab8ecbf7e0982c13e0b89387ab8","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","build:all":"npm run build:web && npm run build","build:web":"cd web && pnpm install && pnpm run build","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","puppeteer":"^24.40.0","typescript":"^5.6.0","@types/node":"^22.10.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.51_1774324515546_0.4661504136086092","host":"s3://npm-registry-packages-npm-production"}},"2.9.52":{"name":"opencode-bridge","version":"2.9.52","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.52","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"18bd0b6194296084df5c935e60f9af3f4cf579a3","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.52.tgz","fileCount":430,"integrity":"sha512-syIWjMhVSW05jcGv1GcbVPEYnTNheQCwlSFkCD/w6Q0hSRCdwynnFwdLwXldu4xYSg4FqbYrzTcmBdFoW/iW1A==","signatures":[{"sig":"MEUCIQCfV1Sw0+Om9+8Ix6KrnPQ5sTO40KMClGB25NTRtIOisgIgPTyjKv+oYxJTYnLBtu4hRlw8RWdgietBsYttG/D5FtY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4671566},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"1f689b3bca9b697ce3addf7db39b89982a7e86aa","scripts":{"dev":"tsx watch src/index.ts","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","build:all":"npm run build:web && npm run build","build:web":"cd web && pnpm install && pnpm run build","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^4.0.18","puppeteer":"^24.40.0","typescript":"^5.6.0","@types/node":"^22.10.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.52_1774497401616_0.00012544072600717548","host":"s3://npm-registry-packages-npm-production"}},"2.9.53-beta.14":{"name":"opencode-bridge","version":"2.9.53-beta.14","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.53-beta.14","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"2a43bb8c87c90befda7476ed9120237c3d3cacf7","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.53-beta.14.tgz","fileCount":401,"integrity":"sha512-67+Rr6YIiIxzYj+UhskGPuZRHUj/QDX3ZLOkfmpYJmyvJK6MCzXzi4AiZ4qtUy9cBzSSV1W54P4BLgua/VZM6Q==","signatures":[{"sig":"MEUCIQC4QcqplmSLiyg0fyDpqeA+2VE9iaonBnWbNIz9gva8KgIgPt5gfgRtchQ/QxfvctCQybcI7Prvoqr6wfcFFVhEp+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2953040},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"CFBundleShortVersionString":"${version}"},"hardenedRuntime":true,"gatekeeperAssess":false},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","node_modules/**/*","!**/*.ts","!**/node_modules/*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!**/node_modules/.bin","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","asarUnpack":["**/node_modules/better-sqlite3/**/*"],"directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]}]},"types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"1158a1ae53be2c14ce2dccabe3ca9c379166b48e","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","electron-updater":"^6.3.9","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.0","tsx":"^4.19.0","pino":"^10.3.1","axios":"^1.13.6","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","@hapi/boom":"^10.0.1","typescript":"^5.6.0","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.53-beta.14_1774752997319_0.39513023667439895","host":"s3://npm-registry-packages-npm-production"}},"2.9.53":{"name":"opencode-bridge","version":"2.9.53","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.53","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"b2c4db19a5c0943a7b34b4a129fe2d393d26442b","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.53.tgz","fileCount":401,"integrity":"sha512-qjPKWIgVtgJzyhr2AeCX27ZPtWl36HVouJ7lsoGGMir2eTrzF+vKIU+8uk/ph/wTOoo1zAK0aPfqJPkgHogU4w==","signatures":[{"sig":"MEYCIQCWs4GsHebeZm+kPsVZ0qgWgW5fhQSwg587pF0Z5eMGmAIhAKBuapBjklspXvQ8OLjnjSbkWnt6I41cBRkCe08/H6ea","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2953002},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"CFBundleShortVersionString":"${version}"},"hardenedRuntime":true,"gatekeeperAssess":false},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","node_modules/**/*","!**/*.ts","!**/node_modules/*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!**/node_modules/.bin","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","asarUnpack":["**/node_modules/better-sqlite3/**/*"],"directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]}]},"types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"1158a1ae53be2c14ce2dccabe3ca9c379166b48e","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.0","tsx":"^4.19.0","pino":"^10.3.1","axios":"^1.13.6","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","@hapi/boom":"^10.0.1","typescript":"^5.6.0","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.53_1774791868469_0.6659183464953662","host":"s3://npm-registry-packages-npm-production"}},"2.9.55":{"name":"opencode-bridge","version":"2.9.55","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.55","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"c0263811ef2e346f91d40574b63ce686aa65fbcb","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.55.tgz","fileCount":401,"integrity":"sha512-wdj3LscEhtITUUlE33BA3slNbjbvjGd8kDq4m/H1gGwQDFPrkLKrbKn2SOWAH9rrL71x03atwTp4iJtF4Ahssg==","signatures":[{"sig":"MEUCIGV8l1cVU9uUIAWRttR/eqrSp2avquD8DVXKZTHl/IyqAiEApADS43eInirMtgWIw+nshgIl+GUPQa/5ibwxHFyZKsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2953310},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"CFBundleShortVersionString":"${version}"},"hardenedRuntime":true,"gatekeeperAssess":false},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","node_modules/**/*","!**/*.ts","!**/node_modules/*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!**/node_modules/.bin","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","asarUnpack":["**/node_modules/better-sqlite3/**/*"],"directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"8f8ecd17ca1e0f59cabdb5b6f72fd2a2f37385d6","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","tsx":"^4.19.0","pino":"^10.3.1","axios":"^1.13.6","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","@hapi/boom":"^10.0.1","typescript":"^5.6.0","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.55_1774796109837_0.6433558196405225","host":"s3://npm-registry-packages-npm-production"}},"2.9.57":{"name":"opencode-bridge","version":"2.9.57","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.57","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"6e6b49342952ee47e8bdee7bdde425c5bee2e60e","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.57.tgz","fileCount":439,"integrity":"sha512-426Z7gk9J9vfVux8TtFarKDXyyU3BWY/ou8AgKbe5VqzIMhL5mUyJRLttPDvf+Bdlf7uvnJqo2E6mxI8qUbe9Q==","signatures":[{"sig":"MEYCIQDujOt5Z1s4+M8QhV/mgbPr2Cjj7PayDCYTS6XjyAtDugIhAJR40kgHQUdj1+cWeIKplrQuoxfxXI9iuc9rtDxc09rq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4723543},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"CFBundleShortVersionString":"${version}"},"hardenedRuntime":true,"gatekeeperAssess":false},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","node_modules/**/*","!**/*.ts","!**/node_modules/*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!**/node_modules/.bin","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","asarUnpack":["**/node_modules/better-sqlite3/**/*"],"directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"45205b788bf96815ce6594d7125005657ee751ed","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","tsx":"^4.19.0","pino":"^10.3.1","axios":"^1.13.6","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","@hapi/boom":"^10.0.1","typescript":"^5.6.0","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.57_1774882959753_0.23185980507981974","host":"s3://npm-registry-packages-npm-production"}},"2.9.58":{"name":"opencode-bridge","version":"2.9.58","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.58","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"2994247b7d5571f1ebcc69307115c610f126a054","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.58.tgz","fileCount":439,"integrity":"sha512-eJBOlOifmavTWNNurrWNzbI8rVa30Srw/bbX3CudAainlBAGM7BMxcojsdjecjs52KJKS0sDGxeWMtHb5jAWVA==","signatures":[{"sig":"MEYCIQDEYXDryrF91TPtYcG+kWwfIJ6Nnraf3dsipqdk0EtfFQIhAKJiJduLlSxUykEOrinMjpq675zEzNUd2Cbijb12bYz2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4730368},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"CFBundleShortVersionString":"${version}"},"hardenedRuntime":true,"gatekeeperAssess":false},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","node_modules/**/*","!**/*.ts","!**/node_modules/*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!**/node_modules/.bin","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","asarUnpack":["**/node_modules/better-sqlite3/**/*"],"directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"7e8334e5f02ab139fdf2a62ed7bac3f68862e3f7","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3 -v","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","tsx":"^4.19.0","pino":"^10.3.1","axios":"^1.13.6","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","@hapi/boom":"^10.0.1","typescript":"^5.6.0","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.58_1774953519623_0.9357385285755075","host":"s3://npm-registry-packages-npm-production"}},"2.9.59":{"name":"opencode-bridge","version":"2.9.59","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@2.9.59","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"2b62a99afce7f5a53cdb5aaa39372f4f1970dc24","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-2.9.59.tgz","fileCount":439,"integrity":"sha512-CpIYyMy/3ezDJFjwRfL/EWv2bCKszoKRFQC/al8sRflw7/amvpz7ZS/6TblK4mNJujg73murfh5krEOZlOtmDg==","signatures":[{"sig":"MEYCIQDT0SzCp+esJbvVWVH96/L+tNnwjfnLQM5t+B1Zt2lfWQIhAPmwVuOZ7uXLart9ns33zESTbhJmLXVzY18BkcvbxPD5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4745435},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"CFBundleShortVersionString":"${version}"},"hardenedRuntime":true,"gatekeeperAssess":false},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","node_modules/**/*","!**/*.ts","!**/node_modules/*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!**/node_modules/.bin","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","asarUnpack":["**/node_modules/better-sqlite3/**/*"],"directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"9e2d71d7636d8a348f6d7989723ed30530d7893e","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3 -v","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","tsx":"^4.19.0","pino":"^10.3.1","axios":"^1.13.6","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","@hapi/boom":"^10.0.1","typescript":"^5.6.0","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_2.9.59_1775450359300_0.6051747801465397","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"opencode-bridge","version":"3.0.1","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@3.0.1","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"c8571a3595ca4f73446de8ebcd97fbebc52af561","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.0.1.tgz","fileCount":570,"integrity":"sha512-tKFPJxTy7eqeTcg6nZPOGyW4KOqeuE+z39M8rEZ/xPomD+FpTMLVpUXnvmgsjsscScXbActDbbyroB/6609cxw==","signatures":[{"sig":"MEUCIQCFrwLkUhv9QFdWwT/tyYgITHlnc9w6N6kc8u/5eq2Z0gIgY8Q6CyiPYZTwYn+GyEyFt2mlUTEViEu3+56gN8q1XHY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5795241},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","CFBundleShortVersionString":"${version}","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。"}},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","node_modules/**/*","!**/*.ts","!**/node_modules/*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!**/node_modules/.bin","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","asarUnpack":["**/node_modules/better-sqlite3/**/*"],"directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"4e7539fcf6d84c19d216b03cd01a4027ac352d0d","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3 -v","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","simple-git":"^3.36.0","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","tsx":"^4.19.0","pino":"^10.3.1","axios":"^1.13.6","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","@hapi/boom":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_3.0.1_1776657615707_0.8222770999675568","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"opencode-bridge","version":"3.0.2","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@3.0.2","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"2415b47f106ff6743c0775a107a6bcf0cdf99015","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.0.2.tgz","fileCount":570,"integrity":"sha512-i0nafI3Bdj8sbP7dpP+Uy429XNDOMUStny3QZ4Ly1Bc4Gozp5l4rh71xks9bEa/IFkrv2OZTPd1+las3jkbGGA==","signatures":[{"sig":"MEYCIQCUflpglU1wq0zQ3n/n2j93PHPMphDDl7YjLsC+weBWsAIhAMRLP8RWGKznUb7ZMKTNq8DgFkSzGhBbs3KFRkyUutVQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5800559},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","CFBundleShortVersionString":"${version}","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。"}},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","node_modules/**/*","!**/*.ts","!**/node_modules/*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!**/node_modules/.bin","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","asarUnpack":["**/node_modules/better-sqlite3/**/*"],"directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"8d9220ec08b838bc8c2cdce96dafe0004d7af770","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.9.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","simple-git":"^3.36.0","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","tsx":"^4.19.0","pino":"^10.3.1","axios":"^1.13.6","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","@hapi/boom":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_3.0.2_1776677684724_0.24530272970824218","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"opencode-bridge","version":"3.0.5","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@3.0.5","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"e82f17e37b30b919b2a67486375bc23f8bc94472","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.0.5.tgz","fileCount":578,"integrity":"sha512-YJmxsn9TCyM99qOwh0wG1WfnuH7pxJ57J+Ko1thYe4Xmsjvlu7ZPWV1SOJoQBOb6wTDiXubdNyTPCkpJrnOiKg==","signatures":[{"sig":"MEUCIFV83lVyUYwnrShiJaMTB5SqFTd/5tmP4D0Db5wlbJRaAiEAp4NSkzBn77rYucEEfyxCIFkfxJL22giZCm0vpoYYses=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5858293},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","CFBundleShortVersionString":"${version}","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。"}},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","!**/*.ts","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]},{"to":"app/node_modules","from":"node_modules","filter":["**/*","!*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!.bin/**"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"385abf3e5268eca6f4ce8bcdfecf20e051657979","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.13.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","multer":"^2.1.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","simple-git":"^3.36.0","@types/multer":"^2.1.0","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","tsx":"^4.19.0","pino":"^10.3.1","axios":"^1.13.6","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","@hapi/boom":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_3.0.5_1776926875973_0.8653021436546138","host":"s3://npm-registry-packages-npm-production"}},"3.0.6":{"name":"opencode-bridge","version":"3.0.6","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@3.0.6","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"0ca7605e39cb027d45912ee1c68f8fcf9ca252c6","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.0.6.tgz","fileCount":578,"integrity":"sha512-+Ui8TQq3LEfYTd4zwW3eLflkidtrKAaJh7Mt1Sm4QmXL4nZT7eWPpjql+OOlzH+4r16HL3E9g03I1vHcX5gZrw==","signatures":[{"sig":"MEUCIQDGK7HGzaDm3IsHas777T18O59RDWUBKYl8DS8X+t0VXgIgd4Tj0HpKsYkvjwwFLiAaVkBiCWjVjJ4/ruJDWoMqd8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5868381},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","CFBundleShortVersionString":"${version}","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。"}},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","!**/*.ts","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]},{"to":"app/node_modules","from":"node_modules","filter":["**/*","!*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!.bin/**"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"fe8aef1cb2c1722ed46d4992acd58d3c16adf67d","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.13.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"dotenv":"^16.4.5","grammy":"^1.41.1","multer":"^2.1.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","discord.js":"^14.25.1","simple-git":"^3.36.0","@types/multer":"^2.1.0","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","tsx":"^4.19.0","pino":"^10.3.1","axios":"^1.13.6","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","@hapi/boom":"^10.0.1","typescript":"^5.9.3","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_3.0.6_1776949721270_0.14391616412983121","host":"s3://npm-registry-packages-npm-production"}},"3.0.7":{"name":"opencode-bridge","version":"3.0.7","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@3.0.7","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"699d27ee3f182832abed16a39aa2da0c50aebdcc","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.0.7.tgz","fileCount":582,"integrity":"sha512-bBMIV/vo6by0WNZyOe84Djio6K5oXmHrNgsEwNGl5o7CRiEes9M5nbL/fRZiZcs28JarmtdHzL0klSpAUUfzmg==","signatures":[{"sig":"MEYCIQDJiiVNSg1FE1ClBP5dtTlVSeL804vYdNppFUWlrP9oYQIhAKB4H5vSMe03I1qF04/ZcLpVvxTRSsSUGICYi94L/VIM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5911366},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","CFBundleShortVersionString":"${version}","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。"}},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","!**/*.ts","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]},{"to":"app/node_modules","from":"node_modules","filter":["**/*","!*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!.bin/**","!@esbuild{,/**}","!@img{,/**}","!@rolldown{,/**}","!@types{,/**}","!7zip-bin{,/**}","!app-builder-bin{,/**}","!chromium-bidi{,/**}","!devtools-protocol{,/**}","!electron{,/**}","!electron-builder{,/**}","!electron-rebuild{,/**}","!esbuild{,/**}","!lightningcss-*{,/**}","!puppeteer{,/**}","!puppeteer-core{,/**}","!tsx{,/**}","!typescript{,/**}","!vitest{,/**}"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"d466a097fcc25ba69ff5bf90cd9a7f756d1302f3","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.13.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","axios":"^1.13.6","dotenv":"^16.4.5","grammy":"^1.41.1","multer":"^2.1.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","@hapi/boom":"^10.0.1","discord.js":"^14.25.1","simple-git":"^3.36.0","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","pino":"^10.3.1","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","typescript":"^5.9.3","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/multer":"^2.1.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_3.0.7_1777037453924_0.8322668254338319","host":"s3://npm-registry-packages-npm-production"}},"3.0.8":{"name":"opencode-bridge","version":"3.0.8","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@3.0.8","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"18f168feae0a58140046272a1533ed3b4a81a685","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.0.8.tgz","fileCount":586,"integrity":"sha512-+BclxqyYd9zTo9NS8D8EvNpLjo3LbVls7IiaUdOieXV65nyv8gTRLVdcCRf6zd5Aiev0slLXswrR721IEAgcVg==","signatures":[{"sig":"MEUCIQDEy79xs5ggsKh2S2rUB9hvEs9/Jjn/JY41nv0AvLLjnwIgVn/q1sDhQxL0Q/CzGRsBE5IS+CXDCqRP72uLwsa68Tc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5929117},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","CFBundleShortVersionString":"${version}","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。"}},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","!**/*.ts","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]},{"to":"app/node_modules","from":"node_modules","filter":["**/*","!*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!.bin/**","!@esbuild{,/**}","!@img{,/**}","!@rolldown{,/**}","!@types{,/**}","!7zip-bin{,/**}","!app-builder-bin{,/**}","!chromium-bidi{,/**}","!devtools-protocol{,/**}","!electron{,/**}","!electron-builder{,/**}","!electron-rebuild{,/**}","!esbuild{,/**}","!lightningcss-*{,/**}","!puppeteer{,/**}","!puppeteer-core{,/**}","!tsx{,/**}","!typescript{,/**}","!vitest{,/**}"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"2e3c4d6646f02ddf239ff62ad0887fce80f0c54a","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.13.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","axios":"^1.13.6","dotenv":"^16.4.5","grammy":"^1.41.1","multer":"^2.1.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","@hapi/boom":"^10.0.1","discord.js":"^14.25.1","simple-git":"^3.36.0","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","pino":"^10.3.1","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","typescript":"^5.9.3","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/multer":"^2.1.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_3.0.8_1777117614244_0.27547654886978323","host":"s3://npm-registry-packages-npm-production"}},"3.0.9":{"name":"opencode-bridge","version":"3.0.9","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@3.0.9","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"565d5f24f9db725fdd52ba0a8bcb003b7fa29a8c","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.0.9.tgz","fileCount":586,"integrity":"sha512-dguuKDMFx7C/9KlO9BX9qNaSGuXdo4FaLaH5gGaoL7O/V00hQ/NLiPk7FccOhnDj8BhWtItemlD590+XJjgEXg==","signatures":[{"sig":"MEQCIEOnwonDpZPvTJszBRRm/DIYA+8kxK1sIO2RZwtxUOmuAiAjw7zdtU6fmWadD6W2UobsjSQ+KH8QSWYA5jLmsX8mFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5939555},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","CFBundleShortVersionString":"${version}","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。"}},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","!**/*.ts","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]},{"to":"app/node_modules","from":"node_modules","filter":["**/*","!*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!.bin/**","!@esbuild{,/**}","!@img{,/**}","!@rolldown{,/**}","!@types{,/**}","!7zip-bin{,/**}","!app-builder-bin{,/**}","!chromium-bidi{,/**}","!devtools-protocol{,/**}","!electron{,/**}","!electron-builder{,/**}","!electron-rebuild{,/**}","!esbuild{,/**}","!lightningcss-*{,/**}","!puppeteer{,/**}","!puppeteer-core{,/**}","!tsx{,/**}","!typescript{,/**}","!vitest{,/**}"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"76a7a96e7235ac6811f662b8e292fc02c3d72c37","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.13.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","axios":"^1.13.6","dotenv":"^16.4.5","grammy":"^1.41.1","multer":"^2.1.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","@hapi/boom":"^10.0.1","discord.js":"^14.25.1","simple-git":"^3.36.0","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","pino":"^10.3.1","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","typescript":"^5.9.3","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/multer":"^2.1.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_3.0.9_1777338891176_0.4371406860880547","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"opencode-bridge","version":"3.1.0","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@3.1.0","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"4ed44abfd12e026d5ce093893a44a4157739db2f","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.1.0.tgz","fileCount":594,"integrity":"sha512-dhWE37qrACx/MMqerIclCzH/FZnyCihm62ouw6RB4FVfU83JipDoi8cNaoNndkL+owHkTujrhyYTK8xxXBlTsw==","signatures":[{"sig":"MEYCIQDfwYm5cqgTjeGb739S4mZarC9EVI9B+vbW4y7qlmAMZgIhALp3CjKlvFPiMTaaO1tgKfSPP531WoZZFL9gEkR5+Ya6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6035046},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","CFBundleShortVersionString":"${version}","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。"}},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","!**/*.ts","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]},{"to":"app/node_modules","from":"node_modules","filter":["**/*","!*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!.bin/**","!@esbuild{,/**}","!@img{,/**}","!@rolldown{,/**}","!@types{,/**}","!7zip-bin{,/**}","!app-builder-bin{,/**}","!chromium-bidi{,/**}","!devtools-protocol{,/**}","!electron{,/**}","!electron-builder{,/**}","!electron-rebuild{,/**}","!esbuild{,/**}","!lightningcss-*{,/**}","!puppeteer{,/**}","!puppeteer-core{,/**}","!tsx{,/**}","!typescript{,/**}","!vitest{,/**}"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"1ae5b2c2940fe8b0a92b8de67eca541dc509bea3","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.13.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","axios":"^1.13.6","dotenv":"^16.4.5","grammy":"^1.41.1","multer":"^2.1.1","qrcode":"^1.5.4","express":"^5.2.1","node-cron":"^4.2.1","@hapi/boom":"^10.0.1","discord.js":"^14.25.1","simple-git":"^3.36.0","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@inquirer/prompts":"^8.4.2","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","pino":"^10.3.1","vitest":"^4.0.18","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","typescript":"^5.9.3","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/multer":"^2.1.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_3.1.0_1777620729854_0.5543812863332855","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"opencode-bridge","version":"3.1.1","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@3.1.1","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"9a56aeb462a7c1f37304b44241fbc1f364b940e4","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.1.1.tgz","fileCount":678,"integrity":"sha512-CjkeK8AGKXKsdBv2PBskDoTpZc3BAXRiYUqnx0KAtEaI65k+3BCldWGkhSBu65vcn/3NnVZ8efAlWx7Rpv/0jg==","signatures":[{"sig":"MEUCIG+6QWFB9X4Jp+8pYoUwS9RfDn6JbLXzmdjUuF6thqY6AiEAi6N9CxW8Oj6COFAd8202MOfo5xmMuB934BOJdzRLuWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6639560},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","CFBundleShortVersionString":"${version}","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。"}},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","!**/*.ts","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]},{"to":"app/node_modules","from":"node_modules","filter":["**/*","!*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!.bin/**","!@esbuild{,/**}","!@img{,/**}","!@rolldown{,/**}","!@types{,/**}","!7zip-bin{,/**}","!app-builder-bin{,/**}","!chromium-bidi{,/**}","!devtools-protocol{,/**}","!electron{,/**}","!electron-builder{,/**}","!electron-rebuild{,/**}","!esbuild{,/**}","!lightningcss-*{,/**}","!puppeteer{,/**}","!puppeteer-core{,/**}","!tsx{,/**}","!typescript{,/**}","!vitest{,/**}"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f511196ae611fdee517449c885c7abdb53bbdeca","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.13.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","axios":"^1.13.6","dotenv":"^16.4.5","grammy":"^1.41.1","multer":"^2.1.1","qrcode":"^1.5.4","express":"^5.2.1","chokidar":"^5.0.0","node-cron":"^4.2.1","@hapi/boom":"^10.0.1","discord.js":"^14.25.1","simple-git":"^3.36.0","gray-matter":"^4.0.3","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@inquirer/prompts":"^8.4.2","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","pino":"^10.3.1","vitest":"^4.1.5","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","supertest":"^7.2.2","typescript":"^5.9.3","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/multer":"^2.1.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","@types/supertest":"^6.0.3","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_3.1.1_1778859707525_0.9242712138549558","host":"s3://npm-registry-packages-npm-production"}},"3.1.2":{"name":"opencode-bridge","version":"3.1.2","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@3.1.2","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"b2b35a2b0cd18ed9c6b2bfa62aca16f27dd1ebe4","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.1.2.tgz","fileCount":678,"integrity":"sha512-DfJTKmT9oxKWhU5cwrf/bsM5t5WBcDTCfWr9mlHaU2YX7NBdAXL5wx5gbv/j8TPp34zQJ4gcfJIJ3nBcQ/gXrA==","signatures":[{"sig":"MEUCIFlvwoC7XMyZgvNwCiY/vE7DyoeLNEziEDHriYHpunl7AiEA+/ou88QlhLYjJ3qGkwMCF5G+fga1ZzxKx5jfGqonWS8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6639560},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","CFBundleShortVersionString":"${version}","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。"}},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","!**/*.ts","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]},{"to":"app/node_modules","from":"node_modules","filter":["**/*","!*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!.bin/**","!@esbuild{,/**}","!@img{,/**}","!@rolldown{,/**}","!@types{,/**}","!7zip-bin{,/**}","!app-builder-bin{,/**}","!chromium-bidi{,/**}","!devtools-protocol{,/**}","!electron{,/**}","!electron-builder{,/**}","!electron-rebuild{,/**}","!esbuild{,/**}","!lightningcss-*{,/**}","!puppeteer{,/**}","!puppeteer-core{,/**}","!tsx{,/**}","!typescript{,/**}","!vitest{,/**}"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"c376fbcd3a317e21fde7db22b3c2f296439b96cf","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","preinstall":"node scripts/setup-mirror.mjs","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.13.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","axios":"^1.13.6","dotenv":"^16.4.5","grammy":"^1.41.1","multer":"^2.1.1","qrcode":"^1.5.4","express":"^5.2.1","chokidar":"^5.0.0","node-cron":"^4.2.1","@hapi/boom":"^10.0.1","discord.js":"^14.25.1","simple-git":"^3.36.0","gray-matter":"^4.0.3","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@inquirer/prompts":"^8.4.2","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","pino":"^10.3.1","vitest":"^4.1.5","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","supertest":"^7.2.2","typescript":"^5.9.3","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/multer":"^2.1.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","@types/supertest":"^6.0.3","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_3.1.2_1778860224492_0.8708876662366853","host":"s3://npm-registry-packages-npm-production"}},"3.1.3":{"name":"opencode-bridge","version":"3.1.3","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","_id":"opencode-bridge@3.1.3","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"bin":{"opencode-bridge":"bin/opencode-bridge.js"},"dist":{"shasum":"5e34cb0579188a13c6310d5ab4b4c9598b12c40d","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.1.3.tgz","fileCount":678,"integrity":"sha512-Ed2nXy+mfnKOM7gzCMe1mmcvgOvrPUrAh9iegl/XUzB7/t7/JQ02nu4L/fBqO9wGyyIgwPb84dP3bflrjF4/zQ==","signatures":[{"sig":"MEYCIQCyw9Bbn3CSG3wQYqrwt+n1lA79qcCvwZ1/ej3ZQlx+9QIhANg4SITu7WCZiwIP4ioO+g3Qo4lkHT0ZfstXMCsIg6Qj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6646573},"main":"dist-electron/main.js","type":"module","build":{"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"path":"/Applications","type":"link"}]},"mac":{"icon":"assets/icon-1024.png","target":[{"arch":["x64","arm64"],"target":"dmg"}],"category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","CFBundleShortVersionString":"${version}","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。"}},"win":{"icon":"assets/icon.ico","target":[{"arch":["x64"],"target":"nsis"}]},"asar":true,"nsis":{"include":"installer.nsh","oneClick":false,"shortcutName":"OpenCode Bridge","installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"allowToChangeInstallationDirectory":true},"appId":"com.github.hngm-hp.opencode-bridge","files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","!**/*.ts","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"linux":{"icon":"assets/icon.png","target":["AppImage"],"category":"Network;Chat;InstantMessaging;"},"copyright":"Copyright © 2024 HNGM-HP","directories":{"output":"release"},"productName":"OpenCode Bridge","extraResources":[{"to":"app/dist","from":"dist","filter":["**/*"]},{"to":"app/assets","from":"assets","filter":["**/*"]},{"to":"app/scripts","from":"scripts","filter":["**/*"]},{"to":"app/node_modules","from":"node_modules","filter":["**/*","!*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!.bin/**","!@esbuild{,/**}","!@img{,/**}","!@rolldown{,/**}","!@types{,/**}","!7zip-bin{,/**}","!app-builder-bin{,/**}","!chromium-bidi{,/**}","!devtools-protocol{,/**}","!electron{,/**}","!electron-builder{,/**}","!electron-rebuild{,/**}","!esbuild{,/**}","!lightningcss-*{,/**}","!puppeteer{,/**}","!puppeteer-core{,/**}","!tsx{,/**}","!typescript{,/**}","!vitest{,/**}"]}]},"types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f74fb9a3574e0b1ba55495e37fa7117b6225ed15","scripts":{"dev":"tsx watch src/index.ts","dist":"electron-builder --publish never","pack":"electron-builder --dir","test":"vitest run","build":"tsc","start":"node scripts/start.mjs","rebuild":"electron-rebuild -f -w better-sqlite3","dist:mac":"electron-builder --mac --publish never","dist:win":"electron-builder --win --publish never","build:all":"npm run build:web && npm run build && npm run build:electron","build:web":"cd web && pnpm install && pnpm run build","dist:linux":"electron-builder --linux --publish never","pack:check":"npm pack --dry-run","test:watch":"vitest","stop:bridge":"node scripts/stop.mjs","dev:electron":"npm run build:electron && electron .","setup:mirror":"node scripts/setup-mirror.mjs","start:bridge":"node scripts/start.mjs","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","build:electron":"tsc -p tsconfig.electron.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"repository":{"url":"git+https://github.com/HNGM-HP/opencode-bridge.git","type":"git"},"_npmVersion":"11.13.0","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","axios":"^1.13.6","dotenv":"^16.4.5","grammy":"^1.41.1","multer":"^2.1.1","qrcode":"^1.5.4","express":"^5.2.1","chokidar":"^5.0.0","node-cron":"^4.2.1","@hapi/boom":"^10.0.1","discord.js":"^14.25.1","simple-git":"^3.36.0","gray-matter":"^4.0.3","better-sqlite3":"^12.8.0","dingtalk-stream":"^2.1.4","@opencode-ai/sdk":"latest","@inquirer/prompts":"^8.4.2","@wecom/aibot-node-sdk":"^1.0.4","@larksuiteoapi/node-sdk":"^1.36.3","@whiskeysockets/baileys":"^7.0.0-rc.9"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","pino":"^10.3.1","vitest":"^4.1.5","electron":"^34.5.8","@types/ws":"^8.18.1","puppeteer":"^24.40.0","supertest":"^7.2.2","typescript":"^5.9.3","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/axios":"^0.14.4","@types/multer":"^2.1.0","@types/qrcode":"^1.5.6","@types/express":"^5.0.6","@grammyjs/types":"^3.25.0","@types/supertest":"^6.0.3","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/opencode-bridge_3.1.3_1778927217721_0.035565332149721796","host":"s3://npm-registry-packages-npm-production"}},"3.1.5":{"name":"opencode-bridge","version":"3.1.5","type":"module","description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","main":"dist-electron/main.js","types":"dist/index.d.ts","author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","bin":{"opencode-bridge":"bin/opencode-bridge.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"preinstall":"node scripts/setup-mirror.mjs","dev":"tsx watch src/index.ts","dev:electron":"npm run build:electron && electron .","build":"tsc","build:web":"cd web && pnpm install && pnpm run build","build:electron":"tsc -p tsconfig.electron.json","build:all":"npm run build:web && npm run build && npm run build:electron","rebuild":"electron-rebuild -f -w better-sqlite3","pack":"electron-builder --dir","dist":"electron-builder --publish never","dist:win":"electron-builder --win --publish never","dist:mac":"electron-builder --mac --publish never","dist:linux":"electron-builder --linux --publish never","test":"vitest run","test:watch":"vitest","start":"node scripts/start.mjs","pack:check":"npm pack --dry-run","prepublishOnly":"npm run build","deploy:bridge":"node scripts/deploy.mjs deploy","manage:bridge":"node scripts/deploy.mjs menu","start:bridge":"node scripts/start.mjs","stop:bridge":"node scripts/stop.mjs"},"keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"repository":{"type":"git","url":"git+https://github.com/HNGM-HP/opencode-bridge.git"},"bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"dependencies":{"@hapi/boom":"^10.0.1","@inquirer/prompts":"^8.4.2","@larksuiteoapi/node-sdk":"^1.36.3","@opencode-ai/sdk":"latest","@wecom/aibot-node-sdk":"^1.0.4","@whiskeysockets/baileys":"^7.0.0-rc.9","axios":"^1.13.6","better-sqlite3":"^12.8.0","chokidar":"^5.0.0","dingtalk-stream":"^2.1.4","discord.js":"^14.25.1","dotenv":"^16.4.5","express":"^5.2.1","grammy":"^1.41.1","gray-matter":"^4.0.3","multer":"^2.1.1","node-cron":"^4.2.1","qrcode":"^1.5.4","simple-git":"^3.36.0","ws":"^8.20.0"},"devDependencies":{"@grammyjs/types":"^3.25.0","@types/axios":"^0.14.4","@types/better-sqlite3":"^7.6.13","@types/express":"^5.0.6","@types/multer":"^2.1.0","@types/node":"^22.10.0","@types/pino":"^7.0.5","@types/qrcode":"^1.5.6","@types/supertest":"^6.0.3","@types/ws":"^8.18.1","electron":"^34.5.8","electron-builder":"^25.1.8","electron-rebuild":"^3.2.9","pino":"^10.3.1","puppeteer":"^24.40.0","supertest":"^7.2.2","tsx":"^4.19.0","typescript":"^5.9.3","vitest":"^4.1.5"},"engines":{"node":">=20.0.0"},"build":{"appId":"com.github.hngm-hp.opencode-bridge","productName":"OpenCode Bridge","copyright":"Copyright © 2024 HNGM-HP","directories":{"output":"release"},"files":["dist/**/*","dist-electron/**/*","assets/**/*","package.json","!**/*.ts","!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}","!.editorconfig","!**/._*","!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,thumbs.db,.gitignore,.gitattributes,.flowconfig,.jshintrc,.eslintrc,.eslintignore,.idea,.vscode,.github}","!web/node_modules","!web/src"],"asar":true,"extraResources":[{"from":"dist","to":"app/dist","filter":["**/*"]},{"from":"assets","to":"app/assets","filter":["**/*"]},{"from":"scripts","to":"app/scripts","filter":["**/*"]},{"from":"node_modules","to":"app/node_modules","filter":["**/*","!*/{CHANGELOG.md,README.md,readme.md,LICENSE,license}","!.bin/**","!@esbuild{,/**}","!@img{,/**}","!@rolldown{,/**}","!@types{,/**}","!7zip-bin{,/**}","!app-builder-bin{,/**}","!chromium-bidi{,/**}","!devtools-protocol{,/**}","!electron{,/**}","!electron-builder{,/**}","!electron-rebuild{,/**}","!esbuild{,/**}","!lightningcss-*{,/**}","!puppeteer{,/**}","!puppeteer-core{,/**}","!tsx{,/**}","!typescript{,/**}","!vitest{,/**}"]}],"win":{"target":[{"target":"nsis","arch":["x64"]}],"icon":"assets/icon.ico"},"nsis":{"oneClick":false,"allowToChangeInstallationDirectory":true,"installerIcon":"assets/icon.ico","uninstallerIcon":"assets/icon.ico","installerHeaderIcon":"assets/icon.ico","createDesktopShortcut":true,"createStartMenuShortcut":true,"shortcutName":"OpenCode Bridge","include":"installer.nsh"},"mac":{"target":[{"target":"dmg","arch":["x64","arm64"]}],"icon":"assets/icon-1024.png","category":"public.app-category.productivity","extendInfo":{"NSHighResolutionCapable":true,"CFBundleShortVersionString":"${version}","NSAppleEventsUsageDescription":"需要与系统交互以提供服务。","NSCameraUsageDescription":"需要访问摄像头以提供相关功能。","NSMicrophoneUsageDescription":"需要访问麦克风以提供相关功能。"}},"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"type":"link","path":"/Applications"}]},"linux":{"target":["AppImage"],"icon":"assets/icon.png","category":"Network;Chat;InstantMessaging;"}},"_id":"opencode-bridge@3.1.5","gitHead":"56de33fce92471e627eaac549ec80c78d3a7d8fb","_nodeVersion":"24.14.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-21jS4NfYXu9HmUkkBqqls8obXph+8WrgkTVGNb8Bdr4KMBqQGRJkU/g9NoTUvGTj1WNXAYlnr1Zk//v6vFO6QQ==","shasum":"5c40cc7ca276ab43d6a45370f7964b33d6a322ba","tarball":"https://registry.npmjs.org/opencode-bridge/-/opencode-bridge-3.1.5.tgz","fileCount":907,"unpackedSize":6715071,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDy1Xyr3rGjzZvlxRpateqqLKF7Gzf2MPCzZQmsprY24AIhAPwWiVUdfmioR1gio+R9ApBKCBmsTy0FykV8ZRULYNhM"}]},"_npmUser":{"name":"hngm-hp","email":"h542869290@gmail.com"},"directories":{},"maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/opencode-bridge_3.1.5_1780823851247_0.63591491945913"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-13T05:43:46.506Z","modified":"2026-06-07T09:17:31.588Z","2.9.0-beta":"2026-03-13T05:43:46.783Z","2.9.0":"2026-03-15T05:07:51.886Z","2.9.1":"2026-03-17T12:50:54.181Z","2.9.1-1":"2026-03-18T13:49:02.895Z","2.9.3-beta":"2026-03-20T16:10:25.212Z","2.9.5-beta":"2026-03-23T12:39:35.693Z","2.9.5":"2026-03-23T14:28:20.025Z","2.9.51":"2026-03-24T03:55:15.721Z","2.9.52":"2026-03-26T03:56:41.827Z","2.9.53-beta.14":"2026-03-29T02:56:37.519Z","2.9.53":"2026-03-29T13:44:28.682Z","2.9.55":"2026-03-29T14:55:10.045Z","2.9.57":"2026-03-30T15:02:39.979Z","2.9.58":"2026-03-31T10:38:39.846Z","2.9.59":"2026-04-06T04:39:19.508Z","3.0.1":"2026-04-20T04:00:15.964Z","3.0.2":"2026-04-20T09:34:44.916Z","3.0.5":"2026-04-23T06:47:56.123Z","3.0.6":"2026-04-23T13:08:41.462Z","3.0.7":"2026-04-24T13:30:54.156Z","3.0.8":"2026-04-25T11:46:54.419Z","3.0.9":"2026-04-28T01:14:51.414Z","3.1.0":"2026-05-01T07:32:10.161Z","3.1.1":"2026-05-15T15:41:47.820Z","3.1.2":"2026-05-15T15:50:24.795Z","3.1.3":"2026-05-16T10:26:57.941Z","3.1.5":"2026-06-07T09:17:31.453Z"},"bugs":{"url":"https://github.com/HNGM-HP/opencode-bridge/issues"},"author":{"name":"HNGM-HP"},"license":"GPL-3.0-only","homepage":"https://github.com/HNGM-HP/opencode-bridge#readme","keywords":["feishu","discord","opencode","bridge","cli","chatbot","ai"],"repository":{"type":"git","url":"git+https://github.com/HNGM-HP/opencode-bridge.git"},"description":"Feishu / Discord × OpenCode bridge service with runtime cron and reliability tooling","maintainers":[{"name":"hngm-hp","email":"h542869290@gmail.com"}],"readme":"# OpenCode Bridge\n\n[![v3.1.5](https://img.shields.io/badge/v3.1.5-760031c)](https://github.com/HNGM-HP/opencode-bridge/blob/main)\n[![Node.js >= 20](https://img.shields.io/badge/Node.js-%3E%3D20-339933?logo=node.js&logoColor=white)](https://nodejs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![License: GPLv3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n\n**[中文](./README.md) | [English](./README-en.md)**\n\n---\n\n> **OpenCode Bridge** 是一款将 OpenCode 的 AI 编程能力与智能对话能力无缝集成到主流即时通讯平台，实现跨平台、跨设备的一体化智能协作体验。\n\n---\n\n## 🎯 项目定位\n\n**OpenCode Bridge** 不仅仅是一个简单的消息桥接工具，而是一个完整的 OpenCode 套壳应用：\n\n- **🤖 AI 编程助手**：完整接入 OpenCode 的智能编程能力，支持代码生成、调试、重构等功能\n- **💬 智能对话系统**：集成 Chat 能力，提供自然语言交互、知识问答、任务协助等对话式服务\n- **🔌 全平台适配**：一套代码支持 8 大主流通讯平台，统一管理所有交互\n- **⚙️ 程序化桥接**：深度集成 OpenCode SDK，实现会话管理、权限控制、文件传输等完整功能\n\n与简单的消息转发不同，OpenCode Bridge 提供了完整的 OpenCode 体验套壳，让用户在任何平台上都能获得原生 OpenCode 的功能体验。\n\n---\n\n## 📱 支持平台\n\n### 平台概览\n\n| 平台 | 状态 | 接入方式 |\n|------|------|----------|\n| 飞书 (Lark) | ✅ 完整支持 | 机器人应用 |\n| Discord | ✅ 完整支持 | Bot Token |\n| 企业微信 (WeCom) | ✅ 完整支持 | 机器人应用 |\n| Telegram | ✅ 完整支持 | Bot Token |\n| QQ (OneBot) | ✅ 完整支持 | OneBot 协议 |\n| WhatsApp | ✅ 完整支持 | 手机号配对 |\n| 个人微信 | ✅ 完整支持 | 扫码登录 |\n| 钉钉 (DingTalk) | ✅ 完整支持 | 机器人应用 |\n\n### 功能支持对比\n\n| 功能 | 飞书 | Discord | 企业微信 | Telegram | QQ | WhatsApp | 微信 | 钉钉 |\n|------|------|---------|---------|---------|-----|---------|------|------|\n| 文本消息 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |\n| 富媒体/卡片 | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |\n| 流式输出 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |\n| 权限交互 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |\n| 文件传输 | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |\n| 群聊支持 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |\n| 私聊支持 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |\n| 消息撤回 | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ | ⚠️ | ✅ |\n|\n**> ⚠️ 部分支持说明**：企业微信、微信不支持撤回平台消息，但 `/undo` 命令可撤回 OpenCode 侧会话并发送提示消息。\n\n---\n\n## ✨ 核心特性\n\n### 🔄 智能会话管理\n\n- **独立会话绑定**：每个群聊/私聊独立绑定 OpenCode 会话，上下文互不干扰\n- **会话迁移**：支持会话绑定、迁移与重命名，跨设备接力无缝衔接\n- **多项目支持**：支持多项目目录切换及项目别名配置\n- **自动清理**：自动回收无效会话，防止资源泄漏\n\n### 🤖 AI 编程能力\n\n- **智能代码生成**：支持多语言代码生成，实时语法高亮\n- **代码调试与分析**：自动错误定位，提供修复建议\n- **项目上下文理解**：基于完整项目代码库的智能分析\n- **Shell 命令执行**：白名单命令可直接在聊天中执行\n- **文件操作**：AI 可读写项目文件，支持代码重构\n\n### 💬 智能对话系统\n\n- **自然语言交互**：支持多轮对话，理解复杂语义\n- **知识问答**：基于 OpenCode 知识库的智能问答\n- **任务协助**：提供任务分解、步骤指导等辅助功能\n- **上下文记忆**：跨会话的上下文保持与记忆管理\n\n### 🔌 深度集成能力\n\n- **流式输出**：实时显示 AI 响应，支持思维链可视化\n- **权限交互**：AI 权限请求直接在聊天平台内完成确认\n- **问题回答**：AI 提问可在聊天平台内直接作答\n- **文件传输**：AI 可将文件或截图主动发送至聊天平台\n- **多模态支持**：支持图片、文档等多种格式\n\n### 🛡️ 可靠性保障\n\n- **心跳监控**：定时探测 OpenCode 健康状态，及时感知异常\n- **自动救援**：OpenCode 宕机时自动重启恢复，无需人工干预\n- **Cron 任务**：支持运行时动态管理定时任务\n- **日志审计**：完整的操作日志与错误追踪记录\n\n### 🎛️ 三套配置入口（Web / TUI / 配置文件）\n\n- **🌐 Web 管理面板**：浏览器可视化配置所有参数，平台 / Cron / 服务控制一站式\n- **🧙 首次安装引导**：首次访问 Web 自动弹出向导（语言 → 选一个初始平台 → 基于 driver.js 的左侧菜单高亮气泡讲解），可跳过且不再打扰；右上角\"帮助\"菜单随时回看 README 与平台文档链接\n- **💻 TUI 终端向导**：`opencode-bridge` / `opencode-bridge init` 在纯 CLI 环境下即可完成全部配置（中英双语，与 Web 共用同一份 SQLite 配置文件）\n- **🔌 平台开关解耦**：可在 TUI 内单独关闭 Web 面板而保留接入平台运行（适合内网安全场景）\n- **🆓 无登录无密码**：管理后台不再设置账号 / 密码，部署侧请通过防火墙 / 反向代理控制访问\n\n---\n\n<details>\n<summary>🖼️ Web 可视化界面截图（点击展开）</summary>\n\n![web0](./assets/demo/web0.png)\n![web1](./assets/demo/web1.png)\n![web2](./assets/demo/web2.png)\n![web3](./assets/demo/web3.png)\n![web4](./assets/demo/web4.png)\n![web5](./assets/demo/web5.png)\n![web6](./assets/demo/web6.png)\n![web7](./assets/demo/web7.png)\n![web8](./assets/demo/web8.png)\n![web9](./assets/demo/web9.png)\n\n</details>\n\n---\n\n## 🏗️ 架构概览\n\n### 系统架构\n\n```\n┌─────────────────────────────────────────────────────┐\n│                   📱 平台适配层                      │\n│  飞书 | Discord | 企业微信 | Telegram | QQ |        │\n│        WhatsApp | 微信 | 钉钉                        │\n└──────────────────────┬──────────────────────────────┘\n                       │ 统一消息格式\n┌──────────────────────▼──────────────────────────────┐\n│                   ⚙️ 核心处理层                      │\n│  RootRouter → 会话管理 / 权限处理 / 问题作答         │\n│              编程能力 / 对话能力 / 输出缓冲          │\n└──────────────────────┬──────────────────────────────┘\n                       │\n┌──────────────────────▼──────────────────────────────┐\n│                   🔗 集成层                          │\n│              OpenCode Client SDK                     │\n│         (编程接口 + 对话接口 + 会话管理)              │\n└──────────────────────┬──────────────────────────────┘\n                       │\n┌──────────────────────▼──────────────────────────────┐\n│                   🌐 OpenCode 核心                   │\n│      AI 编程服务 | Chat 对话服务 | CLI 工具链         │\n└─────────────────────────────────────────────────────┘\n```\n\n### 架构说明\n\n| 层级 | 职责 | 关键组件 |\n|------|------|----------|\n| 📱 平台适配层 | 接收各平台消息，统一格式转换 | 8 个平台适配器 |\n| ⚙️ 核心处理层 | 消息路由、会话管理、业务处理 | RootRouter、SessionManager、Permission、Question |\n| 🔗 集成层 | 与 OpenCode 深度集成，完整功能调用 | OpencodeClient SDK (编程 + 对话) |\n| 🌐 OpenCode 核心 | AI 服务、对话服务、工具链 | OpenCode 全功能服务 |\n\n### 与传统桥接的区别\n\n| 特性 | 传统消息桥接 | OpenCode Bridge |\n|------|-------------|-----------------|\n| 功能范围 | 消息转发 | 完整功能套壳 |\n| 会话管理 | 简单映射 | 深度集成会话系统 |\n| 能力支持 | 单一 AI | 编程 + 对话双能力 |\n| 权限控制 | 无 | 完整权限交互体系 |\n| 文件操作 | 无 | 支持文件读写传输 |\n| 可扩展性 | 有限 | 支持插件化扩展 |\n\n---\n\n## 🚀 快速开始\n\n### 桌面应用（Windows / macOS，推荐）\n\n在 [GitHub Releases](https://github.com/HNGM-HP/opencode-bridge/releases) 下载对应安装包：\n\n| 平台 | 安装包 | 说明 |\n|------|--------|------|\n| Windows | `.exe` | 双击安装，若提示\"未识别应用\"请选择\"仍要运行\" |\n| macOS | `.dmg` | 拖拽至 Applications，首次启动请右键选择\"打开\" |\n\n启动应用后会自动弹出浏览器到 `http://localhost:4098`，**首次访问会自动进入安装引导**：\n\n1. 选择界面语言（中文 / English）\n2. 选择一个先要接入的平台（也可跳过）\n3. driver.js 风格的左侧菜单高亮逐项讲解（可跳过，后续不再显示）\n\n引导完成后随时可在右上角的\"帮助\"菜单回看 README 与平台配置文档链接。\n\n---\n\n### NPM 安装部署（Linux / 服务器 / 无桌面环境）\n\n```bash\nnpm install -g opencode-bridge\n```\n\n> 也可使用 `npx opencode-bridge` 免安装直接运行。\n\n#### 子命令一览\n\n| 命令 | 说明 |\n|------|------|\n| `opencode-bridge` | **首次运行**进入 TUI 交互式向导；**已配置**则直接启动桥接服务 |\n| `opencode-bridge init` | 强制重新进入 TUI 向导（重新配置 / 修改任何项） |\n| `opencode-bridge start` | 跳过向导，直接启动服务 |\n| `opencode-bridge --config-dir /path` | 指定配置目录（默认 `./data`） |\n| `opencode-bridge --version` / `--help` | 版本号 / 用法帮助 |\n\n#### TUI 向导流程\n\n1. **选择语言**（中文 / English，偏好持久化）\n2. **选择配置方式**：\n   - 在终端中通过 TUI 完成配置（推荐用于无桌面环境）\n   - 启动 Web 管理面板，在浏览器中配置\n   - 跳过配置，直接启动服务\n   - 查看帮助 / 文档\n3. **进入轮询主菜单**：选择初始接入平台 → 平台增删/凭据 → OpenCode 连接 → 群聊行为 / 白名单 → 可靠性 / Cron / 心跳 → 输出显示 → Web 管理面板启停 → 帮助 → 启动服务 / 退出\n\n> TUI 与 Web 面板共用同一份 SQLite 配置（`data/config.db`），任意一侧修改对另一侧立即生效。\n\n#### 仅启用平台不启用 Web 面板\n\n在 TUI 的\"Web 管理面板\"菜单关闭，或临时通过环境变量：\n\n```bash\nBRIDGE_DISABLE_ADMIN=1 opencode-bridge start\n```\n\n适用于内网安全场景：平台适配器照常收发消息，但不暴露 Web 端口。\n\n---\n\n### 源码部署（开发者）\n\n```bash\ngit clone https://github.com/HNGM-HP/opencode-bridge.git\ncd opencode-bridge\n```\n\n#### 一键部署\n\n**Linux / macOS：**\n\n```bash\nchmod +x ./scripts/deploy.sh\n./scripts/deploy.sh\n```\n\n**Windows PowerShell：**\n\n```powershell\n.\\scripts\\deploy.ps1\n```\n\n部署脚本将自动完成：检测 Node.js / OpenCode → 安装依赖并编译 → 生成配置文件。\n\n#### 启动服务\n\n```bash\n# Linux / macOS\n./scripts/start.sh\n\n# Windows PowerShell\n.\\scripts\\start.ps1\n\n# 开发模式\nnpm run dev\n```\n\n---\n\n服务启动后，访问 Web 配置面板完成各平台接入配置：\n\n```\nhttp://localhost:4098\n```\n\n> 管理后台不再设置账号 / 密码，请确保 4098 端口仅在受信网络暴露，或通过反向代理 + 防火墙控制访问。\n\n---\n\n## ❓ 常见安装问题\n\n### macOS 提示\"已损坏\"\n\n**问题现象**：\n```\n\"OpenCode Bridge\" 已损坏，无法打开。你应该将它移到废纸篓。\n```\n\n**原因说明**：\n- macOS 的安全机制（Gatekeeper）阻止了未签名的应用运行\n- 本项目为开源免费项目，未购买 Apple Developer 证书进行签名\n\n**解决方案**（任选其一）：\n\n#### 方法 1：右键强制打开（推荐）\n```\n1. 右键点击 \"OpenCode Bridge.app\"\n2. 按住键盘上的 \"Option\" 键\n3. 双击 \"打开\" 按钮\n4. 在弹出对话框中点击 \"打开\" 确认\n```\n\n#### 方法 2：系统设置解除限制\n```\n1. 打开 \"系统设置\" → \"隐私与安全性\"\n2. 找到 \"OpenCode Bridge 被阻止\" 的提示\n3. 点击 \"仍要打开\"\n```\n\n#### 方法 3：命令行移除隔离属性\n```bash\n# 在终端中执行（需要替换实际路径）\nxattr -cr /Applications/OpenCode\\ Bridge.app\n```\n\n**一次性操作后**，以后就可以正常双击启动了。\n\n---\n\n### Windows 提示\"未识别的应用\"\n\n**问题现象**：\n```\nWindows 已保护你的电脑\nMicrosoft Defender SmartScreen 筛选器已阻止无法识别的应用启动\n```\n\n**解决方案**：\n1. 点击 \"更多信息\"\n2. 点击 \"仍要运行\"\n\n**原因说明**：这是 Windows Defender 的正常保护机制，对无签名的应用都会提示。确认后即可正常运行。\n\n---\n\n### 应用启动后无法访问管理面板\n\n**排查步骤**：\n\n1. **检查应用是否运行**：\n   - **Windows**：查看系统托盘（右下角）是否有 OpenCode Bridge 图标\n   - **macOS**：查看顶部菜单栏是否有图标\n\n2. **手动打开管理面板**：\n   ```\n   在浏览器中访问：http://localhost:4098\n   ```\n\n3. **检查端口占用**：\n   ```bash\n   # Windows PowerShell\n   netstat -ano | findstr :4098\n   \n   # macOS/Linux\n   lsof -i :4098\n   ```\n\n4. **检查 Web 是否被关闭**：在 TUI 中可手动关闭 Web 面板。如需重新打开，运行 `opencode-bridge init` 进入\"Web 管理面板\"菜单启用，或确认未设置 `WEB_ADMIN_DISABLED=true` / `BRIDGE_DISABLE_ADMIN=1`。\n\n5. **查看日志文件**：\n   - **Windows**：`%APPDATA%/opencode-bridge/logs/`\n   - **macOS**：`~/Library/Application Support/opencode-bridge/logs/`\n\n---\n\n### 其他问题\n\n如果遇到其他问题，请：\n1. 查看 [故障排查文档](./assets/docs/troubleshooting.md)\n2. 在 [GitHub Issues](https://github.com/HNGM-HP/opencode-bridge/issues) 搜索类似问题\n3. 提交新的 Issue 并附上错误日志\n\n---\n\n## 📝 命令速查\n\n### 通用命令（全平台可用）\n\n| 命令 | 说明 |\n|------|------|\n| `/help` | 查看帮助 |\n| `/status` | 查看当前状态 |\n| `/panel` | 显示控制面板 |\n| `/model` | 查看当前模型 |\n| `/model <名称>` | 切换模型 |\n| `/models` | 列出所有可用模型 |\n| `/agent` | 查看当前角色 |\n| `/agent <名称>` | 切换角色 |\n| `/agents` | 列出所有可用角色 |\n| `/effort` | 查看当前推理强度 |\n| `/effort <档位>` | 设置推理强度 |\n| `/session new` | 开启新话题 |\n| `/sessions` | 列出会话 |\n| `/undo` | 撤回上一轮交互 |\n| `/stop` | 停止当前回答 |\n| `/compact` | 压缩上下文 |\n| `/rename <名称>` | 重命名会话 |\n| `/project list` | 列出可用项目 |\n| `/clear` | 重置对话上下文 |\n\n### 资源管理\n\nWeb 管理面板提供一级菜单「资源管理」，入口为 `/resources`，用于管理 Skills、MCP Servers、Agents 与 Providers。\n\nCLI 可使用以下命令管理同类资源：\n\n| 命令 | 说明 |\n|------|------|\n| `opencode-bridge bridge resource skill ...` | 管理 Skill：list/create/edit/enable/disable/delete |\n| `opencode-bridge bridge resource mcp ...` | 管理 MCP：list/add/edit/enable/disable/delete |\n| `opencode-bridge bridge resource agent ...` | 管理 Agent：list/create/edit/delete |\n| `opencode-bridge bridge resource model ...` | 管理 Provider/Model：providers/set-key/remove-key/models/login/logout |\n\n飞书侧 Agent 创建/管理入口已迁移到资源管理；请优先使用 Web `/resources` 或上述 CLI。\n\n### 飞书专属命令\n\n| 命令 | 说明 |\n|------|------|\n| `/send <路径>` | 发送文件到群聊 |\n| `/cron ...` | 管理 Cron 任务 |\n| `/commands` | 生成命令清单文件 |\n| `/create_chat` | 私聊中调出建群卡片 |\n| `!<shell 命令>` | 透传 Shell 命令（白名单） |\n| `//xxx` | 透传命名空间命令 |\n\n### Discord 专属命令\n\n| 命令 | 说明 |\n|------|------|\n| `///session` | 查看当前绑定的会话 |\n| `///new` | 新建并绑定会话 |\n| `///bind <sessionId>` | 绑定已有会话 |\n| `///undo` | 撤回上一轮交互 |\n| `///compact` | 压缩上下文 |\n| `///workdir` | 设置工作目录 |\n| `///cron ...` | 管理 Cron 任务 |\n\n---\n\n## 📚 文档导航\n\n### 核心文档\n\n| 文档 | 说明 |\n|------|------|\n| [架构设计](./assets/docs/architecture.md) | 项目分层设计与核心模块职责 |\n| [配置中心](./assets/docs/environment.md) | 完整配置参数说明 |\n| [部署运维](./assets/docs/deployment.md) | 部署、升级与 systemd 配置 |\n| [命令速查](./assets/docs/commands.md) | 完整命令列表与使用说明 |\n| [可靠性指南](./assets/docs/reliability.md) | 心跳、Cron 与宕机救援配置 |\n| [故障排查](./assets/docs/troubleshooting.md) | 常见问题与解决方案 |\n\n### 平台配置文档\n\n| 文档 | 说明 |\n|------|------|\n| [飞书配置](./assets/docs/feishu-config.md) | 飞书事件订阅与权限配置 |\n| [Discord 配置](./assets/docs/discord-config.md) | Discord 机器人配置指南 |\n| [企业微信配置](./assets/docs/wecom-config.md) | 企业微信机器人配置指南 |\n| [Telegram 配置](./assets/docs/telegram-config.md) | Telegram Bot 配置指南 |\n| [QQ 配置](./assets/docs/qq-config.md) | QQ 官方 / OneBot 协议配置指南 |\n| [WhatsApp 配置](./assets/docs/whatsapp-config.md) | WhatsApp Personal/Business 配置指南 |\n| [微信个人号配置](./assets/docs/weixin-config.md) | 微信个人号配置指南 |\n| [钉钉配置](./assets/docs/dingtalk-config.md) | 钉钉机器人 Stream 模式配置指南 |\n\n### 扩展文档\n\n| 文档 | 说明 |\n|------|------|\n| [Agent 使用](./assets/docs/agent.md) | 角色配置与自定义 Agent |\n| [实现细节](./assets/docs/implementation.md) | 关键功能实现说明 |\n| [SDK API](./assets/docs/sdk-api.md) | OpenCode SDK 集成指南 |\n| [工作目录指南](./assets/docs/workspace-guide.md) | 工作目录策略与项目配置 |\n| [灰度部署](./assets/docs/rollout.md) | 路由器模式灰度与回滚 |\n\n---\n\n## 📋 环境要求\n\n| 依赖 | 版本要求 |\n|------|----------|\n| Node.js | >= 20.0.0 |\n| 操作系统 | Linux / macOS / Windows |\n| OpenCode | 需安装并运行 |\n\n---\n\n## 🔧 配置说明\n\n### 配置管理方式\n\n| 方式 | 说明 |\n|------|------|\n| Web 面板 | 访问 `http://localhost:4098` 进行可视化配置（推荐有 GUI 环境） |\n| TUI 终端向导 | `opencode-bridge init` 进入轮询菜单，离线可用（推荐无 GUI 环境） |\n| SQLite 数据库 | 配置存储于 `data/config.db`，Web / TUI 共用同一份 |\n| `.env` 文件 | 仅作首次迁移来源；运行时配置以 SQLite 为准 |\n\n### 核心配置项\n\n| 配置项 | 默认值 | 说明 |\n|--------|--------|------|\n| `FEISHU_ENABLED` | `false` | 是否启用飞书适配器 |\n| `DISCORD_ENABLED` | `false` | 是否启用 Discord 适配器 |\n| `OPENCODE_HOST` | `localhost` | OpenCode 服务地址 |\n| `OPENCODE_PORT` | `4096` | OpenCode 服务端口 |\n| `ADMIN_PORT` | `4098` | Web 配置面板监听端口 |\n| `WEB_ADMIN_DISABLED` | `false` | 设为 `true` 启动时不开 Web 面板（仅运行平台适配器） |\n| `CLI_LANG` | `zh` / `en` | TUI 向导语言偏好（首次运行自动询问后保存） |\n\n完整配置参数请参考 [配置中心文档](./assets/docs/environment.md)。\n\n---\n\n## 🌟 贡献与反馈\n\n如果这个项目对你有帮助，欢迎点个 **Star** ⭐ 支持！\n\n[![Star History Chart](https://api.star-history.com/svg?repos=HNGM-HP/opencode-bridge&type=github&theme=hand-drawn)](https://star-history.com/#HNGM-HP/opencode-bridge&Date)\n\n---\n\n## 📄 许可证\n\n本项目采用 [GNU General Public License v3.0](./LICENSE)。\n\n---\n","readmeFilename":"README.md"}