{"_id":"lark-for-claude","_rev":"45-93b33ee880335e6bacad3cb08a49da12","name":"lark-for-claude","dist-tags":{"latest":"1.7.1"},"versions":{"0.1.0":{"name":"lark-for-claude","version":"0.1.0","license":"MIT","_id":"lark-for-claude@0.1.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"c01bd86fb18bdc27734526d0e9e4ce301a9ff005","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.1.0.tgz","fileCount":37,"integrity":"sha512-5842/fWSXmqlHxHU84pnpdhTTRAO0Fb5oEqcIxc9VRNb5ZL6BmntvmOm8qMJEs0ejSwGWpXMlSfghTLV/uZPSw==","signatures":[{"sig":"MEQCIDzmfkmBKx6dMrWJo8QcFLuEKZU1TIXLtBgAzsKsIxWkAiB1Kw28s4P38hXrldPbN08PwkRtRqJSFSyMZYX6BDFRDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182547},"type":"module","gitHead":"c1c3808d1e431670f6322551ba9a3022bb084342","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.1.0_1778631493104_0.3187102562705926","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"lark-for-claude","version":"0.1.1","license":"MIT","_id":"lark-for-claude@0.1.1","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"83a668ce34cea08fd69bf1d3cd8efdd9ccc21beb","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.1.1.tgz","fileCount":46,"integrity":"sha512-qZglAVS3F9npckbmbzEPdAzcWlyQyzpv/c67MsJPMF1ZeTpYARuFgIdiAob8qjO9vKU1mTinj+SPtYa+ZZjzIw==","signatures":[{"sig":"MEUCIQDz92iTAz3NlAmi/pArbdSOgZexB/9wfyWWoDowZRi3CAIgWc/LruI/vkX50logYqwam65BfTKs1IZnrvi+lDHhKio=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183009},"type":"module","gitHead":"8987a52484bfec94eb69a4f15d6f00d65d76095b","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.1.1_1778635295241_0.870319037254633","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"lark-for-claude","version":"0.1.2","license":"MIT","_id":"lark-for-claude@0.1.2","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"08d9e4e5919631ca44570a43c528a1cf39ac90c6","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.1.2.tgz","fileCount":46,"integrity":"sha512-aMKHgpl2jeqw7UXPJucL1bSZqc21/RtXDC2Wpe35IOFIWwanyCy8L/Xc702rxTY6cB4ZloBGi/BiP7TYf78udQ==","signatures":[{"sig":"MEUCIER5eNKd765kOJu9sBzM+Ry2QrZctupF6WNaSTwSIDvgAiEAom+rtRI18Mb2kmEEIHqdg7j3QPP+5JHbvbV9js/kHlk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188487},"type":"module","gitHead":"dbe28a21f7615dcb2ed5620293971bd23a08e75d","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.1.2_1778638986699_0.9181000766989718","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"lark-for-claude","version":"0.1.3","license":"MIT","_id":"lark-for-claude@0.1.3","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"912b2078680b69e2cc5d704f9119e468aba9823b","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.1.3.tgz","fileCount":46,"integrity":"sha512-ULVSaemRdNDUB0sTsAt5iS9kEaxUoSsWt1SKCgsJNgMef555WJpNTOuAKnW5ntEUUcuXBISVo9cPw93iSeQryg==","signatures":[{"sig":"MEUCIAFpuvQd1NhbnDY0tmD2eQdXZSYqFvE1kOdgioCIf7twAiEAyx9ulE893166HWDGmBGXqJDhXxYJB9xzRDEVACKSi9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189284},"type":"module","gitHead":"22889a06649d7319316173deea009c703a571d04","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.1.3_1778642233114_0.4643818081675739","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"lark-for-claude","version":"0.1.4","license":"MIT","_id":"lark-for-claude@0.1.4","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"51e0ad33f2faf8190beeeef40fded8526097428e","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.1.4.tgz","fileCount":46,"integrity":"sha512-RZfgORdEWAP69CvyyrEZJx1ZL6yv8tIsdycaOG4umVuO8h8/LI5pm9P1EM3kuDmtcFV5Xh4Jtmw2muQp8d865Q==","signatures":[{"sig":"MEUCICNbgHxskLK0++bHFkGxEiI56CJdz+0Pf5a1rZH4fG1WAiEAylI59I+UxXtNUotBqQvNiwOJRbyHRLlvty/XRw+aPnU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188898},"type":"module","gitHead":"d4d4ceed308ecd99c1dc06608079af641f5c5268","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.1.4_1778644410121_0.3214679563698808","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"lark-for-claude","version":"0.1.5","license":"MIT","_id":"lark-for-claude@0.1.5","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"6312d907478ef880959ea4ee272663d979e911b3","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.1.5.tgz","fileCount":46,"integrity":"sha512-TG+rjYx0pYuDkJ7DeQC7EPA+rmB4pj4ZmdQp1GXcyHZAvcIJQaYc7vd6WIfGtTv9d+d8E+UtW5MH7WDvsWKg0Q==","signatures":[{"sig":"MEUCIAY3sRhnEz9Tcba+BVFKmNrT2khawOsKBnevrJS3RmDkAiEAoXFRCVo1q4KcAFTjAlXt4Ue4+X4OrPit8UmTD4EaAa0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191769},"type":"module","gitHead":"21d39ec52a2f7ee34614ce2651e9e0e91248c326","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.1.5_1778650418459_0.46818289847347905","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"lark-for-claude","version":"0.1.6","license":"MIT","_id":"lark-for-claude@0.1.6","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"e8a03a6fe8871781fce8943f948ee6cdeaf4f8ad","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.1.6.tgz","fileCount":46,"integrity":"sha512-yXa+gUVRBSSdnt47hLUX+nb8EPvO9NPL2kQRve3AIeCZF9C1arfGO0+wILa6Qv9OPsWlT2sKiWfMaOJblL1NmQ==","signatures":[{"sig":"MEQCIFqbkbJHzgjRwkSWTaUSNjnHq8yfplo7hmsRasOVZKbjAiAuUZSZxnNOAIjQMnjQrbYDmxhOuts8PYGXUaXkTwxKdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176426},"type":"module","gitHead":"c35c050d525c8b0cb86bab62b6e6f87cb96d5072","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.1.6_1778724505674_0.09894764244391396","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"lark-for-claude","version":"0.1.7","license":"MIT","_id":"lark-for-claude@0.1.7","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"178ada0aad295511362cdf594e9c5341a135ce23","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.1.7.tgz","fileCount":36,"integrity":"sha512-onzwU91+kK438UnjuBAoJ7ET4vvWu5lWic8bfBE3Q/CozpyKYmVDhjGFsoLb2v3AgVryFsXLxwwMHu5Hb5VFCg==","signatures":[{"sig":"MEUCIQDbnQVMRG9CIg6E4A+xSY8tl6r5PGcAWzXim8NxDvRtwgIgJtre3WgXX+GPuI91SpcSjfCgsr2Ryz87N1x52nERboc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137928},"type":"module","gitHead":"5acfb05e2369737f2fc916afb79857fe90b1d4dc","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.1.7_1778725116799_0.9003867609306866","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"lark-for-claude","version":"0.2.0","license":"MIT","_id":"lark-for-claude@0.2.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"c37dcafbd3c24aa88b238db9c8dc1dcec3889863","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.2.0.tgz","fileCount":32,"integrity":"sha512-lUE4yAnkY0QFgJLhI7ChcSRDZDjOsu49DFQFlAovaoxrUaYnjj71KX9HmdkfjWyKXTycRY7B/zUOc4XKdpROrA==","signatures":[{"sig":"MEQCIAhz9XZDlEWeeaJkbWauTw1Uu/zsfy0z/jydc7k0qcJuAiA1BG8SlcVnY8c+D7Yx12TmRj11BqHKawjUif4cqWnk6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129308},"type":"module","gitHead":"43f1c45e1b33a2003af00079a14d33f8aff84ce4","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.2.0_1778726442768_0.13733818266202213","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"lark-for-claude","version":"0.2.1","license":"MIT","_id":"lark-for-claude@0.2.1","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"c13886ec415645382f0b7c7eb0b5a59a3d8a0674","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.2.1.tgz","fileCount":32,"integrity":"sha512-PGzipIK7f7tv1OrnTmysY+A44AprbpSoElGKgiFotFV5sqKckWYVNTQPNBdz/029KEkGKVIg00JQ0UFHI31V3Q==","signatures":[{"sig":"MEUCIQCBgSKudRXdN/rPl8P5kgPqjxiJ32OLSmJVZ6L/ny2sWAIgToNmjqhc+RchCTFvNMxUOli6qWIfH3GrN7/Rhc+babg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129317},"type":"module","gitHead":"53b5715d2d74a3b574d5657ae1ba9e96d9927cf8","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.2.1_1778726732686_0.24313224610586603","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"lark-for-claude","version":"0.2.2","license":"MIT","_id":"lark-for-claude@0.2.2","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"da5eb06c1fbd7f16b2883cf295681d56d87dc7f7","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.2.2.tgz","fileCount":32,"integrity":"sha512-KdNjAtdeEDLYd+FsLlAUA/e1GBom3k5t07NwDL/qlm6WPYzxXk5OKkrdBV6Qvc6P0ReG3hqIJr8wgFVeotBJJw==","signatures":[{"sig":"MEYCIQDiFpbE1U5fOgjhrIDsmaR+r7IwQfqMbO5B5OaSkLXyvwIhAIiJAWeLUH8pyuWNH4hCToIpE8nlzFdUhmtlbgE+Z0i7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129751},"type":"module","gitHead":"08e42b5dedc9009a6610304227c0b2c65c9fa1a5","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.2.2_1778727055156_0.2602474141132096","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"lark-for-claude","version":"0.3.0","license":"MIT","_id":"lark-for-claude@0.3.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"6a92583534c5993ca5bd8f5a1d1dd022ee7b5d0d","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.3.0.tgz","fileCount":32,"integrity":"sha512-UsbdrF+vSOFEqpO9jO4/OTnjPNldHrBDHPxz3bFbRK8EzegMmfcrXcoRgR8SOfZaz6Zg+RgitFV8NDXDNSyg9g==","signatures":[{"sig":"MEUCIQCUK2lgMy/WpqaoSvN+LRF4NWY0xx54iKZQW4+EoxLZdQIgEpb9/XmVPUj4jryt9QpSTLRL/IUx7otjlx/Vazundzc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133158},"type":"module","gitHead":"f958405f4793cc47a6b0614064912b7ccc4380ec","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.3.0_1778728746786_0.9583177953996791","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"lark-for-claude","version":"0.3.1","license":"MIT","_id":"lark-for-claude@0.3.1","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"b345f518a6dedea99a64ec76e3dd4f4446a256fb","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.3.1.tgz","fileCount":32,"integrity":"sha512-IU+E0HI3y54Sw3Na20keq5v+Jek1xPdDfk6LRVHj08+BwkYFlwIbM2YNaBbODpNUXAmqsg0IPY5BRl8TapuBsQ==","signatures":[{"sig":"MEUCIQCsEFACl8+1Irc2Bu7y4yr/mr85tNjNR9PyR+igoFOsBwIgIcHlacBZM/oE+gRKC3fPlhyHJssG/TbiE4oNx6fU+W0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130349},"type":"module","gitHead":"fa04844862db8d75eb9f23560fa56cef7aeae1c5","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.3.1_1778729352616_0.7818440909919291","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"lark-for-claude","version":"0.4.0","license":"MIT","_id":"lark-for-claude@0.4.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"c065507a6b428f2e53a179570d0f8669bf2411de","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.4.0.tgz","fileCount":32,"integrity":"sha512-Q7DYiy+s0h+SmEkkDrlWXdMr+nJU5ePTksqUVktfovnSmsEKcy3RR8i0rUTk5uy5YYf4U/cMBbNKHMuLTi2MAw==","signatures":[{"sig":"MEYCIQCKFfPBzHKu2+zWfvtd/PmHpNL0fOH7K/WN9OoFa8sPqAIhAJw4htw0KQYWAIscf9d368XxYjQq7ykM4lmO0fgufutf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131423},"type":"module","gitHead":"337f4998cc3e1c91f89f0f9f7e64f78dc0f2dbb6","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.4.0_1778733968733_0.8541151348701499","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"lark-for-claude","version":"0.4.1","license":"MIT","_id":"lark-for-claude@0.4.1","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"fd9e26230a968d8c6f9e094c26f1faf093bb95e5","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.4.1.tgz","fileCount":32,"integrity":"sha512-LioYvI3Pdwowz4N3kER/ADxTs5C94BeTIwLNvsd703pHdwaOVvjXnE+/4lv/9Tbfj8wt2ea7jby+TxZXLlHE4w==","signatures":[{"sig":"MEQCIFrJRg//g2V/NUvC62IE0iEDtmxmklmIhm8Y6bZEtRlKAiAXUfUpXVICPQ/iT0rwmTkAxB3GOLwVTgohi96Cxqa7bA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131233},"type":"module","gitHead":"5d07d4d16c1345f5f1d24abecb97a873a465b48c","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.4.1_1778734308782_0.6034547237364905","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"lark-for-claude","version":"0.4.2","license":"MIT","_id":"lark-for-claude@0.4.2","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"f66889e4d0213a01846e6234ff7cfac14d92fa60","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.4.2.tgz","fileCount":32,"integrity":"sha512-x9PrnjiTLGExEXwCOX/bkxG8B9/Sse8pnAPzj8oY8q1ed+f72RmPTb1ajSrO32980ZpuUNxu5yY6C3SQGJdLtw==","signatures":[{"sig":"MEUCIQCkiz6nEJdeJrdtqzfG9AZ6ynGZ03fnnT7WHa0//C/tBgIgXDUF4HtjfITuaJIC3reBRF7VzgKg4QXpOGQ4LI+3JSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131329},"type":"module","gitHead":"6895319e70ed688165a3b7863a279188b573723b","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.4.2_1778735019110_0.02933457829733488","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"lark-for-claude","version":"0.4.3","license":"MIT","_id":"lark-for-claude@0.4.3","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"6b6edafe02346b8a8f1e4cbd7c03d5aee1084145","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.4.3.tgz","fileCount":32,"integrity":"sha512-1e4U5pRjG5iD4aSFP6VYKo/IHeJACbyetALP1VeEDEO1KzX28XgbVNI6yfg+S6SM+5g80aMqf0sTLlZWJ8zoPQ==","signatures":[{"sig":"MEUCIQDo2m+Y+XByUQdFyHRiKbYntfO5N2+tf7Jl/ilO5wge4AIgL2NFt2YrVDKouxuS5Z/Q6LOvfhh20c3eY28+8097St4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131853},"type":"module","gitHead":"9bb32b1c4e30801d1a278d104d6fd5dd7d211252","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.4.3_1778736187573_0.9870826669666573","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"lark-for-claude","version":"0.4.4","license":"MIT","_id":"lark-for-claude@0.4.4","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"42c291a9a8e5a2618080b59653b6608694ce8f57","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.4.4.tgz","fileCount":32,"integrity":"sha512-VYM2g4IefcQDBCu7OYVl8JANBWcD32sTPgTMgWIuK6t87zjX6coCXruDnKREf8YEMPVFTexh94BTCs6qnOZxMw==","signatures":[{"sig":"MEYCIQCOPhh99fzzHs6teAmNigb+uFx4tkE3bE9qzolqrtb0VAIhAKPY0SpllTL2jHvvyK/fwmscL3J5XSqeobbCES0kfbOO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132224},"type":"module","gitHead":"420b7c781b12c46e0872ad4e229f9aa4ddae722d","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.4.4_1778736563811_0.9168908516716834","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"lark-for-claude","version":"0.4.5","license":"MIT","_id":"lark-for-claude@0.4.5","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"dcb8fc3a3701b5780dfa2d6f25d05b5518e0ed9b","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-0.4.5.tgz","fileCount":32,"integrity":"sha512-X0qDJnYJ/TrW0ge95bgcMag9pYszszpcztOibxnJ0xGpADfG4EYWJRXDbCGD29aWxwO1xlRjFc/yBTroaQrjRA==","signatures":[{"sig":"MEUCIQCbJqVjVEIaaFp73/mDskg+YObCUQMljwgFWllSS67NeAIgYXD0mNbcyoz6brMeEywWeHBrgjq5CtWrW0YyUS3yK9k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132872},"type":"module","gitHead":"54d6fec00168ab120cd95a7a437e8af0a07a1be6","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_0.4.5_1778738711922_0.8625068297782927","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"lark-for-claude","version":"1.0.0","license":"MIT","_id":"lark-for-claude@1.0.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"124d90032e26c541247a45cb7832484285e52043","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.0.0.tgz","fileCount":32,"integrity":"sha512-gS/puRhIq1S7WEvdFk0q0JcYvH3adcC4FWdztjlzcg/J8qrPvFD5KiIKm3g1gxNW5hgBEp/1sPkhJ/HomDzFhA==","signatures":[{"sig":"MEUCIQCFCF1IDorG8m/c61ESQjcyzUl3gJ1nLpdp3aY+BiaIbgIgMTBZNjvwzT3Yfm5uPOPBaIphsOpb4ABX+2gC3qJawvM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132083},"type":"module","gitHead":"b685c693fbdee661a4a505c9db88403dd628e2d9","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.0.0_1778739676168_0.8953298435721835","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"lark-for-claude","version":"1.0.1","license":"MIT","_id":"lark-for-claude@1.0.1","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"9a572ce906810cc67a81cc81ad2e8b14725ccef2","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.0.1.tgz","fileCount":46,"integrity":"sha512-shEzLF9FoPFMA6Z18d3AV3x4RJfNSlVRHFqkp+drbM8QQLzNko3UbnzQ5E6hni/d7XI2ZUhRxyCP34Vywf234w==","signatures":[{"sig":"MEUCIQC3C4ceouWDeiK7Y/+2+v9mnSMMnLAO5NCm+roaPfhTdQIgeZm3zcT+ewwbyCvZVNBPODumWHa5OaLibj3Z6EoyPCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197010},"type":"module","gitHead":"014277c5c5f7f34455df8c76dd81438449823a71","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun src/server.ts","format":"biome format --write .","router":"bun install --no-summary && bun src/router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude— route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.0.1_1778743210861_0.5649223712114799","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"lark-for-claude","version":"1.1.0","license":"MIT","_id":"lark-for-claude@1.1.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"5c6d2bd36711ba7690498a519001319bd80fbf4f","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.0.tgz","fileCount":15,"integrity":"sha512-vtcLq94Jx8sswp5E9lMxyoKv6NdGlWc06ls/JW5mEYpp0rbDH5zSEiykbTEqubtmimvNQTEYSRXieNWfeSrimw==","signatures":[{"sig":"MEUCIGwK/smWFMxiAHKnpld/yl24gle4JQ7vHYvwuZm1C2D/AiEAh3H33HX72xGB69r+yqWTNEfUbV2tb8HkXy1aI5Lms+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144975},"type":"module","gitHead":"a3457777ef238d34ae293c8223a232e6f4ed3bbb","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.0_1778747543310_0.5127999939463104","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"lark-for-claude","version":"1.1.1","license":"MIT","_id":"lark-for-claude@1.1.1","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.js"},"dist":{"shasum":"fc29914f4d51e191244fa9dce339624be0bb6895","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.1.tgz","fileCount":15,"integrity":"sha512-7+wJoyf1TORRHkX6McccjZVEyMGEP5vdNKTDf0yLu+9BjMqr/V9i20+Sne07uDLCD9cjzoar8asWYa8i6kJqBg==","signatures":[{"sig":"MEUCIQC0xoOahlBQt27SPg6RVX2XL8Ioh3YIs6TJl5kafuqPPgIgIdIdfFE7izD2Ivtyf2mUzCj+NXjxrzW1CDXuBjh2Irk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144762},"type":"module","gitHead":"9326e989b089f554eaa62f8812fdc748a4b026d8","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.1_1778747705868_0.03967234821769372","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"lark-for-claude","version":"1.1.2","license":"MIT","_id":"lark-for-claude@1.1.2","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"6f316c758e9e40d582f7e3f162c862668a11b29f","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.2.tgz","fileCount":15,"integrity":"sha512-T62r8Fnv48AEBfM/t+0Wx6YDoHG3GadClXmp+2qKbIT6IG4z0wOm+gIiYWE/O6iL+dHHU0Bmf86TlGNlTtXrnQ==","signatures":[{"sig":"MEYCIQCAGg0cRKzXlnEOdWO5vxN0q49CCQNCU9gzZe4pC9btegIhAN03YI0+EA5vV0e9z52sKwCKH01Zu0n/qLJukfHP+F4n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144763},"type":"module","gitHead":"d9afc5e16ca568f6c49744834fa38f100a375f68","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node -e \"const{mkdirSync,writeFileSync,existsSync}=require('fs');const{join}=require('path');const d=join(require('os').homedir(),'.local','bin');const t=join(d,'claude-feishu');try{mkdirSync(d,{recursive:true});if(!existsSync(t)){writeFileSync(t,process.cwd()+'/bin/claude-feishu')}}catch{}\""},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.2_1778747775105_0.991372855473641","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"lark-for-claude","version":"1.1.3","license":"MIT","_id":"lark-for-claude@1.1.3","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"0ecc710562fc07cbbbdc0038b7b8bd30f0cf7a5c","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.3.tgz","fileCount":17,"integrity":"sha512-+ZM0vPJPs8EljSqSXpOBX8IiFztrdR1ODF0wmVKcWm62Fip3jzSrDomozX7Mdrb4SClrCMw3MdGBUjoxx8cJkw==","signatures":[{"sig":"MEUCIFFPrTbe4CvSRlQJXhuQgfPrU7y8ZGj9pgvkN4Yiu+uDAiEAwAEHfGNYomhwamQGp+U+ItCRDhcW8Ov8tGzlUvIKWjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147183},"type":"module","gitHead":"c7539cd414f16f4549f81ff094c4ec62e07513eb","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.3_1778748578685_0.08132087940379962","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"lark-for-claude","version":"1.1.4","license":"MIT","_id":"lark-for-claude@1.1.4","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"4f7a1ac6169a40b0517853284fb5f0e4b661041c","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.4.tgz","fileCount":18,"integrity":"sha512-wBVuJgQ7ZwARgo5L3nYQnx61MyHNcQVSVmkZBP8ZPE2iE8AwSZfFfnThZcRd+/M8t+POgwqEWF5t0732X23Hhw==","signatures":[{"sig":"MEQCIAgqQsQMykntqkdFg+PLA0krClNizWIimOvTco2dD3AZAiA6jeavWHy3DeToSkOSk0snqwBEXXvhDbzfqSarr5Jipw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147554},"type":"module","gitHead":"c7539cd414f16f4549f81ff094c4ec62e07513eb","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.4_1778749158375_0.9786778113450572","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"lark-for-claude","version":"1.1.5","license":"MIT","_id":"lark-for-claude@1.1.5","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"5da8bea2d0bd74b5aaafc82b02c9c459072374a0","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.5.tgz","fileCount":15,"integrity":"sha512-ZqbIEXpU/dgyFBqH9VrvCp5QJQGY1Mmx8nXWhK/Zg++Kiwfi6a/T0uT2op7YkcVrdEeI3YJ3PQUWLxTrYGjZ6Q==","signatures":[{"sig":"MEYCIQCv3xmCk3bXWLkWNt1mwwuTcZ6rVBCmve/4iKfa6IWmawIhALzctLbcJp6TfxEe8kph4xEtCbrsPAZPwcOQNj6YJaaB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132919},"type":"module","gitHead":"6864a8e1598a1172a9a0e82b2a7f5191545d66f5","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.5_1778750036942_0.4932042168032249","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"lark-for-claude","version":"1.1.6","license":"MIT","_id":"lark-for-claude@1.1.6","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"677154aca4697d97c5134b0b149ab7cd53d8323b","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.6.tgz","fileCount":16,"integrity":"sha512-elJ73WYapZ3Tpwj2IGCRe/zCO2lkNMhtn9robiXeOIhVi/XULl6ZRZw8wlq3uDyr+LDg/h2KmXTNJRvu25+dUQ==","signatures":[{"sig":"MEYCIQC+XAnUg2lMT5UXVM3ABMHsvuGGynNsg4D3TbiPMAhPAwIhAJWZUW6QHLW9Y18xD9Ees46XjLPJiiw8e2xyoW/14ea3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143900},"type":"module","gitHead":"96b39301db8ebd7f487a99b356bd64881683201a","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.6_1778752078107_0.3461664514534475","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"lark-for-claude","version":"1.1.7","license":"MIT","_id":"lark-for-claude@1.1.7","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"670b01ff4a73df87254daf8bb4cc6ace46300dae","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.7.tgz","fileCount":16,"integrity":"sha512-6J9GpOpO4oWl9woa/wvlJt/lpmEJGanY05fXEBp1lLJt5pkW/AimSyCSpJ9B+rZNZuLS1aXN/DEa6tQ3bftQwA==","signatures":[{"sig":"MEUCIQDaY1eETjCeonjmJtxz7wHn6bbtE3jgByOpDzS9k2s0KQIgYXo8SlBVp0JK/DeOMRUI7ZEdS5BFxLUo7lkzD5D1DZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144028},"type":"module","gitHead":"bab6fbb81cf49b6a5969a0c7f351b477aa50d724","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.7_1778753270593_0.823563143094107","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"lark-for-claude","version":"1.1.8","license":"MIT","_id":"lark-for-claude@1.1.8","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"b6fac7aa381b1840e354894cc6e2e271f3442fca","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.8.tgz","fileCount":16,"integrity":"sha512-AO7/9yM51mjI0X8Gvn+Mx2FtoREo5OgDcKurPQfTjeSRg+Lfdq8U3xCppBEIUDiklIwBOyouygUCvuomEaJzPg==","signatures":[{"sig":"MEUCIGaSpaWZxNNse60HMjKrjbnP1useAn01RrrLl1biIQVIAiEAtCZYDe+Ax8YqLp8sbrWzDppyqKMB8lnWGSP9bD6JBcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143884},"type":"module","gitHead":"7fdbb418c4d9d2cc023aa7a7372653a2793ecac6","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.8_1778753552544_0.891537740610266","host":"s3://npm-registry-packages-npm-production"}},"1.1.9":{"name":"lark-for-claude","version":"1.1.9","license":"MIT","_id":"lark-for-claude@1.1.9","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"3ecc66afc9b9cbca9e27c8c0c794175cd8a4b61a","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.9.tgz","fileCount":16,"integrity":"sha512-ozul2rpIrNQvSlaC8Rmfx9nAJjHxwHTQv7dWAZglLlUxAa72/egr/Xt7G9DNLUEQHT3H/xW081cu2IKCFSpJSg==","signatures":[{"sig":"MEUCIQDp7Ggz0oHFu4mJ+O05x8YSB9eN0reSXImtHX6DtzETTgIgana0fDIHyy0vBd2yIbrfrB3qtORLc3eXAxlnZ0Dp5mQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144920},"type":"module","gitHead":"cb02cda076a3f6f44e385a6f89d73f001cb32c51","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.9_1778756548316_0.5457158076813917","host":"s3://npm-registry-packages-npm-production"}},"1.1.10":{"name":"lark-for-claude","version":"1.1.10","license":"MIT","_id":"lark-for-claude@1.1.10","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"dd3058b13ed367e2695d84727352bf8dd62c50ee","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.10.tgz","fileCount":16,"integrity":"sha512-EI1rhA4NQFsDNAFfDsBCDRkqySBiJkRvXRi1Oxt5OctaOMkjS5z8SSx0wmwSY7+KyxpzKLPhf2HSqikrdIM/TA==","signatures":[{"sig":"MEQCIDIspxkMnP63zZ4HdkNiBpGQtBZ2WCHkOgXkmNkWl4yIAiBdd7Oaa8K3zGaz8wNp0wU4+WAKZuhZI4WP/fwkFHv1DA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145114},"type":"module","gitHead":"5231b7d7c17e574d31c196632ee6b9a98904e128","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.10_1778756866519_0.3676135719980358","host":"s3://npm-registry-packages-npm-production"}},"1.1.11":{"name":"lark-for-claude","version":"1.1.11","license":"MIT","_id":"lark-for-claude@1.1.11","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"20fa59de17c031eb1efea29b0776b7af2b7c114d","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.11.tgz","fileCount":16,"integrity":"sha512-5nPor5ZDSWU1nPkM3Bf1ajU5mb9Cr5hRiehMzqLaSKQCkKs+PA228KLHGWk5pxxZIOvy1/3V2V/WsnNzGBS9LQ==","signatures":[{"sig":"MEUCIQDdW7DWGZsDCbloCRiA/ZFRg26IBZNZHJ8PTeEW3xzI5gIgFry+yHhu3HINKl8Wrp5Ju0/CRZocMtaLCnHD/EWrnO0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145155},"type":"module","gitHead":"d9114acbeec36f4460d84dd1851892b38221043d","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun install --no-summary && bun server.ts","format":"biome format --write .","router":"bun install --no-summary && bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.11_1778757296862_0.13796043827813587","host":"s3://npm-registry-packages-npm-production"}},"1.1.12":{"name":"lark-for-claude","version":"1.1.12","license":"MIT","_id":"lark-for-claude@1.1.12","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"ee9a0e15d0d049c8c135355c3640897caf0495c7","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.1.12.tgz","fileCount":16,"integrity":"sha512-bAMzFHWvR2bE3rnMJGLX2ithibNjsHfyMMTC9yk54+up62SxRECcwLNha4TRtstnBonOhXjjZGJUG8ZjyOoR9A==","signatures":[{"sig":"MEUCICRUaXTsA8UxsjuB4eX3nalQ/vBT5zS4br8msn9sd+zuAiEA9CnMfwoGGdE0RF2LWMWG87kedIPT60ergbEcO57BNbg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145099},"type":"module","gitHead":"6a5821707e4da072a8043a3bec6bead42bbde898","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun server.ts","format":"biome format --write .","router":"bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.1.12_1778758080938_0.46020019165056114","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"lark-for-claude","version":"1.2.0","license":"MIT","_id":"lark-for-claude@1.2.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"8eac9066784b62d816fffc032148c01f052c62f9","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.2.0.tgz","fileCount":15,"integrity":"sha512-EMaNxbZasoNq5+cznV5OpUuHImP0axKZelZrq3nuGTJ5NBuQbsVnwQ579qYz/otujnzHigyerZS/qW8109zMGQ==","signatures":[{"sig":"MEQCIHj1Iz2uM3hsg/cApXIGibiN2qBfd5keyCuTVJd16w1rAiA/mT9fG+og0KNegneShv4IWKmsh9dDUQnykq1A4qG+qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142085},"type":"module","gitHead":"850790965f34f822806724dda2ef292b2d74792d","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun server.ts","format":"biome format --write .","router":"bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.2.0_1778763606127_0.4550201290559577","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"lark-for-claude","version":"1.2.1","license":"MIT","_id":"lark-for-claude@1.2.1","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"41504248d0a813d2c77697e8a8f26fa6179b08c4","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.2.1.tgz","fileCount":15,"integrity":"sha512-Nrmf3SMpC2HoO1klPsy3AK985n4VkmiLJ2zJkduaWhLoTVWn3BfOb8NaShvUT1M0Ye9qTLvqhpMhm11e7IwYAw==","signatures":[{"sig":"MEUCIQCOWNpeu3c1zYKzK98IKITyawl3lvWmuE4/rQf9RoNvSAIgeA7wn9DkXuFWZauhBHYqBPq103TRVu71dwgEFkGq5D4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142104},"type":"module","gitHead":"dc99ad33395b208f7224621f1086c70430e3cea7","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun server.ts","format":"biome format --write .","router":"bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.2.1_1778764681519_0.841936905204038","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"lark-for-claude","version":"1.2.2","license":"MIT","_id":"lark-for-claude@1.2.2","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"5215c0154c38b65175ef8e4329a27500a1797ef9","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.2.2.tgz","fileCount":15,"integrity":"sha512-4m82uF1I0jnxhcT78VKkGVebzFWdzAN7zErr+3Nwy59W66zXcy2WjwUFGVCtZsQzow4RyBOwcuPv/VjT/HcqeA==","signatures":[{"sig":"MEQCIDgPZw64UrCq/ziZ22FP4By0c3GmI3GsCTAUutPbbUlNAiBXqdhzs6ICCq8tZHimhpFtzpinfIlp5ZnnEQx/1uj2Gw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141756},"type":"module","gitHead":"2fddeff799cb9b196d2ebcae72aea0cdf7ab4621","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun server.ts","format":"biome format --write .","router":"bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.2.2_1778764918609_0.9928856230087855","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"lark-for-claude","version":"1.3.0","license":"MIT","_id":"lark-for-claude@1.3.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"d5d983601f043e566f96e08a13e00844905e1b7a","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.3.0.tgz","fileCount":14,"integrity":"sha512-FnnvZf4y+oqKzb98mlMNu7VlIxFtbMsqEEvvDPfSxt6X4/9/2lFz4nxx9ShblYEf7oLtBGhr7Hyflw0d6f2O9A==","signatures":[{"sig":"MEYCIQCMCxYe1OLSzv3ZmXy8i/dmFvndCA7+ICQVLpJ70gQxvwIhAO1rtAw/lzb2Uhp4kcAiVX9Z6eTCXwjJYBiZk/ESeV6Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137826},"type":"module","gitHead":"3b21ca1bd0c3d4287dd3c1e7fe1919e4addb1d89","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun server.ts","format":"biome format --write .","router":"bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.3.0_1778768095426_0.4678827237717895","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"lark-for-claude","version":"1.3.1","license":"MIT","_id":"lark-for-claude@1.3.1","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"4c693f895361b8a39249e8e2f246bc7b2395f0a0","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.3.1.tgz","fileCount":15,"integrity":"sha512-w0D32oiNCWUGNSRRkUPiO8hk8UzVM6SW5zjLIJPqHtXo7/9heODShZ/MY5RhfUg442mwtlFN5XlDBoPJPGyKZw==","signatures":[{"sig":"MEUCIQCv+qN1uGYnMFkeARSWeyt7z59zpkmJL/MyDgd1HgGiSwIgFPHdO9+Qb5iRAfX6IrCb5r07NPJEF5AvXjsp5ZIuODk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137979},"type":"module","gitHead":"b94f56e55e5a77897786297c529a408fd1872587","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun server.ts","format":"biome format --write .","router":"bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.3.1_1778768195122_0.5895340893135237","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"lark-for-claude","version":"1.4.0","license":"MIT","_id":"lark-for-claude@1.4.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"0424cb477e088d0ce909dc62f876698c938e1226","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.4.0.tgz","fileCount":15,"integrity":"sha512-irukXKc3VG1Hr6kINYkdDqnNu5ytvFx45dWR+bSHwuZkR7/zi1T5hneBTHHCoEpFAiLsBnuZKYuevLicqHQzNA==","signatures":[{"sig":"MEUCIAjO6uPMNY+de4E6aPXeLMZZlfSbSnhkih61dYLhY3Q9AiEAwJkwidPZGhU7XsTo0cxXmsB4narIyQAXZ7SP2SIckK8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128140},"type":"module","gitHead":"5b2e8df1e3e2de6bd714d8c358c08fc88a76e87e","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun server.ts","format":"biome format --write .","router":"bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.4.0_1778810845102_0.8268903017476343","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"lark-for-claude","version":"1.5.0","license":"MIT","_id":"lark-for-claude@1.5.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"b1f2aa9faa749923c1e87115c89eb20b3a04d128","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.5.0.tgz","fileCount":15,"integrity":"sha512-gezR/sMK31h0XAlUm0HqnRqKEmgZCxSuXz3iIFrXSiAcBvWQXb3P9sTWFcVB4y0dWjqEFAlYLkgqAif3pWMdzA==","signatures":[{"sig":"MEQCIGwlDm6URqAaU0/6BcqXu+62QFCtwGUosRC6fOEYEJ0QAiAtkqbQ3PASySbrfZXjDEjpyq6WWS4P1DxcfbJF78vFPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130220},"type":"module","gitHead":"612b49e5a025592eb5e84aaca5f2f3c7f45b38d1","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun server.ts","format":"biome format --write .","router":"bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.5.0_1778817434023_0.9717816413832965","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"lark-for-claude","version":"1.5.1","license":"MIT","_id":"lark-for-claude@1.5.1","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"301f61e44cd873017874c6f5e67cc749a61bb8be","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.5.1.tgz","fileCount":15,"integrity":"sha512-RirHTD5pZFHPr8k04d6f22GRKQFva6sFmdVOi2Ed3DNF26pmDxt8NbIcgYgZhKq3NoB9YkuvH84ipmAQKhdOeA==","signatures":[{"sig":"MEYCIQDMIwt4ZlEbvlZw34CXyZbnMiMU4ZDq7RDPmD57ZZkhTQIhAIZtO/n2bxGlZmlB3qoCri/R9JIbSl/rfVx/S5J/6zvN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129694},"type":"module","gitHead":"ff11e01c99a825d19cf82aa3450f9c62b8bc3e4c","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun server.ts","format":"biome format --write .","router":"bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.5.1_1778818062386_0.35281177043299206","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"lark-for-claude","version":"1.6.0","license":"MIT","_id":"lark-for-claude@1.6.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"5d43e46678615ac65991c1c30577c17257c7c9d3","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.6.0.tgz","fileCount":15,"integrity":"sha512-wR2X8EAMYWI7ZGm0RGTbs9NLXADCqNUgIi4ssK5RB2q2vV62TQSyOqMsfe1IkBJKHxA3H44AfAX90pHXKeyUQQ==","signatures":[{"sig":"MEQCIFbwbbrszYYXv445s2ReJOKjsh2EWTiZXHAPUorykozYAiAt2dkr11rrymqdNL7bme4xH1ML6YCEz8StrjRuT7OxHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127264},"type":"module","gitHead":"e5805f464c4dbb28494465c60a7c7fcc8f5fca02","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun server.ts","format":"biome format --write .","router":"bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.6.0_1778826454877_0.45226023638834323","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"lark-for-claude","version":"1.7.0","license":"MIT","_id":"lark-for-claude@1.7.0","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"bin":{"lark-for-claude":"bin/install.cjs"},"dist":{"shasum":"b260088cbcfaefc1cf30dafaa73ea375e6186cf5","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.7.0.tgz","fileCount":15,"integrity":"sha512-hssOMfcWoUbw3oX5KLV5C8MifR3DgOnBtzbCCaYkFTMM8Vcrh7zkw0vX2fcVBPlv9pCz9qem+873rCLAwO8f5A==","signatures":[{"sig":"MEUCIDgxt6Ar/OIP9FqanECZRqbE9V37zotiEayDtKUtg3MoAiEAuc6q5kfkHZclQnaEwE76zhoJKR7hu5mZdj2//NtDliY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130947},"type":"module","gitHead":"d09cd789f83b6266a87c4d060824e3cf696473cc","scripts":{"lint":"biome check .","test":"bun test","check":"bun run typecheck && bun run lint && bun test","start":"bun server.ts","format":"biome format --write .","router":"bun router.ts","lint:fix":"biome check --write .","typecheck":"tsc --noEmit","postinstall":"node bin/postinstall.cjs"},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"_npmVersion":"11.9.0","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.22.0","@larksuiteoapi/node-sdk":"^1.5.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.1.0","typescript":"^5.5.0","@biomejs/biome":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lark-for-claude_1.7.0_1778836908204_0.7305248119246965","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"lark-for-claude","version":"1.7.1","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","license":"MIT","type":"module","bin":{"lark-for-claude":"bin/install.cjs"},"scripts":{"start":"bun server.ts","router":"bun router.ts","test":"bun test","lint":"biome check .","lint:fix":"biome check --write .","format":"biome format --write .","typecheck":"tsc --noEmit","check":"bun run typecheck && bun run lint && bun test","postinstall":"node bin/postinstall.cjs"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","@larksuiteoapi/node-sdk":"^1.5.0","zod":"^3.22.0"},"devDependencies":{"@biomejs/biome":"^2.0.0","typescript":"^5.5.0","@types/bun":"^1.1.0"},"gitHead":"cae6853f235c6ae2e79d8e453b6e26e2e4fe36ff","_id":"lark-for-claude@1.7.1","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-9Ay7jGZgGTbYGgsz6AOjmgx9GcwlMELx4nFGZplS2pxudHEojf1CK3DXx5gmzJPTRZU5hNk3nRNteEbfLC9ifw==","shasum":"7efe0775e700d3fc4ed1328c9aff1d4f3792025f","tarball":"https://registry.npmjs.org/lark-for-claude/-/lark-for-claude-1.7.1.tgz","fileCount":15,"unpackedSize":132518,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEHmtRjnj/ah7BL0fWq39N4Lh9IMcNq7x9ZK0lQv8zCKAiEA2J4Y2Pu3CSNCiXVlCa10i+Nd4Rkg9ZdwLUuOh4nddIs="}]},"_npmUser":{"name":"fenghao630","email":"fh345392977@gmail.com"},"directories":{},"maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lark-for-claude_1.7.1_1778840966446_0.837761304581552"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-13T00:18:13.103Z","modified":"2026-05-15T10:29:26.995Z","0.1.0":"2026-05-13T00:18:13.244Z","0.1.1":"2026-05-13T01:21:35.408Z","0.1.2":"2026-05-13T02:23:06.867Z","0.1.3":"2026-05-13T03:17:13.267Z","0.1.4":"2026-05-13T03:53:30.258Z","0.1.5":"2026-05-13T05:33:38.632Z","0.1.6":"2026-05-14T02:08:25.830Z","0.1.7":"2026-05-14T02:18:36.989Z","0.2.0":"2026-05-14T02:40:42.935Z","0.2.1":"2026-05-14T02:45:32.833Z","0.2.2":"2026-05-14T02:50:55.306Z","0.3.0":"2026-05-14T03:19:06.922Z","0.3.1":"2026-05-14T03:29:12.755Z","0.4.0":"2026-05-14T04:46:08.870Z","0.4.1":"2026-05-14T04:51:48.930Z","0.4.2":"2026-05-14T05:03:39.274Z","0.4.3":"2026-05-14T05:23:07.718Z","0.4.4":"2026-05-14T05:29:23.979Z","0.4.5":"2026-05-14T06:05:12.081Z","1.0.0":"2026-05-14T06:21:16.363Z","1.0.1":"2026-05-14T07:20:11.024Z","1.1.0":"2026-05-14T08:32:23.462Z","1.1.1":"2026-05-14T08:35:06.049Z","1.1.2":"2026-05-14T08:36:15.255Z","1.1.3":"2026-05-14T08:49:38.824Z","1.1.4":"2026-05-14T08:59:18.523Z","1.1.5":"2026-05-14T09:13:57.076Z","1.1.6":"2026-05-14T09:47:58.237Z","1.1.7":"2026-05-14T10:07:50.824Z","1.1.8":"2026-05-14T10:12:32.727Z","1.1.9":"2026-05-14T11:02:28.487Z","1.1.10":"2026-05-14T11:07:46.686Z","1.1.11":"2026-05-14T11:14:57.028Z","1.1.12":"2026-05-14T11:28:01.078Z","1.2.0":"2026-05-14T13:00:06.311Z","1.2.1":"2026-05-14T13:18:01.668Z","1.2.2":"2026-05-14T13:21:58.802Z","1.3.0":"2026-05-14T14:14:55.602Z","1.3.1":"2026-05-14T14:16:35.297Z","1.4.0":"2026-05-15T02:07:25.261Z","1.5.0":"2026-05-15T03:57:14.191Z","1.5.1":"2026-05-15T04:07:42.550Z","1.6.0":"2026-05-15T06:27:35.023Z","1.7.0":"2026-05-15T09:21:48.353Z","1.7.1":"2026-05-15T10:29:26.584Z"},"license":"MIT","description":"Feishu (Lark) channel plugin for Claude Code — route multiple groups to isolated Claude instances via a single bot","maintainers":[{"name":"fenghao630","email":"fh345392977@gmail.com"}],"readme":"# Feishu Channel for Claude Code\r\n\r\n[![npm version](https://img.shields.io/npm/v/lark-for-claude)](https://www.npmjs.com/package/lark-for-claude)\r\n[![license](https://img.shields.io/npm/l/lark-for-claude)](LICENSE)\r\n\r\nA [Feishu (Lark)](https://www.feishu.cn/) channel plugin for [Claude Code](https://docs.anthropic.com/en/docs/claude-code), built on the **native [Channel interface](https://docs.anthropic.com/en/docs/claude-code/channels)**. Chat with Claude directly in Feishu — DMs, group chats, interactive cards.\r\n\r\n**English** | [中文](./README_CN.md)\r\n\r\nUses the MCP Channel protocol with **WebSocket persistent connection** — no public HTTPS endpoint needed.\r\n\r\n```bash\r\nnpx lark-for-claude   # one-command install\r\n```\r\n\r\n---\r\n\r\n## Table of Contents\r\n\r\n- [Architecture & Modes](#architecture--modes)\r\n- [Features](#features)\r\n- [Prerequisites](#prerequisites)\r\n- [Quick Start](#quick-start)\r\n- [Multi-Group Router Setup](#multi-group-router-setup)\r\n- [Access Management](#access-management)\r\n- [File Layout](#file-layout)\r\n- [Multi-Device Sync](#multi-device-sync)\r\n- [Environment Variables](#environment-variables)\r\n- [How It Works](#how-it-works)\r\n- [Testing & Development](#testing--development)\r\n- [Security](#security)\r\n- [AI Automated Deployment Guide](#ai-automated-deployment-guide)\r\n\r\n---\r\n\r\n## Architecture & Modes\r\n\r\nThe plugin operates in **three modes**, selected automatically based on runtime context:\r\n\r\n```\r\n┌─────────────────────────────────────────────────────────────────┐\r\n│                      Mode Selection Flow                        │\r\n│                                                                 │\r\n│  claude-feishu launched                                         │\r\n│       │                                                         │\r\n│       ▼                                                         │\r\n│  Is --channels feishu in ancestor process?                      │\r\n│       │                                                         │\r\n│    NO ──→ Passive Mode (no connection, tools only)              │\r\n│    YES                                                          │\r\n│       │                                                         │\r\n│       ▼                                                         │\r\n│  Can we start/connect to a Router?                              │\r\n│       │                                                         │\r\n│    YES ──→ Worker Mode (connects to Router via Unix socket)     │\r\n│    NO  ──→ Channel Mode (direct Feishu WebSocket)               │\r\n│                                                                 │\r\n└─────────────────────────────────────────────────────────────────┘\r\n```\r\n\r\n### Mode Comparison\r\n\r\n| | Channel Mode | Worker Mode (via Router) | Passive Mode |\r\n|---|---|---|---|\r\n| **Connection** | Direct Feishu WebSocket | Unix socket → Router → Feishu WebSocket | None |\r\n| **Use case** | Single user / single project | Multi-user / multi-project | Non-channel Claude instances |\r\n| **Message routing** | All messages → this instance | chat_id → workdir → worker | N/A |\r\n| **Auto-started** | Fallback when Router fails | First `claude-feishu` auto-spawns Router | Always |\r\n| **How many instances** | 1 Claude per bot | N Claudes per bot | N/A |\r\n\r\n### Channel Mode (1:1)\r\n\r\n```\r\n┌─────────────┐\r\n│  Feishu Bot  │──── WebSocket ────→ Claude Code Instance\r\n└─────────────┘\r\n```\r\n\r\nSimplest setup. One bot, one Claude. All messages go to the single connected instance.\r\n\r\n### Worker Mode (1:N via Router)\r\n\r\n```\r\n┌─────────────┐                    ┌─ Claude Code (/path/to/project-a)\r\n│  Feishu Bot  │──── WebSocket ──→ Router ──┼─ Claude Code (/path/to/project-b)\r\n└─────────────┘                    └─ Claude Code (/path/to/project-c)\r\n                                        ▲\r\n                                   Unix socket\r\n```\r\n\r\nThe Router holds the single Feishu WebSocket. Each Claude Code instance connects as a **worker** via Unix socket. Messages are routed by:\r\n\r\n```\r\nchat_id → groups[chat_id].workdir → registered worker (by cwd)\r\n```\r\n\r\n**Key behaviors:**\r\n- First `claude-feishu` **auto-spawns** the Router process\r\n- Subsequent instances **auto-connect** as workers\r\n- When all workers disconnect, Router **auto-shuts down** after 10s grace period\r\n- If Router fails to start, falls back to Channel Mode\r\n\r\n---\r\n\r\n## Features\r\n\r\n- **Multi-group routing** — One Feishu bot serves multiple Claude Code instances, each in its own project\r\n- **Auto-managed router** — Router spawns on first launch, shuts down when all workers disconnect\r\n- **Direct messages** — Chat with Claude through Feishu DMs\r\n- **Group chats** — Add the bot to group chats with @mention support and custom trigger patterns\r\n- **Access control** — Allowlist-based user authorization and per-group policies\r\n- **Permission cards** — Interactive approve/deny cards for tool permission requests (✅ allow once / ✅✅ always allow / ❌ deny)\r\n- **Confirm cards** — Interactive confirmation cards for risky actions (✅ / ✅✅ / ❌ buttons + text reply)\r\n- **Unanswered reminders** — Auto-nudges at 30min / 60min / 120min if Claude hasn't replied\r\n- **Reactions** — Configurable emoji reactions on message receipt (default: 👍)\r\n- **Message editing** — Update previously sent messages (no push notification)\r\n- **Smart connection** — Only connects when launched as a Feishu channel\r\n- **Graceful shutdown** — Detects parent process exit via ppid polling\r\n- **Worker auto-reconnect** — Workers automatically reconnect to Router after disconnection\r\n- **Log rotation** — Automatic log rotation (5MB max, 3 backups) to prevent disk exhaustion\r\n\r\n---\r\n\r\n## Prerequisites\r\n\r\n- [Bun](https://bun.sh/) runtime\r\n- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI installed\r\n- A Feishu (or Lark) workspace with admin access to create apps\r\n\r\n---\r\n\r\n## Quick Start\r\n\r\n### Step 1: Create a Feishu App\r\n\r\n1. Go to [Feishu Open Platform](https://open.feishu.cn) (or [Lark Open Platform](https://open.larksuite.com))\r\n2. Create a **Custom App** (enterprise internal app)\r\n3. Note the **App ID** (`cli_...`) and **App Secret**\r\n\r\n4. Under **Events & Callbacks**, configure **two separate tabs**:\r\n\r\n   **Event Configuration tab:**\r\n   - Switch to **Using persistent connection** (WebSocket mode)\r\n   - Add event: `im.message.receive_v1`\r\n\r\n   **Callback Configuration tab:**\r\n   - Switch to **Using persistent connection** (WebSocket mode)\r\n   - Add callback: `card.action.trigger` (required for confirm/permission card buttons)\r\n\r\n5. Under **Permissions & Scopes**, add:\r\n\r\n   | Permission | Purpose |\r\n   |---|---|\r\n   | `im:message` | Send messages |\r\n   | `im:message.receive_v1` | Receive messages |\r\n   | `im:message.p2p_msg:readonly` | Read DM messages |\r\n   | `im:message.group_at_msg:readonly` | Read group @mentions |\r\n   | `im:chat:readonly` | Read chat metadata |\r\n   | `im:resource` | Download and upload attachments |\r\n\r\n6. **Publish** the app version so permissions take effect\r\n\r\n### Step 2: Install the Plugin\r\n\r\n```bash\r\nnpx lark-for-claude\r\n```\r\n\r\nThis clones the repo, installs dependencies, registers the Claude Code plugin, and creates the `claude-feishu` shortcut.\r\n\r\n<details>\r\n<summary>Manual installation</summary>\r\n\r\n```bash\r\ngit clone https://github.com/jbts6/lark-for-claude.git\r\ncd lark-for-claude\r\nbun install\r\nclaude plugin marketplace add .\r\nclaude plugin install feishu@feishu-local\r\n```\r\n\r\n</details>\r\n\r\n### Step 3: Start Claude Code with Feishu Channel\r\n\r\n```bash\r\nclaude-feishu\r\n```\r\n\r\nOn subsequent launches, `claude-feishu` automatically resumes the session named after the current directory. If no matching session is found, an interactive session picker opens.\r\n\r\nFull command equivalent:\r\n\r\n```bash\r\nclaude --dangerously-load-development-channels plugin:feishu@feishu-local\r\n```\r\n\r\n### Step 4: Configure Credentials\r\n\r\nIn your Claude Code terminal:\r\n\r\n```\r\nclaude-feishu auth cli_YOUR_APP_ID YOUR_APP_SECRET\r\n```\r\n\r\nCredentials are stored in `~/.claude/channels/feishu/.env` (mode 600).\r\n\r\n### Step 5: Authorize Users\r\n\r\nAdd users to the allowlist by their Feishu open_id:\r\n\r\n```bash\r\nclaude-feishu access allow ou_xxxxxxxxxxxxxxxxxxxx\r\n```\r\n\r\nTo find a user's open_id, check the debug log after they send a message to the bot:\r\n\r\n```bash\r\ntail -5 ~/.claude/channels/feishu/debug.log\r\n```\r\n\r\nYou can also set a default chat ID for outbound messages (optional):\r\n\r\n```bash\r\nclaude-feishu auth chat-id oc_xxxxxxxxxxxxxxxxxxxx\r\n```\r\n\r\nYou're ready — authorized users can now message the bot and Claude will respond.\r\n\r\n---\r\n\r\n## Multi-Group Router Setup\r\n\r\n### 1. Configure Group Workdirs\r\n\r\nAdd `workdir` to each group in `~/.claude/channels/feishu/access.json`:\r\n\r\n```jsonc\r\n{\r\n  \"groups\": {\r\n    \"oc_groupA\": {\r\n      \"requireMention\": true,\r\n      \"allowFrom\": [],\r\n      \"workdir\": \"/path/to/project-a\"\r\n    },\r\n    \"oc_groupB\": {\r\n      \"requireMention\": true,\r\n      \"allowFrom\": [],\r\n      \"workdir\": \"/path/to/project-b\"\r\n    }\r\n  },\r\n  \"defaultWorkdir\": \"/path/to/default-project\"  // DMs and unconfigured groups route here\r\n}\r\n```\r\n\r\n### 2. Start Claude Code Instances\r\n\r\nIn separate terminals, start Claude in each project directory:\r\n\r\n```bash\r\ncd /path/to/project-a && claude-feishu   # first: spawns router + connects as worker\r\ncd /path/to/project-b && claude-feishu   # subsequent: connects to existing router\r\ncd /path/to/project-c && claude-feishu   # subsequent: connects to existing router\r\n```\r\n\r\nThe **first** instance auto-spawns the Router. Subsequent instances connect as workers. The Router routes incoming messages by `chat_id → workdir → connected worker`.\r\n\r\n### 3. Manual Router Start (Optional)\r\n\r\n```bash\r\nbun run router\r\n```\r\n\r\n### 4. Check Router Status\r\n\r\n```bash\r\nkill -USR1 $(pgrep -f 'bun router.ts')\r\ncat ~/.claude/channels/feishu/router-debug.log | tail -10\r\n```\r\n\r\n---\r\n\r\n## Access Management\r\n\r\nAll access commands are run in your Claude Code terminal via `claude-feishu access`.\r\n\r\n### Check Status\r\n\r\n```\r\nclaude-feishu access\r\n```\r\n\r\n### DM Policies\r\n\r\n| Policy | Behavior |\r\n|---|---|\r\n| `allowlist` (default) | Only users in `allowFrom` can send DMs; others are silently dropped |\r\n| `disabled` | All DMs dropped |\r\n\r\n```\r\nclaude-feishu access policy allowlist\r\n```\r\n\r\n### Manage Users\r\n\r\n```bash\r\n# Allow a user by open_id\r\nclaude-feishu access allow ou_xxxxxxxxxxxxxxxxxxxx\r\n\r\n# Remove a user\r\nclaude-feishu access remove ou_xxxxxxxxxxxxxxxxxxxx\r\n```\r\n\r\n### Group Chats\r\n\r\nGroups are off by default. The bot must be added to the group by a group admin first.\r\n\r\n```bash\r\n# Enable a group (responds on @mention only)\r\nclaude-feishu access group add oc_xxxxxxxxxxxxxxxxxxxx\r\n\r\n# Respond to all messages (no @mention needed)\r\nclaude-feishu access group add oc_xxxxxxxxxxxxxxxxxxxx --no-mention\r\n\r\n# Restrict to specific users within the group\r\nclaude-feishu access group add oc_xxxxxxxxxxxxxxxxxxxx --allow ou_id1,ou_id2\r\n\r\n# Remove a group\r\nclaude-feishu access group rm oc_xxxxxxxxxxxxxxxxxxxx\r\n```\r\n\r\n### Delivery Settings\r\n\r\n```bash\r\n# React to received messages with an emoji (default: Get)\r\nclaude-feishu access set ackReaction Get\r\n\r\n# Set max characters per message chunk\r\nclaude-feishu access set textChunkLimit 4096\r\n\r\n# Custom mention patterns for group chats\r\nclaude-feishu access set mentionPatterns [\"@claude\",\"@assistant\"]\r\n```\r\n\r\n---\r\n\r\n## File Layout\r\n\r\n```\r\n~/.claude/channels/feishu/\r\n├── .env              # App credentials (FEISHU_APP_ID, FEISHU_APP_SECRET, FEISHU_APP_CHAT_ID)\r\n├── access.json       # Access control state (auto-managed)\r\n├── debug.log         # Server debug log (auto-rotated at 5MB, 3 backups)\r\n├── router-debug.log  # Router debug log (auto-rotated at 5MB, 3 backups)\r\n└── router.sock       # Unix socket for worker-router IPC\r\n```\r\n\r\n---\r\n\r\n## Multi-Device Sync\r\n\r\nTo use the same Feishu bot on multiple devices (e.g., office desktop + home laptop), you only need to copy **two files**:\r\n\r\n### What to Copy\r\n\r\n| File | Contains | Must Sync? |\r\n|---|---|---|\r\n| `.env` | App credentials (FEISHU_APP_ID, FEISHU_APP_SECRET, FEISHU_APP_CHAT_ID) | ✅ **Yes** — without this, the bot can't connect |\r\n| `access.json` | Access control (allowFrom, groups, policies) | ✅ **Yes** — without this, all users appear unauthorized |\r\n| `debug.log` | Debug log | ❌ No — auto-created and auto-rotated |\r\n| `router-debug.log` | Router debug log | ❌ No — auto-created and auto-rotated |\r\n| `router.sock` | Unix socket | ❌ No — auto-created at runtime |\r\n\r\n### How to Sync\r\n\r\n**Option 1: Manual copy**\r\n\r\n```bash\r\n# On the source device\r\nscp ~/.claude/channels/feishu/.env ~/.claude/channels/feishu/access.json target-device:~\r\n\r\n# On the target device\r\nmkdir -p ~/.claude/channels/feishu\r\nmv ~/.env ~/.claude/channels/feishu/.env\r\nmv ~/access.json ~/.claude/channels/feishu/access.json\r\nchmod 600 ~/.claude/channels/feishu/.env\r\n```\r\n\r\n**Option 2: Symlink to a synced folder** (e.g., Dropbox, iCloud, Syncthing)\r\n\r\n```bash\r\n# Create a synced config folder\r\nmkdir -p ~/Sync/feishu-config\r\n\r\n# Copy existing config into it\r\ncp ~/.claude/channels/feishu/.env ~/.claude/channels/feishu/access.json ~/Sync/feishu-config/\r\n\r\n# Replace original files with symlinks\r\nmv ~/.claude/channels/feishu/.env ~/.claude/channels/feishu/.env.bak\r\nmv ~/.claude/channels/feishu/access.json ~/.claude/channels/feishu/access.json.bak\r\nln -s ~/Sync/feishu-config/.env ~/.claude/channels/feishu/.env\r\nln -s ~/Sync/feishu-config/access.json ~/.claude/channels/feishu/access.json\r\n```\r\n\r\n**Option 3: Use FEISHU_STATE_DIR** to point to a synced location\r\n\r\n```bash\r\n# Add to your shell profile (~/.bashrc, ~/.zshrc, etc.)\r\nexport FEISHU_STATE_DIR=\"$HOME/Sync/feishu-config\"\r\n```\r\n\r\nThis makes the entire state directory live in your synced folder — no symlinks needed.\r\n\r\n### Important Notes\r\n\r\n- **Only one device should run the bot at a time** in Channel mode. Two simultaneous WebSocket connections from the same app may cause message loss or duplication.\r\n- **Router mode is safe for multi-device**: each device runs its own Worker, and the Router handles deduplication. But only one device should run the Router.\r\n- **`access.json` changes are not auto-synced**: if you add a user on device A, device B won't see it until the file syncs. The 2-second access cache means changes take effect quickly after sync.\r\n- **`workdir` paths in `access.json` are absolute**: `/home/user/project-a` on one device may not exist on another. Use consistent paths or adjust per device.\r\n\r\n---\r\n\r\n## Environment Variables\r\n\r\n| Variable | Required | Description |\r\n|---|---|---|\r\n| `FEISHU_APP_ID` | Yes | Feishu app ID (`cli_...`) |\r\n| `FEISHU_APP_SECRET` | Yes | Feishu app secret |\r\n| `FEISHU_ENCRYPT_KEY` | No | Event payload encryption key |\r\n| `FEISHU_APP_CHAT_ID` | No | Default chat ID for outbound messages (fallback when no chat_id is specified) |\r\n| `FEISHU_ACCESS_MODE` | No | Set to `static` to use allowlist-only mode (no runtime access.json writes) |\r\n| `FEISHU_STATE_DIR` | No | Override state directory path (default: `~/.claude/channels/feishu/`) |\r\n\r\n---\r\n\r\n## How It Works\r\n\r\n### Smart Connection Detection\r\n\r\nThe plugin detects whether it's running under a Feishu channel Claude instance by walking up the process tree and checking for `--dangerously-load-development-channels` with `feishu` in the ancestor's command line. Non-channel Claude instances (e.g., regular `claude` or `claude --channels plugin:discord@...`) skip the Feishu WebSocket connection entirely, keeping the MCP tools available without unnecessary remote connections.\r\n\r\n### Orphan Protection\r\n\r\nWhen the parent Claude process exits, the plugin detects the ppid change within 2 seconds and shuts down gracefully. This prevents orphaned `bun server.ts` processes from consuming 100% CPU — a workaround for Bun not reliably firing stdin `end`/`close` events on broken Unix domain sockets.\r\n\r\n### Worker Auto-Reconnect\r\n\r\nWhen a worker's Unix socket connection to the Router breaks, it automatically attempts to reconnect after 3 seconds. This handles temporary Router restarts and network glitches without requiring manual intervention.\r\n\r\n### Access Caching\r\n\r\nThe `access.json` file is cached with a 2-second TTL based on file modification time. This avoids redundant `readFileSync` calls on every message while still reflecting configuration changes within seconds.\r\n\r\n### Log Rotation\r\n\r\nDebug logs (`debug.log`, `router-debug.log`) are automatically rotated when they exceed 5MB. Up to 3 backup files are kept (`debug.log.1`, `debug.log.2`, `debug.log.3`). Rotation is checked lazily every 100 writes to minimize overhead.\r\n\r\n---\r\n\r\n## Testing & Development\r\n\r\n```bash\r\nbun test              # Run tests (65 tests)\r\nbun run lint          # Check code style with Biome\r\nbun run lint:fix      # Auto-fix code style issues\r\nbun run format        # Format code with Biome\r\nbun run typecheck     # TypeScript type checking\r\nbun run check         # Full check: typecheck + lint + test\r\n```\r\n\r\nTests cover: access control (gate logic), text chunking, mention detection, permission reply parsing (including `yy`/`yesyes` for always-allow), confirm code generation, chat authorization, chat ID resolution and fallback, message parsing, attachment info, timestamp formatting, log rotation, router workdir resolution, and access caching.\r\n\r\n---\r\n\r\n## Security\r\n\r\n- Credentials stored with `chmod 600` — only the owner can read them\r\n- State directory uses `chmod 700`\r\n- Router Unix socket uses `chmod 600`\r\n- Confirm codes use 8-byte cryptographic randomness (`crypto.randomBytes`)\r\n- Access mutations can only be made from the Claude Code terminal — never from channel messages (prompt injection protection)\r\n- Chat allowlist prevents unauthorized message delivery\r\n- Log rotation prevents disk exhaustion from unbounded log growth\r\n- Log output redacts sensitive IDs (open_id, chat_id)\r\n- PID validation prevents misidentifying ancestor processes\r\n- Regex escaping prevents injection in CLI pattern handling\r\n- Pending permissions and confirms auto-expire after 1 hour\r\n\r\n---\r\n\r\n## AI Automated Deployment Guide\r\n\r\nThis section provides a condensed, step-by-step guide for AI agents to deploy and configure the Feishu Channel plugin automatically.\r\n\r\n### Prerequisites Check\r\n\r\n```bash\r\n# Verify Bun is installed\r\nbun --version || (echo \"INSTALL bun: curl -fsSL https://bun.sh/install | bash\" && exit 1)\r\n\r\n# Verify Claude Code is installed\r\nclaude --version || (echo \"INSTALL claude-code first\" && exit 1)\r\n```\r\n\r\n### One-Command Deploy\r\n\r\n```bash\r\nnpx lark-for-claude\r\n```\r\n\r\nThis handles: clone → install → plugin register → `claude-feishu` shortcut.\r\n\r\n### Credential Configuration\r\n\r\n```bash\r\n# Write credentials to state directory\r\nmkdir -p ~/.claude/channels/feishu\r\ncat > ~/.claude/channels/feishu/.env << 'EOF'\r\nFEISHU_APP_ID=cli_YOUR_APP_ID\r\nFEISHU_APP_SECRET=YOUR_APP_SECRET\r\nFEISHU_APP_CHAT_ID=oc_YOUR_CHAT_ID\r\nEOF\r\nchmod 600 ~/.claude/channels/feishu/.env\r\n```\r\n\r\nOr use the CLI command inside a Claude Code session:\r\n\r\n```\r\nclaude-feishu auth cli_YOUR_APP_ID YOUR_APP_SECRET\r\nclaude-feishu auth chat-id oc_YOUR_CHAT_ID\r\n```\r\n\r\n### Multi-Group Router Configuration\r\n\r\nWrite `~/.claude/channels/feishu/access.json`:\r\n\r\n```json\r\n{\r\n  \"dmPolicy\": \"allowlist\",\r\n  \"allowFrom\": [],\r\n  \"p2pChats\": {},\r\n  \"groups\": {\r\n    \"oc_GROUP_ID_A\": {\r\n      \"requireMention\": true,\r\n      \"allowFrom\": [],\r\n      \"workdir\": \"/absolute/path/to/project-a\"\r\n    },\r\n    \"oc_GROUP_ID_B\": {\r\n      \"requireMention\": false,\r\n      \"allowFrom\": [],\r\n      \"workdir\": \"/absolute/path/to/project-b\"\r\n    }\r\n  },\r\n  \"ackReaction\": \"Get\",\r\n  \"defaultWorkdir\": \"/absolute/path/to/default-project\"\r\n}\r\n```\r\n\r\nKey fields:\r\n- `groups[chat_id].workdir` — maps a Feishu group to a project directory\r\n- `defaultWorkdir` — fallback for DMs and groups without explicit workdir\r\n- `dmPolicy` — `allowlist` (default) or `disabled`\r\n- `ackReaction` — emoji code for read receipts (default: `Get`)\r\n\r\n### Launch Commands\r\n\r\n```bash\r\n# Single project (Channel mode or auto-Router)\r\ncd /path/to/project && claude-feishu\r\n\r\n# Multi-project (Router mode)\r\ncd /path/to/project-a && claude-feishu &  # first: spawns Router\r\ncd /path/to/project-b && claude-feishu &  # connects as worker\r\n```\r\n\r\n### User Authorization\r\n\r\nPre-authorize users by open_id:\r\n\r\n```bash\r\nclaude-feishu access allow ou_xxxxxxxxxxxxxxxxxxxx\r\n```\r\n\r\nTo find a user's open_id, check the debug log after they send a message:\r\n\r\n```bash\r\ntail -5 ~/.claude/channels/feishu/debug.log\r\n```\r\n\r\n### Verification Checklist\r\n\r\n```bash\r\n# 1. Plugin installed\r\nclaude plugin list | grep feishu\r\n\r\n# 2. Credentials configured\r\ntest -f ~/.claude/channels/feishu/.env && echo \"OK\" || echo \"MISSING\"\r\n\r\n# 3. Tests pass\r\ncd $(dirname $(which claude-feishu))/.. && bun test\r\n\r\n# 4. Router running (multi-group mode)\r\ntest -S ~/.claude/channels/feishu/router.sock && echo \"Router active\" || echo \"No router\"\r\n\r\n# 5. Debug logs\r\ntail -5 ~/.claude/channels/feishu/debug.log\r\ntail -5 ~/.claude/channels/feishu/router-debug.log\r\n```\r\n\r\n### Troubleshooting\r\n\r\n| Symptom | Check | Fix |\r\n|---|---|---|\r\n| Bot not responding | `debug.log` for errors | Verify credentials in `.env` |\r\n| Router not starting | `router-debug.log` | Check if port/socket is in use |\r\n| Worker not connecting | `debug.log` for \"worker\" entries | Verify Router socket exists |\r\n| DMs silently dropped | `dmPolicy` in `access.json` | Must be `allowlist`, not `disabled`; add user to `allowFrom` |\r\n| Group messages ignored | Group in `access.json`? | `claude-feishu access group add <chat_id>` |\r\n| Card buttons not working | Callback configured? | Add `card.action.trigger` in Feishu app |\r\n| No default chat for outbound | `FEISHU_APP_CHAT_ID` set? | `claude-feishu auth chat-id <chat_id>` |\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}