{"_id":"@call-me-sensei/toonlab","_rev":"14-dbbfa540aea530eae35ac752a9b841a1","name":"@call-me-sensei/toonlab","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.1":{"name":"@call-me-sensei/toonlab","version":"0.1.1","keywords":["three","threejs","toon","cel-shading","anime","shader","water","game-starter"],"author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"license":"MIT","_id":"@call-me-sensei/toonlab@0.1.1","maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"homepage":"https://github.com/call-me-sensei/toonlab#readme","bugs":{"url":"https://github.com/call-me-sensei/toonlab/issues"},"dist":{"shasum":"685778da123bb3341aeb2fc06e3dd2d774ef9ab6","tarball":"https://registry.npmjs.org/@call-me-sensei/toonlab/-/toonlab-0.1.1.tgz","fileCount":146,"integrity":"sha512-cReF8NqSqMjcUz+8ie9XKHjv83XIDX1kq+3yqdgAVxBAKDYir4MSn3ai/DH7slXzUmtQxXa9xETrYvJQ91Hfpg==","signatures":[{"sig":"MEYCIQDwvQ2AhaM87obxbN0WfXDTemY2NV36Yo2JrIMH5nFyMAIhAOWBslVjqKzodftV+6npjPR3CbKdubCXCzfZ7we1MWvB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1577368},"main":"./src/index.js","type":"module","module":"./src/index.js","exports":{".":"./src/index.js","./sky":"./src/sky/index.js","./post":"./src/post/index.js","./toon":"./src/toon/index.js","./debug":"./src/debug/index.js","./grass":"./src/vegetation/stylizedGrass.js","./water":"./src/water/index.js","./loaders":"./src/loaders/index.js","./rockgen":"./src/rockgen/index.js","./character":"./src/character/index.js","./debrisgen":"./src/debrisgen/index.js","./vegetation":"./src/vegetation/index.js","./environment":"./src/environment/index.js","./toon-settings":"./src/toon/toonSettings.js","./water-settings":"./src/water/waterSettings.js","./post-processing":"./src/post/postProcessing.js"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","assets:local":"npm run assets:characters && npm run assets:environments","visual:check":"node scripts/visual-check.mjs","verify:rockgen":"node scripts/verify-rockgen.mjs","baseline:capture":"node scripts/baseline-capture.mjs","baseline:compare":"node scripts/compare-baselines.mjs","assets:characters":"node scripts/generate-local-character-assets.mjs","assets:environments":"node scripts/generate-local-environment-assets.mjs"},"_npmUser":{"name":"jack_hyperbond","email":"jack@hyperbond.studio"},"repository":{"url":"git+https://github.com/call-me-sensei/toonlab.git","type":"git"},"_npmVersion":"11.10.1","description":"Stylized (anime/toon) game starter kit for Three.js: character toon shading, environment shading, water, vegetation, sky, and post-processing","directories":{},"_nodeVersion":"25.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","react":"^19.2.7","three":"^0.185.1","ecctrl":"^1.0.97","react-dom":"^19.2.7","playwright":"^1.60.0","lucide-react":"^1.23.0","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@react-three/rapier":"^2.2.0","@vitejs/plugin-react":"^4.7.0"},"peerDependencies":{"three":"^0.185.1","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4"},"peerDependenciesMeta":{"three-stdlib":{"optional":true},"three-mesh-bvh":{"optional":true},"@pixiv/three-vrm":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toonlab_0.1.1_1783824181025_0.6355881951245874","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@call-me-sensei/toonlab","version":"0.2.0","keywords":["three","threejs","toon","cel-shading","anime","shader","water","game-starter"],"author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"license":"MIT","_id":"@call-me-sensei/toonlab@0.2.0","maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"homepage":"https://github.com/call-me-sensei/toonlab#readme","bugs":{"url":"https://github.com/call-me-sensei/toonlab/issues"},"dist":{"shasum":"3eb5463d43bad9c43e823db101cf87d6c830d0e5","tarball":"https://registry.npmjs.org/@call-me-sensei/toonlab/-/toonlab-0.2.0.tgz","fileCount":154,"integrity":"sha512-7GbDWKGgh2+SEp4pA0FLolf7VEkHu8EYH4UF2A/xs2UWLtVGCts63xwPpqH/H5UQ1PR/m6xBunKS2lIssmjNdg==","signatures":[{"sig":"MEUCIQDkwkm1G4I9+V9Zf94drZOp2f9NDBMqDT6/L3KCOF+zsQIgUNJ+K1j+57Le8qTmTrG1vH/snYof+t1Ay/zJlq41yNo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1702128},"main":"./src/index.js","type":"module","module":"./src/index.js","exports":{".":"./src/index.js","./sky":"./src/sky/index.js","./post":"./src/post/index.js","./toon":"./src/toon/index.js","./debug":"./src/debug/index.js","./grass":"./src/vegetation/stylizedGrass.js","./water":"./src/water/index.js","./loaders":"./src/loaders/index.js","./rockgen":"./src/rockgen/index.js","./character":"./src/character/index.js","./debrisgen":"./src/debrisgen/index.js","./vegetation":"./src/vegetation/index.js","./environment":"./src/environment/index.js","./toon-settings":"./src/toon/toonSettings.js","./water-settings":"./src/water/waterSettings.js","./post-processing":"./src/post/postProcessing.js"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","assets:local":"npm run assets:characters && npm run assets:environments","visual:check":"node scripts/visual-check.mjs","verify:rockgen":"node scripts/verify-rockgen.mjs","baseline:capture":"node scripts/baseline-capture.mjs","baseline:compare":"node scripts/compare-baselines.mjs","assets:characters":"node scripts/generate-local-character-assets.mjs","assets:environments":"node scripts/generate-local-environment-assets.mjs"},"_npmUser":{"name":"jack_hyperbond","email":"jack@hyperbond.studio"},"repository":{"url":"git+https://github.com/call-me-sensei/toonlab.git","type":"git"},"_npmVersion":"11.10.1","description":"Stylized (anime/toon) game starter kit for Three.js: character toon shading, environment shading, water, vegetation, sky, and post-processing","directories":{},"_nodeVersion":"25.7.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","react":"^19.2.7","three":"^0.185.1","ecctrl":"^1.0.97","react-dom":"^19.2.7","playwright":"^1.60.0","lucide-react":"^1.23.0","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@react-three/rapier":"^2.2.0","@vitejs/plugin-react":"^4.7.0"},"peerDependencies":{"three":"^0.185.1","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4"},"peerDependenciesMeta":{"three-stdlib":{"optional":true},"three-mesh-bvh":{"optional":true},"@pixiv/three-vrm":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toonlab_0.2.0_1783869251932_0.8184359185207721","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@call-me-sensei/toonlab","version":"0.3.0","keywords":["three","threejs","toon","cel-shading","anime","shader","lighting","water","weather","game-starter"],"author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"license":"MIT","_id":"@call-me-sensei/toonlab@0.3.0","maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"homepage":"https://github.com/call-me-sensei/toonlab#readme","bugs":{"url":"https://github.com/call-me-sensei/toonlab/issues"},"bin":{"toonlab-mcp":"mcp/server.mjs"},"dist":{"shasum":"1e0b0f9884bf21286aa3d1ef81bd3a163e21f2b0","tarball":"https://registry.npmjs.org/@call-me-sensei/toonlab/-/toonlab-0.3.0.tgz","fileCount":321,"integrity":"sha512-czauz+2N0o8v4IjsVA9/9syry7omUutIAQxJq4byolaKzYTfagtu4fjb1YhEdUJ3usNIBDmnU1gvL4f4Z+TM9w==","signatures":[{"sig":"MEQCICqKvgRJHauPzH6kSDs1ebB6dbnhYpFVxXbukYch+VcqAiBzbF3aE42TGGuo8sIGgtmH6t+Rb9YsIw44/GK/9g9Hog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3800048},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"exports":{".":"./src/index.js","./sky":"./src/sky/index.js","./post":"./src/post/index.js","./toon":"./src/toon/index.js","./debug":"./src/debug/index.js","./fauna":"./src/fauna/index.js","./grass":"./src/vegetation/stylizedGrass.js","./water":"./src/water/index.js","./camera":"./src/camera/index.js","./styles":"./src/styles/index.js","./texgen":"./src/texgen/index.js","./vfxgen":"./src/vfxgen/index.js","./catalog":"./src/catalog/index.js","./loaders":"./src/loaders/index.js","./pathgen":"./src/pathgen/index.js","./propgen":"./src/propgen/index.js","./rockgen":"./src/rockgen/index.js","./weather":"./src/weather/index.js","./assetlib":"./src/assetlib/index.js","./lighting":"./src/lighting/index.js","./ambientfx":"./src/ambientfx/index.js","./character":"./src/character/index.js","./debrisgen":"./src/debrisgen/index.js","./game-feel":"./src/game-feel/index.js","./vegetation":"./src/vegetation/index.js","./villagegen":"./src/villagegen/index.js","./buildinggen":"./src/buildinggen/index.js","./environment":"./src/environment/index.js","./toon-settings":"./src/toon/toonSettings.js","./grass-palettes":"./src/vegetation/grassPalettes.js","./water-settings":"./src/water/waterSettings.js","./post-processing":"./src/post/postProcessing.js","./vegetation-shaders":"./src/vegetation/vegetationShaders.js"},"gitHead":"78c819c39512209d4f17b9c090641e1f33568fcf","scripts":{"dev":"vite","mcp":"node mcp/server.mjs","build":"vite build","preview":"vite preview","verify:all":"npm run verify:generation && npm run verify:post && npm run verify:camera && npm run verify:motion && npm run verify:biome && npm run verify:soundscape && npm run verify:game-feel && npm run verify:rockgen && npm run verify:pathgen && npm run verify:propgen && npm run verify:buildinggen && npm run verify:villagegen && npm run verify:fauna && npm run verify:ambientfx && npm run verify:vfxgen && npm run verify:water && npm run verify:lighting && npm run verify:lighting-lab && npm run verify:weather && npm run verify:sky && npm run verify:grass && npm run verify:vegetation-shader && npm run verify:api && npm run verify:catalog && npm run verify:assetlib && npm run verify:mcp","verify:api":"node scripts/verify-public-api.mjs","verify:mcp":"node scripts/verify-mcp.mjs","verify:sky":"node scripts/verify-sky.mjs","thumbs:home":"node scripts/generate-home-shots.mjs","thumbs:prop":"node scripts/generate-prop-thumbs.mjs","verify:post":"node scripts/verify-post.mjs","assets:local":"npm run assets:characters && npm run assets:environments","verify:biome":"node scripts/verify-biome.mjs","verify:fauna":"node scripts/verify-fauna.mjs","verify:grass":"node scripts/verify-grass-palettes.mjs","verify:water":"node scripts/verify-watergen.mjs","visual:check":"node scripts/visual-check.mjs","verify:camera":"node scripts/verify-camera.mjs","verify:motion":"node scripts/verify-motion.mjs","verify:vfxgen":"node scripts/verify-vfxgen.mjs","thumbs:catalog":"node scripts/generate-catalog-thumbs.mjs","verify:catalog":"node scripts/verify-catalog.mjs","verify:pathgen":"node scripts/verify-pathgen.mjs","verify:propgen":"node scripts/verify-propgen.mjs","verify:rockgen":"node scripts/verify-rockgen.mjs","verify:weather":"node scripts/verify-weather.mjs","thumbs:building":"node scripts/generate-building-thumbs.mjs","verify:assetlib":"node scripts/verify-assetlib.mjs","verify:lighting":"node scripts/verify-lighting.mjs","baseline:capture":"node scripts/baseline-capture.mjs","baseline:compare":"node scripts/compare-baselines.mjs","verify:ambientfx":"node scripts/verify-ambientfx.mjs","verify:game-feel":"node scripts/verify-game-feel.mjs","assets:characters":"node scripts/generate-local-character-assets.mjs","verify:generation":"node scripts/verify-generation.mjs","verify:soundscape":"node scripts/verify-soundscape.mjs","verify:villagegen":"node scripts/verify-villagegen.mjs","verify:buildinggen":"node scripts/verify-buildinggen.mjs","assets:environments":"node scripts/generate-local-environment-assets.mjs","verify:lighting-lab":"node scripts/verify-lighting-lab.mjs","verify:vegetation-shader":"node scripts/verify-vegetation-shader.mjs"},"_npmUser":{"name":"jack_hyperbond","email":"jack@hyperbond.studio"},"repository":{"url":"git+https://github.com/call-me-sensei/toonlab.git","type":"git"},"_npmVersion":"12.0.1","description":"Stylized (anime/toon) game starter kit for Three.js: character and environment shading, lighting, weather, water, vegetation, sky, and post-processing","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","react":"^19.2.7","three":"^0.185.1","ecctrl":"^1.0.97","marked":"^18.0.6","react-dom":"^19.2.7","playwright":"^1.60.0","lucide-react":"^1.23.0","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@react-three/rapier":"^2.2.0","@vitejs/plugin-react":"^4.7.0"},"peerDependencies":{"three":"^0.185.1","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4"},"peerDependenciesMeta":{"three-stdlib":{"optional":true},"three-mesh-bvh":{"optional":true},"@pixiv/three-vrm":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toonlab_0.3.0_1784451435491_0.901289199893059","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@call-me-sensei/toonlab","version":"0.3.1","keywords":["three","threejs","toon","cel-shading","anime","shader","lighting","water","weather","game-starter"],"author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"license":"MIT","_id":"@call-me-sensei/toonlab@0.3.1","maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"homepage":"https://github.com/call-me-sensei/toonlab#readme","bugs":{"url":"https://github.com/call-me-sensei/toonlab/issues"},"bin":{"toonlab-mcp":"mcp/server.mjs"},"dist":{"shasum":"02f43402f4c989be7db5fdb69a78d987810ca732","tarball":"https://registry.npmjs.org/@call-me-sensei/toonlab/-/toonlab-0.3.1.tgz","fileCount":321,"integrity":"sha512-UrWChSabdmqDP7uGrF07gdeAy7mLK7LVwXg8wFflyHGNTCVizorcibG5PnrXY/pe2S5VSvfim1vFoGzPKd6wYQ==","signatures":[{"sig":"MEYCIQCkMtLRFWz2R2BiLpfUAt4jCiRjde6tegUHAhRbRmUcMAIhAMBaYaDgTFkvYwaaXVNlUrU+aZbC4z++NO/mHDbJ8f6v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3799508},"main":"./src/index.js","type":"module","module":"./src/index.js","engines":{"node":">=18"},"exports":{".":"./src/index.js","./sky":"./src/sky/index.js","./post":"./src/post/index.js","./toon":"./src/toon/index.js","./debug":"./src/debug/index.js","./fauna":"./src/fauna/index.js","./grass":"./src/vegetation/stylizedGrass.js","./water":"./src/water/index.js","./camera":"./src/camera/index.js","./styles":"./src/styles/index.js","./texgen":"./src/texgen/index.js","./vfxgen":"./src/vfxgen/index.js","./catalog":"./src/catalog/index.js","./loaders":"./src/loaders/index.js","./pathgen":"./src/pathgen/index.js","./propgen":"./src/propgen/index.js","./rockgen":"./src/rockgen/index.js","./weather":"./src/weather/index.js","./assetlib":"./src/assetlib/index.js","./lighting":"./src/lighting/index.js","./ambientfx":"./src/ambientfx/index.js","./character":"./src/character/index.js","./debrisgen":"./src/debrisgen/index.js","./game-feel":"./src/game-feel/index.js","./vegetation":"./src/vegetation/index.js","./villagegen":"./src/villagegen/index.js","./buildinggen":"./src/buildinggen/index.js","./environment":"./src/environment/index.js","./toon-settings":"./src/toon/toonSettings.js","./grass-palettes":"./src/vegetation/grassPalettes.js","./water-settings":"./src/water/waterSettings.js","./post-processing":"./src/post/postProcessing.js","./vegetation-shaders":"./src/vegetation/vegetationShaders.js"},"gitHead":"78c819c39512209d4f17b9c090641e1f33568fcf","scripts":{"dev":"vite","mcp":"node mcp/server.mjs","build":"vite build","preview":"vite preview","verify:all":"npm run verify:generation && npm run verify:post && npm run verify:camera && npm run verify:motion && npm run verify:biome && npm run verify:soundscape && npm run verify:game-feel && npm run verify:rockgen && npm run verify:pathgen && npm run verify:propgen && npm run verify:buildinggen && npm run verify:villagegen && npm run verify:fauna && npm run verify:ambientfx && npm run verify:vfxgen && npm run verify:water && npm run verify:lighting && npm run verify:lighting-lab && npm run verify:weather && npm run verify:sky && npm run verify:grass && npm run verify:vegetation-shader && npm run verify:api && npm run verify:catalog && npm run verify:assetlib && npm run verify:mcp","verify:api":"node scripts/verify-public-api.mjs","verify:mcp":"node scripts/verify-mcp.mjs","verify:sky":"node scripts/verify-sky.mjs","thumbs:home":"node scripts/generate-home-shots.mjs","thumbs:prop":"node scripts/generate-prop-thumbs.mjs","verify:post":"node scripts/verify-post.mjs","assets:local":"npm run assets:characters && npm run assets:environments","verify:biome":"node scripts/verify-biome.mjs","verify:fauna":"node scripts/verify-fauna.mjs","verify:grass":"node scripts/verify-grass-palettes.mjs","verify:water":"node scripts/verify-watergen.mjs","visual:check":"node scripts/visual-check.mjs","verify:camera":"node scripts/verify-camera.mjs","verify:motion":"node scripts/verify-motion.mjs","verify:vfxgen":"node scripts/verify-vfxgen.mjs","thumbs:catalog":"node scripts/generate-catalog-thumbs.mjs","verify:catalog":"node scripts/verify-catalog.mjs","verify:pathgen":"node scripts/verify-pathgen.mjs","verify:propgen":"node scripts/verify-propgen.mjs","verify:rockgen":"node scripts/verify-rockgen.mjs","verify:weather":"node scripts/verify-weather.mjs","thumbs:building":"node scripts/generate-building-thumbs.mjs","verify:assetlib":"node scripts/verify-assetlib.mjs","verify:lighting":"node scripts/verify-lighting.mjs","baseline:capture":"node scripts/baseline-capture.mjs","baseline:compare":"node scripts/compare-baselines.mjs","verify:ambientfx":"node scripts/verify-ambientfx.mjs","verify:game-feel":"node scripts/verify-game-feel.mjs","assets:characters":"node scripts/generate-local-character-assets.mjs","verify:generation":"node scripts/verify-generation.mjs","verify:soundscape":"node scripts/verify-soundscape.mjs","verify:villagegen":"node scripts/verify-villagegen.mjs","verify:buildinggen":"node scripts/verify-buildinggen.mjs","assets:environments":"node scripts/generate-local-environment-assets.mjs","verify:lighting-lab":"node scripts/verify-lighting-lab.mjs","verify:vegetation-shader":"node scripts/verify-vegetation-shader.mjs"},"_npmUser":{"name":"jack_hyperbond","email":"jack@hyperbond.studio"},"repository":{"url":"git+https://github.com/call-me-sensei/toonlab.git","type":"git"},"_npmVersion":"12.0.1","description":"Stylized (anime/toon) game starter kit for Three.js: character and environment shading, lighting, weather, water, vegetation, sky, and post-processing","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","react":"^19.2.7","three":"^0.185.1","ecctrl":"^1.0.97","marked":"^18.0.6","react-dom":"^19.2.7","playwright":"^1.60.0","lucide-react":"^1.23.0","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@react-three/rapier":"^2.2.0","@vitejs/plugin-react":"^4.7.0"},"peerDependencies":{"three":"^0.185.1","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4"},"peerDependenciesMeta":{"three-stdlib":{"optional":true},"three-mesh-bvh":{"optional":true},"@pixiv/three-vrm":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toonlab_0.3.1_1784482395631_0.888784162489705","host":"s3://npm-registry-packages-npm-production"}},"0.4.19":{"name":"@call-me-sensei/toonlab","version":"0.4.19","keywords":["three","threejs","toon","cel-shading","anime","anime-game","anime-environment","cel-shader","shader","lighting","water","procedural-textures","game-starter"],"author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"license":"MIT","_id":"@call-me-sensei/toonlab@0.4.19","maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"homepage":"https://github.com/call-me-sensei/toonlab#readme","bugs":{"url":"https://github.com/call-me-sensei/toonlab/issues"},"bin":{"toonlab":"cli/toonlab.mjs","toonlab-mcp":"mcp/server.mjs"},"dist":{"shasum":"722c231e3a584bc717fc47370f611a59994d1667","tarball":"https://registry.npmjs.org/@call-me-sensei/toonlab/-/toonlab-0.4.19.tgz","fileCount":717,"integrity":"sha512-Xe+3xQCeS21MCbHY5xgWiQnBKtPg0ZyipyMTalzxOJYm2m6Ic3H6Hfw+8MsqDRvc5//iS75b2kdzd7dsKDr9dA==","signatures":[{"sig":"MEQCIEF36+iS/Eqg4w58E/g2YHpVwe3imAaLgNABGsbGfg1nAiBItpUrzv5SAMOFUCKXnuag2MDbPgknRVhD2ksCWd25OQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7582584},"main":"./src/index.js","type":"module","_from":"file:../launch-plan/review/level-d-0.4.19-20726a34c374/call-me-sensei-toonlab-0.4.19.tgz","types":"./types/index.d.ts","module":"./src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./sky":{"types":"./types/sky/index.d.ts","default":"./src/sky/index.js"},"./post":{"types":"./types/post/index.d.ts","default":"./src/post/index.js"},"./toon":{"types":"./types/toon/index.d.ts","default":"./src/toon/index.js"},"./cloud":{"types":"./types/cloud/index.d.ts","default":"./src/cloud/index.js"},"./grass":{"types":"./types/vegetation/grass.d.ts","default":"./src/vegetation/grass.js"},"./react":{"types":"./types/react/index.d.ts","default":"./src/react/index.js"},"./water":{"types":"./types/water/index.d.ts","default":"./src/water/index.js"},"./styles":{"types":"./types/styles/index.d.ts","default":"./src/styles/index.js"},"./texgen":{"types":"./types/texgen/index.d.ts","default":"./src/texgen/index.js"},"./loaders":{"types":"./types/loaders/index.d.ts","default":"./src/loaders/index.js"},"./rockgen":{"types":"./types/rockgen/index.d.ts","default":"./src/rockgen/index.js"},"./runtime":{"types":"./types/runtime/index.d.ts","default":"./src/runtime/index.js"},"./agents/*":"./agents/*","./assetlib":{"types":"./types/assetlib/index.d.ts","default":"./src/assetlib/index.js"},"./lighting":{"types":"./types/lighting/index.d.ts","default":"./src/lighting/index.js"},"./renderer":{"types":"./types/renderer/index.d.ts","default":"./src/renderer/index.js"},"./character":{"types":"./types/character/index.d.ts","default":"./src/character/index.js"},"./vegetation":{"types":"./types/vegetation/index.d.ts","default":"./src/vegetation/index.js"},"./environment":{"types":"./types/environment/index.d.ts","default":"./src/environment/index.js"},"./rock-shader":{"types":"./types/rock-shader/index.d.ts","default":"./src/rock-shader/index.js"},"./asset-policy":{"types":"./types/asset-policy/index.d.ts","default":"./src/asset-policy/index.js"},"./ground-shader":{"types":"./types/ground-shader/index.d.ts","default":"./src/ground-shader/index.js"},"./toon-settings":{"types":"./types/toon/toonSettings.d.ts","default":"./src/toon/toonSettings.js"},"./grass-palettes":{"types":"./types/vegetation/grassPalettes.d.ts","default":"./src/vegetation/grassPalettes.js"},"./water-settings":{"types":"./types/water/waterSettings.d.ts","default":"./src/water/waterSettings.js"},"./post-processing":{"types":"./types/post/postProcessing.d.ts","default":"./src/post/postProcessing.js"},"./world-collision":{"types":"./types/worldCollision.d.ts","default":"./src/worldCollision.js"},"./official-catalog":{"types":"./types/catalog/officialCatalog.d.ts","default":"./src/catalog/officialCatalog.js"},"./scene-operations":{"types":"./types/agents/index.d.ts","default":"./src/agents/index.js"},"./vegetation-shaders":{"types":"./types/vegetation/vegetationShaders.d.ts","default":"./src/vegetation/vegetationShaders.js"}},"imports":{"#toonlab-mannequin-asset-url":{"browser":"./src/character/mannequinAssetUrl.browser.js","default":"./src/character/mannequinAssetUrl.node.js"}},"scripts":{"dev":"vite","mcp":"node mcp/server.mjs","build":"vite build","setup":"node scripts/setup-local.mjs","update":"node scripts/setup-local.mjs --update","db:seed":"node database/apply-sql.mjs seed","preview":"vite preview","sky:smoke":"SKY_CAPTURE_LAB=sky-smoke node scripts/capture-sky-presets.mjs","db:migrate":"node database/apply-sql.mjs migrate","verify:all":"npm run verify:system-style && npm run verify:product-namespace && npm run verify:generation && npm run verify:post && npm run verify:camera && npm run verify:motion && npm run verify:biome && npm run verify:soundscape && npm run verify:game-feel && npm run verify:world-quality && npm run verify:rock-shader && npm run verify:ground-shader && npm run verify:rockgen && npm run verify:rock-generation-lab && npm run verify:pathgen && npm run verify:propgen && npm run verify:buildinggen && npm run verify:villagegen && npm run verify:fauna && npm run verify:ambientfx && npm run verify:vfxgen && npm run verify:water && npm run verify:landscape && npm run verify:lighting && npm run verify:lighting-lab && npm run verify:live-labs && npm run verify:lab-preview && npm run verify:weather && npm run verify:climate && npm run verify:atmospheric-condition-lab && npm run verify:sky && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:environment-cycle && npm run verify:manufactured-materials && npm run verify:ground-field && npm run verify:grass && npm run verify:grass-package && npm run verify:character-package && npm run verify:vegetation-shader && npm run verify:lab-styles && npm run verify:scatter && npm run verify:legacy-trees && npm run verify:branch-tree && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:api && npm run verify:package && npm run verify:catalog && npm run verify:assetlib && npm run verify:mcp && npm run verify:local-generation","verify:api":"node scripts/verify-public-api.mjs","verify:mcp":"node scripts/verify-mcp.mjs","verify:sky":"node scripts/verify-sky.mjs","sky:capture":"node scripts/capture-sky-presets.mjs","thumbs:home":"node scripts/generate-home-shots.mjs","thumbs:prop":"node scripts/generate-prop-thumbs.mjs","types:build":"node scripts/build-types.mjs","verify:docs":"node scripts/verify-package-documentation.mjs","verify:post":"node scripts/verify-post.mjs","assets:local":"npm run assets:characters && npm run assets:environments","verify:biome":"node scripts/verify-biome.mjs","verify:fauna":"node scripts/verify-fauna.mjs","verify:grass":"node scripts/verify-grass-palettes.mjs","verify:types":"npm run types:build && node scripts/verify-packaged-types.mjs","verify:water":"node scripts/verify-watergen.mjs","visual:check":"node scripts/visual-check.mjs","verify:camera":"node scripts/verify-camera.mjs","verify:motion":"node scripts/verify-motion.mjs","verify:skills":"node scripts/verify-agent-skills.mjs","verify:texgen":"node scripts/verify-texgen.mjs","verify:vfxgen":"node scripts/verify-vfxgen.mjs","assets:starmap":"node scripts/generate-procedural-starmap.mjs","golden:capture":"node scripts/capture-golden-fixtures.mjs","golden:compare":"node scripts/compare-golden-captures.mjs","prepublishOnly":"npm run verify:release","thumbs:catalog":"node scripts/generate-catalog-thumbs.mjs","verify:catalog":"node scripts/verify-catalog.mjs","verify:climate":"node scripts/verify-climate.mjs","verify:package":"node scripts/verify-package-boundary.mjs","verify:pathgen":"node scripts/verify-pathgen.mjs","verify:propgen":"node scripts/verify-propgen.mjs","verify:release":"npm run verify:system-style && npm run verify:style-contract && npm run verify:style-labels-package && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:public-labs && npm run verify:live-labs && npm run verify:rock-shader && npm run verify:rock-generation-lab && npm run verify:rock-lab-lifecycle && npm run verify:ground-shader && npm run verify:manufactured-materials && npm run verify:material-labeling:agent && npm run verify:material-labeling:mcp && npm run verify:water-lab && npm run verify:water && npm run verify:vegetation-labs && npm run verify:texgen && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:world-quality && npm run verify:scatter && npm run verify:legacy-trees && npm run verify:branch-tree && npm run verify:grass-package && npm run verify:character-package && npm run verify:locomotion-state && npm run verify:ground-stabilizer && npm run verify:water-interaction && npm run verify:walkable-character && npm run verify:playground-walkable && npm run verify:renderer-configuration && npm run verify:scene-scheduler && npm run verify:scene-surface && npm run verify:shared-shadow-receivers && npm run verify:scene-quality && npm run verify:quality-integration && npm run verify:lab-asset-provenance && npm run verify:api && npm run verify:types && npm run verify:mcp && npm run verify:skills && npm run verify:docs && npm run verify:local-database && npm run verify:package","verify:rockgen":"node scripts/verify-rockgen.mjs","verify:scatter":"node scripts/verify-scatter.mjs","verify:weather":"node scripts/verify-weather.mjs","thumbs:building":"node scripts/generate-building-thumbs.mjs","verify:assetlib":"node scripts/verify-assetlib.mjs","verify:lighting":"node scripts/verify-lighting.mjs","baseline:capture":"node scripts/baseline-capture.mjs","baseline:compare":"node scripts/compare-baselines.mjs","verify:ambientfx":"node scripts/verify-ambientfx.mjs","verify:game-feel":"node scripts/verify-game-feel.mjs","verify:landscape":"node scripts/verify-landscape.mjs","verify:launch-dx":"node scripts/verify-launch-dx.mjs","verify:live-labs":"node scripts/verify-live-labs.mjs","verify:water-lab":"node scripts/verify-water-lab-contract.mjs","assets:characters":"node scripts/generate-local-character-assets.mjs","verify:generation":"node scripts/verify-generation.mjs","verify:lab-styles":"node scripts/verify-lab-style-boundaries.mjs","verify:soundscape":"node scripts/verify-soundscape.mjs","verify:tree-woody":"node scripts/verify-tree-woody-engine.mjs","verify:villagegen":"node scripts/verify-villagegen.mjs","verify:branch-tree":"node scripts/verify-branch-tree.mjs","verify:buildinggen":"node scripts/verify-buildinggen.mjs","verify:lab-preview":"node scripts/verify-lab-preview.mjs","verify:public-labs":"node scripts/verify-public-lab-authoring.mjs","verify:rock-shader":"node scripts/verify-rock-shader.mjs","verify:tree-doodle":"node scripts/verify-tree-doodle.mjs","assets:environments":"node scripts/generate-local-environment-assets.mjs","audit:tree-baseline":"node scripts/analyze-woody-baseline-relationships.mjs","verify:cloud-shader":"node scripts/verify-cloud-shader.mjs","verify:ground-field":"node scripts/verify-ground-field.mjs","verify:legacy-trees":"node scripts/verify-legacy-trees.mjs","verify:lighting-lab":"node scripts/verify-lighting-lab.mjs","verify:localization":"node scripts/verify-localization.mjs","verify:system-style":"node scripts/verify-system-style-policy.mjs","verify:tree-species":"node scripts/verify-tree-species.mjs","verify:golden-matrix":"node scripts/verify-golden-fixture-matrix.mjs","verify:grass-package":"node scripts/verify-packaged-grass.mjs","verify:ground-shader":"node scripts/verify-ground-shader.mjs","verify:launch-packed":"node scripts/verify-launch-packed-consumers.mjs","verify:scene-quality":"node scripts/verify-scene-quality-profiles.mjs && node scripts/verify-packaged-scene-quality-profiles.mjs","verify:scene-surface":"node scripts/verify-scene-surface-runtime.mjs","verify:sky-cloud-lab":"node scripts/verify-sky-cloud-lab.mjs","verify:world-quality":"node scripts/verify-world-quality.mjs","catalog:seed:generate":"node scripts/generate-catalog-seed.mjs","verify:golden-harness":"node scripts/verify-golden-harness.mjs","verify:local-database":"node scripts/verify-local-database.mjs","verify:style-contract":"node scripts/verify-style-contract.mjs","verify:volumetric-sky":"node scripts/verify-volumetric-sky.mjs","prepare:level-d-review":"node scripts/prepare-level-d-review.mjs","verify:scene-collision":"node scripts/verify-scene-collision-runtime.mjs","verify:scene-scheduler":"node scripts/verify-scene-update-scheduler.mjs && node scripts/verify-packaged-scene-update-scheduler.mjs","verify:vegetation-labs":"node scripts/verify-vegetation-lab-readiness.mjs","verify:gallery-database":"node scripts/verify-official-gallery-database.mjs","verify:local-generation":"node scripts/verify-local-generation.mjs","verify:locomotion-state":"node scripts/verify-locomotion-state-machine.mjs","verify:official-catalog":"node scripts/verify-official-catalog-provider.mjs && node scripts/verify-official-catalog-runtime.mjs && node scripts/verify-official-catalog-lod.mjs && node scripts/verify-official-catalog-placement.mjs && node scripts/verify-playground-official-catalog.mjs && node scripts/verify-packaged-official-catalog.mjs","verify:scene-depth-pass":"node scripts/verify-scene-depth-color-pass.mjs","assets:plateau-landmarks":"node scripts/extract-plateau-landmarks.mjs","verify:character-package":"node scripts/verify-packaged-character.mjs","verify:collision-package":"node scripts/verify-packaged-world-collision.mjs","verify:environment-cycle":"node scripts/verify-environment-cycle.mjs","verify:ground-stabilizer":"node scripts/verify-ground-stabilizer.mjs","verify:product-namespace":"node scripts/verify-product-namespace.mjs","verify:vegetation-shader":"node scripts/verify-vegetation-shader.mjs","verify:water-interaction":"node scripts/verify-water-interaction-controller.mjs","verify:lab-editor-headers":"node scripts/verify-lab-editor-headers.mjs","verify:rock-lab-lifecycle":"node scripts/verify-rock-lab-lifecycle.mjs","verify:walkable-character":"node scripts/verify-walkable-character-runtime.mjs && node scripts/verify-packaged-walkable-character.mjs","verify:playground-walkable":"node scripts/verify-playground-walkable-runtime.mjs","verify:quality-integration":"node scripts/verify-quality-budget-integration.mjs && node scripts/verify-packaged-quality-budget-integration.mjs","verify:rock-generation-lab":"node scripts/verify-rock-generation-lab.mjs","verify:lab-asset-provenance":"node scripts/verify-lab-asset-provenance.mjs","verify:style-labels-package":"node scripts/verify-packaged-style-labels.mjs","verify:material-labeling:mcp":"node quality/mcp-material-labeling/verify-mcp-material-labeling.mjs","verify:manufactured-materials":"node scripts/verify-manufactured-materials.mjs","verify:renderer-configuration":"node scripts/verify-renderer-configuration.mjs && node scripts/verify-packaged-renderer-configuration.mjs","verify:tree-baseline-coverage":"node scripts/verify-woody-baseline-coverage.mjs","verify:material-labeling:agent":"node quality/agent-material-labeling/multi-part-manufactured-prop.mjs","verify:shared-shadow-receivers":"node scripts/verify-shared-shadow-receivers.mjs","verify:tree-species-references":"node scripts/verify-tree-species-references.mjs","verify:atmospheric-condition-lab":"node scripts/verify-atmospheric-condition-lab.mjs"},"_npmUser":{"name":"jack_hyperbond","email":"jack@hyperbond.studio"},"_resolved":"/Users/juminoz/CascadeProjects/toonlab-main/launch-plan/review/level-d-0.4.19-20726a34c374/call-me-sensei-toonlab-0.4.19.tgz","_integrity":"sha512-Xe+3xQCeS21MCbHY5xgWiQnBKtPg0ZyipyMTalzxOJYm2m6Ic3H6Hfw+8MsqDRvc5//iS75b2kdzd7dsKDr9dA==","repository":{"url":"git+https://github.com/call-me-sensei/toonlab.git","type":"git"},"_npmVersion":"11.10.1","description":"Anime-style game toolkit for Three.js with cel shading, vegetation, rocks, water, sky, clouds, procedural textures, and portable Lab artifacts","directories":{},"_nodeVersion":"25.7.0","dependencies":{"pg":"^8.22.0","3d-tiles-renderer":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","react":"^19.2.7","three":"^0.185.1","ecctrl":"^1.0.97","marked":"^18.0.6","draco3d":"^1.5.7","react-dom":"^19.2.7","playwright":"^1.60.0","typescript":"^5.9.3","lucide-react":"^1.23.0","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@react-three/rapier":"^2.2.0","@vitejs/plugin-react":"^4.7.0","@dimforge/rapier3d-compat":"^0.19.2"},"peerDependencies":{"react":"^19.0.0","three":"^0.185.1","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/fiber":"^9.0.0","@dimforge/rapier3d-compat":"^0.19.0"},"peerDependenciesMeta":{"react":{"optional":true},"three-stdlib":{"optional":true},"three-mesh-bvh":{"optional":true},"@pixiv/three-vrm":{"optional":true},"@react-three/fiber":{"optional":true},"@dimforge/rapier3d-compat":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toonlab_0.4.19_1786729940903_0.10920877878558755","host":"s3://npm-registry-packages-npm-production"}},"0.4.20":{"name":"@call-me-sensei/toonlab","version":"0.4.20","keywords":["three","threejs","toon","cel-shading","anime","anime-game","anime-environment","cel-shader","shader","lighting","water","procedural-textures","game-starter"],"author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"license":"MIT","_id":"@call-me-sensei/toonlab@0.4.20","maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"homepage":"https://toonlab.io/docs","bugs":{"url":"https://github.com/call-me-sensei/toonlab/issues"},"bin":{"toonlab":"cli/toonlab.mjs","toonlab-mcp":"mcp/server.mjs"},"dist":{"shasum":"770f6fe8b62e158cbcaeed6cf25945613e16b86d","tarball":"https://registry.npmjs.org/@call-me-sensei/toonlab/-/toonlab-0.4.20.tgz","fileCount":738,"integrity":"sha512-8TI8szTP73AQWDjtQg1I31qig3H0Q0VJswfI9sXzF7zzdChw0xW87BHaNZn2BJ9oWp8wV19cuxkxSaG12kBE0A==","signatures":[{"sig":"MEYCIQCnBfPLhxFRAvjUMaHW5zFCK2qse2ImgO6IiYHn+HKy8QIhAL1WfW378MiMXGI5EnFdschr1X5d91PH3IB2NgYZaxOO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30013454},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","module":"./src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./sky":{"types":"./types/sky/index.d.ts","default":"./src/sky/index.js"},"./post":{"types":"./types/post/index.d.ts","default":"./src/post/index.js"},"./toon":{"types":"./types/toon/index.d.ts","default":"./src/toon/index.js"},"./cloud":{"types":"./types/cloud/index.d.ts","default":"./src/cloud/index.js"},"./grass":{"types":"./types/vegetation/grass.d.ts","default":"./src/vegetation/grass.js"},"./react":{"types":"./types/react/index.d.ts","default":"./src/react/index.js"},"./water":{"types":"./types/water/index.d.ts","default":"./src/water/index.js"},"./styles":{"types":"./types/styles/index.d.ts","default":"./src/styles/index.js"},"./texgen":{"types":"./types/texgen/index.d.ts","default":"./src/texgen/index.js"},"./loaders":{"types":"./types/loaders/index.d.ts","default":"./src/loaders/index.js"},"./rockgen":{"types":"./types/rockgen/index.d.ts","default":"./src/rockgen/index.js"},"./runtime":{"types":"./types/runtime/index.d.ts","default":"./src/runtime/index.js"},"./agents/*":"./agents/*","./assetlib":{"types":"./types/assetlib/index.d.ts","default":"./src/assetlib/index.js"},"./lighting":{"types":"./types/lighting/index.d.ts","default":"./src/lighting/index.js"},"./renderer":{"types":"./types/renderer/index.d.ts","default":"./src/renderer/index.js"},"./character":{"types":"./types/character/index.d.ts","default":"./src/character/index.js"},"./vegetation":{"types":"./types/vegetation/index.d.ts","default":"./src/vegetation/index.js"},"./environment":{"types":"./types/environment/index.d.ts","default":"./src/environment/index.js"},"./rock-shader":{"types":"./types/rock-shader/index.d.ts","default":"./src/rock-shader/index.js"},"./asset-policy":{"types":"./types/asset-policy/index.d.ts","default":"./src/asset-policy/index.js"},"./ground-shader":{"types":"./types/ground-shader/index.d.ts","default":"./src/ground-shader/index.js"},"./toon-settings":{"types":"./types/toon/toonSettings.d.ts","default":"./src/toon/toonSettings.js"},"./grass-palettes":{"types":"./types/vegetation/grassPalettes.d.ts","default":"./src/vegetation/grassPalettes.js"},"./water-settings":{"types":"./types/water/waterSettings.d.ts","default":"./src/water/waterSettings.js"},"./post-processing":{"types":"./types/post/postProcessing.d.ts","default":"./src/post/postProcessing.js"},"./world-collision":{"types":"./types/worldCollision.d.ts","default":"./src/worldCollision.js"},"./official-catalog":{"types":"./types/catalog/officialCatalog.d.ts","default":"./src/catalog/officialCatalog.js"},"./scene-operations":{"types":"./types/agents/index.d.ts","default":"./src/agents/index.js"},"./vegetation-shaders":{"types":"./types/vegetation/vegetationShaders.d.ts","default":"./src/vegetation/vegetationShaders.js"}},"gitHead":"6319e230881b048e4822270e805aa0a801de0c31","imports":{"#toonlab-mannequin-asset-url":{"browser":"./src/character/mannequinAssetUrl.browser.js","default":"./src/character/mannequinAssetUrl.node.js"}},"scripts":{"dev":"vite","mcp":"node mcp/server.mjs","build":"vite build","setup":"node scripts/setup-local.mjs","update":"node scripts/setup-local.mjs --update","db:seed":"node database/apply-sql.mjs seed","preview":"vite preview","sky:smoke":"SKY_CAPTURE_LAB=sky-smoke node scripts/capture-sky-presets.mjs","db:migrate":"node database/apply-sql.mjs migrate","verify:all":"npm run verify:system-style && npm run verify:product-namespace && npm run verify:generation && npm run verify:post && npm run verify:camera && npm run verify:motion && npm run verify:biome && npm run verify:soundscape && npm run verify:game-feel && npm run verify:world-quality && npm run verify:rock-shader && npm run verify:ground-shader && npm run verify:rockgen && npm run verify:rock-generation-lab && npm run verify:pathgen && npm run verify:propgen && npm run verify:buildinggen && npm run verify:villagegen && npm run verify:fauna && npm run verify:ambientfx && npm run verify:vfxgen && npm run verify:water && npm run verify:landscape && npm run verify:lighting && npm run verify:lighting-lab && npm run verify:live-labs && npm run verify:lab-preview && npm run verify:weather && npm run verify:climate && npm run verify:atmospheric-condition-lab && npm run verify:sky && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:environment-cycle && npm run verify:manufactured-materials && npm run verify:ground-field && npm run verify:grass && npm run verify:grass-package && npm run verify:character-package && npm run verify:vegetation-shader && npm run verify:lab-styles && npm run verify:scatter && npm run verify:legacy-trees && npm run verify:branch-tree && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:api && npm run verify:package && npm run verify:catalog && npm run verify:assetlib && npm run verify:mcp && npm run verify:local-generation","verify:api":"node scripts/verify-public-api.mjs","verify:mcp":"node scripts/verify-mcp.mjs","verify:sky":"node scripts/verify-sky.mjs","sky:capture":"node scripts/capture-sky-presets.mjs","thumbs:home":"node scripts/generate-home-shots.mjs","thumbs:prop":"node scripts/generate-prop-thumbs.mjs","types:build":"node scripts/build-types.mjs","verify:docs":"node scripts/verify-package-documentation.mjs","verify:post":"node scripts/verify-post.mjs","assets:local":"npm run assets:characters && npm run assets:environments","verify:biome":"node scripts/verify-biome.mjs","verify:fauna":"node scripts/verify-fauna.mjs","verify:grass":"node scripts/verify-grass-palettes.mjs","verify:types":"npm run types:build && node scripts/verify-packaged-types.mjs","verify:water":"node scripts/verify-watergen.mjs","visual:check":"node scripts/visual-check.mjs","verify:camera":"node scripts/verify-camera.mjs","verify:motion":"node scripts/verify-motion.mjs","verify:skills":"node scripts/verify-agent-skills.mjs","verify:texgen":"node scripts/verify-texgen.mjs","verify:vfxgen":"node scripts/verify-vfxgen.mjs","assets:starmap":"node scripts/generate-procedural-starmap.mjs","golden:capture":"node scripts/capture-golden-fixtures.mjs","golden:compare":"node scripts/compare-golden-captures.mjs","prepublishOnly":"npm run verify:release","thumbs:catalog":"node scripts/generate-catalog-thumbs.mjs","verify:catalog":"node scripts/verify-catalog.mjs","verify:climate":"node scripts/verify-climate.mjs","verify:package":"node scripts/verify-package-boundary.mjs","verify:pathgen":"node scripts/verify-pathgen.mjs","verify:propgen":"node scripts/verify-propgen.mjs","verify:release":"npm run verify:system-style && npm run verify:style-contract && npm run verify:style-labels-package && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:public-labs && npm run verify:live-labs && npm run verify:rock-shader && npm run verify:rock-generation-lab && npm run verify:rock-lab-lifecycle && npm run verify:ground-shader && npm run verify:manufactured-materials && npm run verify:material-labeling:agent && npm run verify:material-labeling:mcp && npm run verify:water-lab && npm run verify:water && npm run verify:vegetation-labs && npm run verify:texgen && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:world-quality && npm run verify:scatter && npm run verify:legacy-trees && npm run verify:branch-tree && npm run verify:grass-package && npm run verify:character-package && npm run verify:locomotion-state && npm run verify:ground-stabilizer && npm run verify:water-interaction && npm run verify:walkable-character && npm run verify:playground-walkable && npm run verify:renderer-configuration && npm run verify:scene-scheduler && npm run verify:scene-surface && npm run verify:shared-shadow-receivers && npm run verify:scene-quality && npm run verify:quality-integration && npm run verify:lab-asset-provenance && npm run verify:api && npm run verify:types && npm run verify:mcp && npm run verify:skills && npm run verify:docs && npm run verify:local-database && npm run verify:package","verify:rockgen":"node scripts/verify-rockgen.mjs","verify:scatter":"node scripts/verify-scatter.mjs","verify:weather":"node scripts/verify-weather.mjs","thumbs:building":"node scripts/generate-building-thumbs.mjs","verify:assetlib":"node scripts/verify-assetlib.mjs","verify:lighting":"node scripts/verify-lighting.mjs","baseline:capture":"node scripts/baseline-capture.mjs","baseline:compare":"node scripts/compare-baselines.mjs","verify:ambientfx":"node scripts/verify-ambientfx.mjs","verify:game-feel":"node scripts/verify-game-feel.mjs","verify:landscape":"node scripts/verify-landscape.mjs","verify:launch-dx":"node scripts/verify-launch-dx.mjs","verify:live-labs":"node scripts/verify-live-labs.mjs","verify:water-lab":"node scripts/verify-water-lab-contract.mjs","assets:characters":"node scripts/generate-local-character-assets.mjs","verify:generation":"node scripts/verify-generation.mjs","verify:lab-styles":"node scripts/verify-lab-style-boundaries.mjs","verify:soundscape":"node scripts/verify-soundscape.mjs","verify:tree-woody":"node scripts/verify-tree-woody-engine.mjs","verify:villagegen":"node scripts/verify-villagegen.mjs","verify:branch-tree":"node scripts/verify-branch-tree.mjs","verify:buildinggen":"node scripts/verify-buildinggen.mjs","verify:lab-preview":"node scripts/verify-lab-preview.mjs","verify:public-labs":"node scripts/verify-public-lab-authoring.mjs","verify:rock-shader":"node scripts/verify-rock-shader.mjs","verify:tree-doodle":"node scripts/verify-tree-doodle.mjs","assets:environments":"node scripts/generate-local-environment-assets.mjs","audit:tree-baseline":"node scripts/analyze-woody-baseline-relationships.mjs","verify:cloud-shader":"node scripts/verify-cloud-shader.mjs","verify:ground-field":"node scripts/verify-ground-field.mjs","verify:legacy-trees":"node scripts/verify-legacy-trees.mjs","verify:lighting-lab":"node scripts/verify-lighting-lab.mjs","verify:localization":"node scripts/verify-localization.mjs","verify:rock-regions":"node scripts/verify-rock-regions.mjs","verify:system-style":"node scripts/verify-system-style-policy.mjs","verify:tree-species":"node scripts/verify-tree-species.mjs","verify:golden-matrix":"node scripts/verify-golden-fixture-matrix.mjs","verify:grass-package":"node scripts/verify-packaged-grass.mjs","verify:ground-shader":"node scripts/verify-ground-shader.mjs","verify:launch-packed":"node scripts/verify-launch-packed-consumers.mjs","verify:scene-quality":"node scripts/verify-scene-quality-profiles.mjs && node scripts/verify-packaged-scene-quality-profiles.mjs","verify:scene-surface":"node scripts/verify-scene-surface-runtime.mjs","verify:sky-cloud-lab":"node scripts/verify-sky-cloud-lab.mjs","verify:world-quality":"node scripts/verify-world-quality.mjs","catalog:seed:generate":"node scripts/generate-catalog-seed.mjs","verify:golden-harness":"node scripts/verify-golden-harness.mjs","verify:local-database":"node scripts/verify-local-database.mjs","verify:style-contract":"node scripts/verify-style-contract.mjs","verify:volumetric-sky":"node scripts/verify-volumetric-sky.mjs","prepare:level-d-review":"node scripts/prepare-level-d-review.mjs","verify:library-preview":"node scripts/verify-library-preview-coverage.mjs","verify:rock-c7-library":"node scripts/verify-rock-c7-surface-library.mjs","verify:scene-collision":"node scripts/verify-scene-collision-runtime.mjs","verify:scene-scheduler":"node scripts/verify-scene-update-scheduler.mjs && node scripts/verify-packaged-scene-update-scheduler.mjs","verify:vegetation-labs":"node scripts/verify-vegetation-lab-readiness.mjs","verify:gallery-database":"node scripts/verify-official-gallery-database.mjs","verify:local-generation":"node scripts/verify-local-generation.mjs && node scripts/verify-fal-patina.mjs","verify:locomotion-state":"node scripts/verify-locomotion-state-machine.mjs","verify:official-catalog":"node scripts/verify-official-catalog-provider.mjs && node scripts/verify-official-catalog-runtime.mjs && node scripts/verify-official-catalog-lod.mjs && node scripts/verify-official-catalog-placement.mjs && node scripts/verify-playground-official-catalog.mjs && node scripts/verify-packaged-official-catalog.mjs","verify:scene-depth-pass":"node scripts/verify-scene-depth-color-pass.mjs","assets:plateau-landmarks":"node scripts/extract-plateau-landmarks.mjs","verify:character-package":"node scripts/verify-packaged-character.mjs","verify:collision-package":"node scripts/verify-packaged-world-collision.mjs","verify:environment-cycle":"node scripts/verify-environment-cycle.mjs","verify:ground-stabilizer":"node scripts/verify-ground-stabilizer.mjs","verify:product-namespace":"node scripts/verify-product-namespace.mjs","verify:vegetation-shader":"node scripts/verify-vegetation-shader.mjs","verify:water-interaction":"node scripts/verify-water-interaction-controller.mjs","verify:creation-revisions":"node scripts/verify-creation-revisions.mjs","verify:lab-editor-headers":"node scripts/verify-lab-editor-headers.mjs","verify:rock-lab-lifecycle":"node scripts/verify-rock-lab-lifecycle.mjs","verify:walkable-character":"node scripts/verify-walkable-character-runtime.mjs && node scripts/verify-packaged-walkable-character.mjs","verify:playground-walkable":"node scripts/verify-playground-walkable-runtime.mjs","verify:quality-integration":"node scripts/verify-quality-budget-integration.mjs && node scripts/verify-packaged-quality-budget-integration.mjs","verify:rock-generation-lab":"node scripts/verify-rock-generation-lab.mjs","verify:lab-asset-provenance":"node scripts/verify-lab-asset-provenance.mjs","verify:rock-region-compiler":"node scripts/verify-rock-region-compiler.mjs","verify:rock-regions-package":"node scripts/verify-packaged-rock-regions.mjs","verify:style-labels-package":"node scripts/verify-packaged-style-labels.mjs","verify:material-labeling:mcp":"node quality/mcp-material-labeling/verify-mcp-material-labeling.mjs","verify:manufactured-materials":"node scripts/verify-manufactured-materials.mjs","verify:renderer-configuration":"node scripts/verify-renderer-configuration.mjs && node scripts/verify-packaged-renderer-configuration.mjs","verify:rock-region-migrations":"node scripts/verify-rock-region-schema-migrations.mjs","verify:tree-baseline-coverage":"node scripts/verify-woody-baseline-coverage.mjs","verify:material-labeling:agent":"node quality/agent-material-labeling/multi-part-manufactured-prop.mjs","verify:rock-semantic-materials":"node scripts/verify-rock-semantic-materials.mjs","verify:shared-shadow-receivers":"node scripts/verify-shared-shadow-receivers.mjs","verify:tree-species-references":"node scripts/verify-tree-species-references.mjs","verify:rock-geology-v2-ontology":"node scripts/verify-rock-geology-v2-ontology.mjs","verify:atmospheric-condition-lab":"node scripts/verify-atmospheric-condition-lab.mjs","verify:rock-geology-v2-morphology":"node scripts/verify-rock-geology-v2-morphology.mjs","verify:rock-regions-clean-consumer":"node scripts/verify-rock-region-clean-consumer.mjs","verify:rock-geology-v2-inspirations":"node scripts/verify-rock-geology-v2-inspirations.mjs","verify:rock-geology-v2-canonical-pilot":"node scripts/verify-rock-geology-v2-canonical-pilot.mjs","capture:rock-geology-v2-canonical-pilot":"node scripts/capture-rock-geology-v2-canonical-pilot.mjs"},"_npmUser":{"name":"jack_hyperbond","email":"jack@hyperbond.studio"},"deprecated":"Incorrect package boundary: predefined legacy tree recipes were exposed. Upgrade to >=0.4.21.","repository":{"url":"git+https://github.com/call-me-sensei/toonlab.git","type":"git"},"_npmVersion":"11.10.1","description":"Anime-style game toolkit for Three.js with cel shading, vegetation, rocks, water, sky, clouds, procedural textures, and portable Lab artifacts","directories":{},"_nodeVersion":"25.7.0","dependencies":{"pg":"^8.22.0","3d-tiles-renderer":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","react":"^19.2.7","three":"^0.185.1","ecctrl":"^1.0.97","marked":"^18.0.6","draco3d":"^1.5.7","react-dom":"^19.2.7","playwright":"^1.60.0","typescript":"^5.9.3","lucide-react":"^1.23.0","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@react-three/rapier":"^2.2.0","@vitejs/plugin-react":"^4.7.0","@dimforge/rapier3d-compat":"^0.19.2"},"peerDependencies":{"react":"^19.0.0","three":"^0.185.1","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/fiber":"^9.0.0","@dimforge/rapier3d-compat":"^0.19.0"},"peerDependenciesMeta":{"react":{"optional":true},"three-stdlib":{"optional":true},"three-mesh-bvh":{"optional":true},"@pixiv/three-vrm":{"optional":true},"@react-three/fiber":{"optional":true},"@dimforge/rapier3d-compat":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toonlab_0.4.20_1787958578018_0.8177414033755321","host":"s3://npm-registry-packages-npm-production"}},"0.4.21":{"name":"@call-me-sensei/toonlab","version":"0.4.21","keywords":["three","threejs","toon","cel-shading","anime","anime-game","anime-environment","cel-shader","shader","lighting","water","procedural-textures","game-starter"],"author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"license":"MIT","_id":"@call-me-sensei/toonlab@0.4.21","maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"homepage":"https://toonlab.io/docs","bugs":{"url":"https://github.com/call-me-sensei/toonlab/issues"},"bin":{"toonlab":"cli/toonlab.mjs","toonlab-mcp":"mcp/server.mjs"},"dist":{"shasum":"63685b970b226fa8eea406722efb6482148a5935","tarball":"https://registry.npmjs.org/@call-me-sensei/toonlab/-/toonlab-0.4.21.tgz","fileCount":736,"integrity":"sha512-R2O1yAzeP95Ky/OWPWtUqnsVNdqd1UbXbf2ob7ka79tPFljZPwwcwK1qsAfYRSn6XkTF7V4/eiANP8gYDZzzAw==","signatures":[{"sig":"MEUCIQCadkeIpC5PI4NDfRaaESVM50QmzGkiDegC8hQbC7GcqgIgSAWngJjb273z/4z2OuXGYHsIy50KN7C/ml5KG9yUlU0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30009021},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","module":"./src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./sky":{"types":"./types/sky/index.d.ts","default":"./src/sky/index.js"},"./post":{"types":"./types/post/index.d.ts","default":"./src/post/index.js"},"./toon":{"types":"./types/toon/index.d.ts","default":"./src/toon/index.js"},"./cloud":{"types":"./types/cloud/index.d.ts","default":"./src/cloud/index.js"},"./grass":{"types":"./types/vegetation/grass.d.ts","default":"./src/vegetation/grass.js"},"./react":{"types":"./types/react/index.d.ts","default":"./src/react/index.js"},"./water":{"types":"./types/water/index.d.ts","default":"./src/water/index.js"},"./styles":{"types":"./types/styles/index.d.ts","default":"./src/styles/index.js"},"./texgen":{"types":"./types/texgen/index.d.ts","default":"./src/texgen/index.js"},"./loaders":{"types":"./types/loaders/index.d.ts","default":"./src/loaders/index.js"},"./rockgen":{"types":"./types/rockgen/index.d.ts","default":"./src/rockgen/index.js"},"./runtime":{"types":"./types/runtime/index.d.ts","default":"./src/runtime/index.js"},"./agents/*":"./agents/*","./assetlib":{"types":"./types/assetlib/index.d.ts","default":"./src/assetlib/index.js"},"./lighting":{"types":"./types/lighting/index.d.ts","default":"./src/lighting/index.js"},"./renderer":{"types":"./types/renderer/index.d.ts","default":"./src/renderer/index.js"},"./character":{"types":"./types/character/index.d.ts","default":"./src/character/index.js"},"./vegetation":{"types":"./types/vegetation/index.d.ts","default":"./src/vegetation/index.js"},"./environment":{"types":"./types/environment/index.d.ts","default":"./src/environment/index.js"},"./rock-shader":{"types":"./types/rock-shader/index.d.ts","default":"./src/rock-shader/index.js"},"./asset-policy":{"types":"./types/asset-policy/index.d.ts","default":"./src/asset-policy/index.js"},"./ground-shader":{"types":"./types/ground-shader/index.d.ts","default":"./src/ground-shader/index.js"},"./toon-settings":{"types":"./types/toon/toonSettings.d.ts","default":"./src/toon/toonSettings.js"},"./grass-palettes":{"types":"./types/vegetation/grassPalettes.d.ts","default":"./src/vegetation/grassPalettes.js"},"./water-settings":{"types":"./types/water/waterSettings.d.ts","default":"./src/water/waterSettings.js"},"./post-processing":{"types":"./types/post/postProcessing.d.ts","default":"./src/post/postProcessing.js"},"./world-collision":{"types":"./types/worldCollision.d.ts","default":"./src/worldCollision.js"},"./official-catalog":{"types":"./types/catalog/officialCatalog.d.ts","default":"./src/catalog/officialCatalog.js"},"./scene-operations":{"types":"./types/agents/index.d.ts","default":"./src/agents/index.js"},"./vegetation-shaders":{"types":"./types/vegetation/vegetationShaders.d.ts","default":"./src/vegetation/vegetationShaders.js"}},"gitHead":"6319e230881b048e4822270e805aa0a801de0c31","imports":{"#toonlab-mannequin-asset-url":{"browser":"./src/character/mannequinAssetUrl.browser.js","default":"./src/character/mannequinAssetUrl.node.js"}},"scripts":{"dev":"vite","mcp":"node mcp/server.mjs","build":"vite build","setup":"node scripts/setup-local.mjs","update":"node scripts/setup-local.mjs --update","db:seed":"node database/apply-sql.mjs seed","preview":"vite preview","sky:smoke":"SKY_CAPTURE_LAB=sky-smoke node scripts/capture-sky-presets.mjs","db:migrate":"node database/apply-sql.mjs migrate","verify:all":"npm run verify:system-style && npm run verify:product-namespace && npm run verify:generation && npm run verify:post && npm run verify:camera && npm run verify:motion && npm run verify:biome && npm run verify:soundscape && npm run verify:game-feel && npm run verify:world-quality && npm run verify:rock-shader && npm run verify:ground-shader && npm run verify:rockgen && npm run verify:rock-generation-lab && npm run verify:pathgen && npm run verify:propgen && npm run verify:buildinggen && npm run verify:villagegen && npm run verify:fauna && npm run verify:ambientfx && npm run verify:vfxgen && npm run verify:water && npm run verify:landscape && npm run verify:lighting && npm run verify:lighting-lab && npm run verify:live-labs && npm run verify:lab-preview && npm run verify:weather && npm run verify:climate && npm run verify:atmospheric-condition-lab && npm run verify:sky && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:environment-cycle && npm run verify:manufactured-materials && npm run verify:ground-field && npm run verify:grass && npm run verify:grass-package && npm run verify:character-package && npm run verify:vegetation-shader && npm run verify:lab-styles && npm run verify:scatter && npm run verify:branch-tree && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:api && npm run verify:package && npm run verify:catalog && npm run verify:assetlib && npm run verify:mcp && npm run verify:local-generation","verify:api":"node scripts/verify-public-api.mjs","verify:mcp":"node scripts/verify-mcp.mjs","verify:sky":"node scripts/verify-sky.mjs","sky:capture":"node scripts/capture-sky-presets.mjs","thumbs:home":"node scripts/generate-home-shots.mjs","thumbs:prop":"node scripts/generate-prop-thumbs.mjs","types:build":"node scripts/build-types.mjs","verify:docs":"node scripts/verify-package-documentation.mjs","verify:post":"node scripts/verify-post.mjs","assets:local":"npm run assets:characters && npm run assets:environments","verify:biome":"node scripts/verify-biome.mjs","verify:fauna":"node scripts/verify-fauna.mjs","verify:grass":"node scripts/verify-grass-palettes.mjs","verify:types":"npm run types:build && node scripts/verify-packaged-types.mjs","verify:water":"node scripts/verify-watergen.mjs","visual:check":"node scripts/visual-check.mjs","verify:camera":"node scripts/verify-camera.mjs","verify:motion":"node scripts/verify-motion.mjs","verify:skills":"node scripts/verify-agent-skills.mjs","verify:texgen":"node scripts/verify-texgen.mjs","verify:vfxgen":"node scripts/verify-vfxgen.mjs","assets:starmap":"node scripts/generate-procedural-starmap.mjs","golden:capture":"node scripts/capture-golden-fixtures.mjs","golden:compare":"node scripts/compare-golden-captures.mjs","prepublishOnly":"npm run verify:release","thumbs:catalog":"node scripts/generate-catalog-thumbs.mjs","verify:catalog":"node scripts/verify-catalog.mjs","verify:climate":"node scripts/verify-climate.mjs","verify:package":"node scripts/verify-package-boundary.mjs","verify:pathgen":"node scripts/verify-pathgen.mjs","verify:propgen":"node scripts/verify-propgen.mjs","verify:release":"npm run verify:system-style && npm run verify:style-contract && npm run verify:style-labels-package && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:public-labs && npm run verify:live-labs && npm run verify:rock-shader && npm run verify:rock-generation-lab && npm run verify:rock-lab-lifecycle && npm run verify:ground-shader && npm run verify:manufactured-materials && npm run verify:material-labeling:agent && npm run verify:material-labeling:mcp && npm run verify:water-lab && npm run verify:water && npm run verify:vegetation-labs && npm run verify:texgen && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:world-quality && npm run verify:scatter && npm run verify:branch-tree && npm run verify:grass-package && npm run verify:character-package && npm run verify:locomotion-state && npm run verify:ground-stabilizer && npm run verify:water-interaction && npm run verify:walkable-character && npm run verify:playground-walkable && npm run verify:renderer-configuration && npm run verify:scene-scheduler && npm run verify:scene-surface && npm run verify:shared-shadow-receivers && npm run verify:scene-quality && npm run verify:quality-integration && npm run verify:lab-asset-provenance && npm run verify:api && npm run verify:types && npm run verify:mcp && npm run verify:skills && npm run verify:docs && npm run verify:local-database && npm run verify:package","verify:rockgen":"node scripts/verify-rockgen.mjs","verify:scatter":"node scripts/verify-scatter.mjs","verify:weather":"node scripts/verify-weather.mjs","thumbs:building":"node scripts/generate-building-thumbs.mjs","verify:assetlib":"node scripts/verify-assetlib.mjs","verify:lighting":"node scripts/verify-lighting.mjs","baseline:capture":"node scripts/baseline-capture.mjs","baseline:compare":"node scripts/compare-baselines.mjs","verify:ambientfx":"node scripts/verify-ambientfx.mjs","verify:game-feel":"node scripts/verify-game-feel.mjs","verify:landscape":"node scripts/verify-landscape.mjs","verify:launch-dx":"node scripts/verify-launch-dx.mjs","verify:live-labs":"node scripts/verify-live-labs.mjs","verify:water-lab":"node scripts/verify-water-lab-contract.mjs","assets:characters":"node scripts/generate-local-character-assets.mjs","verify:generation":"node scripts/verify-generation.mjs","verify:lab-styles":"node scripts/verify-lab-style-boundaries.mjs","verify:soundscape":"node scripts/verify-soundscape.mjs","verify:tree-woody":"node scripts/verify-tree-woody-engine.mjs","verify:villagegen":"node scripts/verify-villagegen.mjs","verify:branch-tree":"node scripts/verify-branch-tree.mjs","verify:buildinggen":"node scripts/verify-buildinggen.mjs","verify:lab-preview":"node scripts/verify-lab-preview.mjs","verify:public-labs":"node scripts/verify-public-lab-authoring.mjs","verify:rock-shader":"node scripts/verify-rock-shader.mjs","verify:tree-doodle":"node scripts/verify-tree-doodle.mjs","assets:environments":"node scripts/generate-local-environment-assets.mjs","audit:tree-baseline":"node scripts/analyze-woody-baseline-relationships.mjs","verify:cloud-shader":"node scripts/verify-cloud-shader.mjs","verify:ground-field":"node scripts/verify-ground-field.mjs","verify:lighting-lab":"node scripts/verify-lighting-lab.mjs","verify:localization":"node scripts/verify-localization.mjs","verify:rock-regions":"node scripts/verify-rock-regions.mjs","verify:system-style":"node scripts/verify-system-style-policy.mjs","verify:tree-species":"node scripts/verify-tree-species.mjs","verify:golden-matrix":"node scripts/verify-golden-fixture-matrix.mjs","verify:grass-package":"node scripts/verify-packaged-grass.mjs","verify:ground-shader":"node scripts/verify-ground-shader.mjs","verify:launch-packed":"node scripts/verify-launch-packed-consumers.mjs","verify:scene-quality":"node scripts/verify-scene-quality-profiles.mjs && node scripts/verify-packaged-scene-quality-profiles.mjs","verify:scene-surface":"node scripts/verify-scene-surface-runtime.mjs","verify:sky-cloud-lab":"node scripts/verify-sky-cloud-lab.mjs","verify:world-quality":"node scripts/verify-world-quality.mjs","catalog:seed:generate":"node scripts/generate-catalog-seed.mjs","verify:golden-harness":"node scripts/verify-golden-harness.mjs","verify:local-database":"node scripts/verify-local-database.mjs","verify:style-contract":"node scripts/verify-style-contract.mjs","verify:volumetric-sky":"node scripts/verify-volumetric-sky.mjs","prepare:level-d-review":"node scripts/prepare-level-d-review.mjs","verify:library-preview":"node scripts/verify-library-preview-coverage.mjs","verify:rock-c7-library":"node scripts/verify-rock-c7-surface-library.mjs","verify:scene-collision":"node scripts/verify-scene-collision-runtime.mjs","verify:scene-scheduler":"node scripts/verify-scene-update-scheduler.mjs && node scripts/verify-packaged-scene-update-scheduler.mjs","verify:vegetation-labs":"node scripts/verify-vegetation-lab-readiness.mjs","verify:gallery-database":"node scripts/verify-official-gallery-database.mjs","verify:local-generation":"node scripts/verify-local-generation.mjs && node scripts/verify-fal-patina.mjs","verify:locomotion-state":"node scripts/verify-locomotion-state-machine.mjs","verify:official-catalog":"node scripts/verify-official-catalog-provider.mjs && node scripts/verify-official-catalog-runtime.mjs && node scripts/verify-official-catalog-lod.mjs && node scripts/verify-official-catalog-placement.mjs && node scripts/verify-playground-official-catalog.mjs && node scripts/verify-packaged-official-catalog.mjs","verify:scene-depth-pass":"node scripts/verify-scene-depth-color-pass.mjs","assets:plateau-landmarks":"node scripts/extract-plateau-landmarks.mjs","verify:character-package":"node scripts/verify-packaged-character.mjs","verify:collision-package":"node scripts/verify-packaged-world-collision.mjs","verify:environment-cycle":"node scripts/verify-environment-cycle.mjs","verify:ground-stabilizer":"node scripts/verify-ground-stabilizer.mjs","verify:product-namespace":"node scripts/verify-product-namespace.mjs","verify:vegetation-shader":"node scripts/verify-vegetation-shader.mjs","verify:water-interaction":"node scripts/verify-water-interaction-controller.mjs","verify:creation-revisions":"node scripts/verify-creation-revisions.mjs","verify:lab-editor-headers":"node scripts/verify-lab-editor-headers.mjs","verify:rock-lab-lifecycle":"node scripts/verify-rock-lab-lifecycle.mjs","verify:walkable-character":"node scripts/verify-walkable-character-runtime.mjs && node scripts/verify-packaged-walkable-character.mjs","verify:playground-walkable":"node scripts/verify-playground-walkable-runtime.mjs","verify:quality-integration":"node scripts/verify-quality-budget-integration.mjs && node scripts/verify-packaged-quality-budget-integration.mjs","verify:rock-generation-lab":"node scripts/verify-rock-generation-lab.mjs","verify:lab-asset-provenance":"node scripts/verify-lab-asset-provenance.mjs","verify:rock-region-compiler":"node scripts/verify-rock-region-compiler.mjs","verify:rock-regions-package":"node scripts/verify-packaged-rock-regions.mjs","verify:style-labels-package":"node scripts/verify-packaged-style-labels.mjs","verify:material-labeling:mcp":"node quality/mcp-material-labeling/verify-mcp-material-labeling.mjs","verify:manufactured-materials":"node scripts/verify-manufactured-materials.mjs","verify:renderer-configuration":"node scripts/verify-renderer-configuration.mjs && node scripts/verify-packaged-renderer-configuration.mjs","verify:rock-region-migrations":"node scripts/verify-rock-region-schema-migrations.mjs","verify:tree-baseline-coverage":"node scripts/verify-woody-baseline-coverage.mjs","verify:material-labeling:agent":"node quality/agent-material-labeling/multi-part-manufactured-prop.mjs","verify:rock-semantic-materials":"node scripts/verify-rock-semantic-materials.mjs","verify:shared-shadow-receivers":"node scripts/verify-shared-shadow-receivers.mjs","verify:tree-species-references":"node scripts/verify-tree-species-references.mjs","verify:rock-geology-v2-ontology":"node scripts/verify-rock-geology-v2-ontology.mjs","verify:atmospheric-condition-lab":"node scripts/verify-atmospheric-condition-lab.mjs","verify:rock-geology-v2-morphology":"node scripts/verify-rock-geology-v2-morphology.mjs","verify:rock-regions-clean-consumer":"node scripts/verify-rock-region-clean-consumer.mjs","verify:rock-geology-v2-inspirations":"node scripts/verify-rock-geology-v2-inspirations.mjs","verify:rock-geology-v2-canonical-pilot":"node scripts/verify-rock-geology-v2-canonical-pilot.mjs","capture:rock-geology-v2-canonical-pilot":"node scripts/capture-rock-geology-v2-canonical-pilot.mjs"},"_npmUser":{"name":"jack_hyperbond","email":"jack@hyperbond.studio"},"repository":{"url":"git+https://github.com/call-me-sensei/toonlab.git","type":"git"},"_npmVersion":"11.10.1","description":"Anime-style game toolkit for Three.js with cel shading, vegetation, rocks, water, sky, clouds, procedural textures, and portable Lab artifacts","directories":{},"_nodeVersion":"25.7.0","dependencies":{"pg":"^8.22.0","3d-tiles-renderer":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","react":"^19.2.7","three":"^0.185.1","ecctrl":"^1.0.97","marked":"^18.0.6","draco3d":"^1.5.7","react-dom":"^19.2.7","playwright":"^1.60.0","typescript":"^5.9.3","lucide-react":"^1.23.0","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@react-three/rapier":"^2.2.0","@vitejs/plugin-react":"^4.7.0","@dimforge/rapier3d-compat":"^0.19.2"},"peerDependencies":{"react":"^19.0.0","three":"^0.185.1","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/fiber":"^9.0.0","@dimforge/rapier3d-compat":"^0.19.0"},"peerDependenciesMeta":{"react":{"optional":true},"three-stdlib":{"optional":true},"three-mesh-bvh":{"optional":true},"@pixiv/three-vrm":{"optional":true},"@react-three/fiber":{"optional":true},"@dimforge/rapier3d-compat":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toonlab_0.4.21_1788013028140_0.24942170828502452","host":"s3://npm-registry-packages-npm-production"}},"0.4.22":{"name":"@call-me-sensei/toonlab","version":"0.4.22","keywords":["three","threejs","toon","cel-shading","anime","anime-game","anime-environment","cel-shader","shader","lighting","water","procedural-textures","game-starter"],"author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"license":"MIT","_id":"@call-me-sensei/toonlab@0.4.22","maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"homepage":"https://toonlab.io/docs","bugs":{"url":"https://github.com/call-me-sensei/toonlab/issues"},"bin":{"toonlab":"cli/toonlab.mjs","toonlab-mcp":"mcp/server.mjs"},"dist":{"shasum":"92d8401380ff7e187dda2855d81f4fe8d638a620","tarball":"https://registry.npmjs.org/@call-me-sensei/toonlab/-/toonlab-0.4.22.tgz","fileCount":744,"integrity":"sha512-2l7vX+PHvn83iIoHd9HxKf5s5lPQZleAsuubyOp34jH/Tx6rgdzpEKXxY004b5+/oN9nNbA9aEOqOVUDiKlsMA==","signatures":[{"sig":"MEQCID54rAdVSnC3aUgq++vDhhqDblmioQuII0en/505TQYfAiBPpo0tkZMQXe0B1gSNZZiHwHL5MFh9dUTepekEde0EFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33037848},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","module":"./src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./sky":{"types":"./types/sky/index.d.ts","default":"./src/sky/index.js"},"./post":{"types":"./types/post/index.d.ts","default":"./src/post/index.js"},"./toon":{"types":"./types/toon/index.d.ts","default":"./src/toon/index.js"},"./cloud":{"types":"./types/cloud/index.d.ts","default":"./src/cloud/index.js"},"./grass":{"types":"./types/vegetation/grass.d.ts","default":"./src/vegetation/grass.js"},"./react":{"types":"./types/react/index.d.ts","default":"./src/react/index.js"},"./water":{"types":"./types/water/index.d.ts","default":"./src/water/index.js"},"./styles":{"types":"./types/styles/index.d.ts","default":"./src/styles/index.js"},"./texgen":{"types":"./types/texgen/index.d.ts","default":"./src/texgen/index.js"},"./loaders":{"types":"./types/loaders/index.d.ts","default":"./src/loaders/index.js"},"./rockgen":{"types":"./types/rockgen/index.d.ts","default":"./src/rockgen/index.js"},"./runtime":{"types":"./types/runtime/index.d.ts","default":"./src/runtime/index.js"},"./agents/*":"./agents/*","./assetlib":{"types":"./types/assetlib/index.d.ts","default":"./src/assetlib/index.js"},"./lighting":{"types":"./types/lighting/index.d.ts","default":"./src/lighting/index.js"},"./renderer":{"types":"./types/renderer/index.d.ts","default":"./src/renderer/index.js"},"./character":{"types":"./types/character/index.d.ts","default":"./src/character/index.js"},"./vegetation":{"types":"./types/vegetation/index.d.ts","default":"./src/vegetation/index.js"},"./environment":{"types":"./types/environment/index.d.ts","default":"./src/environment/index.js"},"./rock-shader":{"types":"./types/rock-shader/index.d.ts","default":"./src/rock-shader/index.js"},"./asset-policy":{"types":"./types/asset-policy/index.d.ts","default":"./src/asset-policy/index.js"},"./ground-shader":{"types":"./types/ground-shader/index.d.ts","default":"./src/ground-shader/index.js"},"./toon-settings":{"types":"./types/toon/toonSettings.d.ts","default":"./src/toon/toonSettings.js"},"./grass-palettes":{"types":"./types/vegetation/grassPalettes.d.ts","default":"./src/vegetation/grassPalettes.js"},"./water-settings":{"types":"./types/water/waterSettings.d.ts","default":"./src/water/waterSettings.js"},"./post-processing":{"types":"./types/post/postProcessing.d.ts","default":"./src/post/postProcessing.js"},"./world-collision":{"types":"./types/worldCollision.d.ts","default":"./src/worldCollision.js"},"./official-catalog":{"types":"./types/catalog/officialCatalog.d.ts","default":"./src/catalog/officialCatalog.js"},"./scene-operations":{"types":"./types/agents/index.d.ts","default":"./src/agents/index.js"},"./vegetation-shaders":{"types":"./types/vegetation/vegetationShaders.d.ts","default":"./src/vegetation/vegetationShaders.js"}},"gitHead":"cfa6cc9760744ac96709e9299c3f3a9819911473","imports":{"#toonlab-mannequin-asset-url":{"browser":"./src/character/mannequinAssetUrl.browser.js","default":"./src/character/mannequinAssetUrl.node.js"}},"scripts":{"dev":"vite","mcp":"node mcp/server.mjs","build":"vite build","setup":"node scripts/setup-local.mjs","update":"node scripts/setup-local.mjs --update","db:seed":"node database/apply-sql.mjs seed","preview":"vite preview","sky:smoke":"SKY_CAPTURE_LAB=sky-smoke node scripts/capture-sky-presets.mjs","db:migrate":"node database/apply-sql.mjs migrate","verify:all":"npm run verify:system-style && npm run verify:product-namespace && npm run verify:generation && npm run verify:post && npm run verify:camera && npm run verify:motion && npm run verify:biome && npm run verify:soundscape && npm run verify:game-feel && npm run verify:world-quality && npm run verify:rock-shader && npm run verify:ground-shader && npm run verify:rockgen && npm run verify:rock-generation-lab && npm run verify:pathgen && npm run verify:propgen && npm run verify:buildinggen && npm run verify:villagegen && npm run verify:fauna && npm run verify:ambientfx && npm run verify:vfxgen && npm run verify:water && npm run verify:landscape && npm run verify:lighting && npm run verify:lighting-lab && npm run verify:live-labs && npm run verify:lab-preview && npm run verify:weather && npm run verify:climate && npm run verify:atmospheric-condition-lab && npm run verify:sky && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:environment-cycle && npm run verify:manufactured-materials && npm run verify:ground-field && npm run verify:grass && npm run verify:grass-package && npm run verify:character-package && npm run verify:vegetation-shader && npm run verify:lab-styles && npm run verify:scatter && npm run verify:branch-tree && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:api && npm run verify:package && npm run verify:catalog && npm run verify:assetlib && npm run verify:mcp && npm run verify:local-generation","verify:api":"node scripts/verify-public-api.mjs","verify:mcp":"node scripts/verify-mcp.mjs","verify:sky":"node scripts/verify-sky.mjs","sky:capture":"node scripts/capture-sky-presets.mjs","thumbs:home":"node scripts/generate-home-shots.mjs","thumbs:prop":"node scripts/generate-prop-thumbs.mjs","types:build":"node scripts/build-types.mjs","verify:docs":"node scripts/verify-package-documentation.mjs","verify:post":"node scripts/verify-post.mjs","assets:local":"npm run assets:characters && npm run assets:environments","verify:biome":"node scripts/verify-biome.mjs","verify:fauna":"node scripts/verify-fauna.mjs","verify:grass":"node scripts/verify-grass-palettes.mjs","verify:types":"npm run types:build && node scripts/verify-packaged-types.mjs","verify:water":"node scripts/verify-watergen.mjs","visual:check":"node scripts/visual-check.mjs","verify:camera":"node scripts/verify-camera.mjs","verify:motion":"node scripts/verify-motion.mjs","verify:skills":"node scripts/verify-agent-skills.mjs","verify:texgen":"node scripts/verify-texgen.mjs","verify:vfxgen":"node scripts/verify-vfxgen.mjs","assets:starmap":"node scripts/generate-procedural-starmap.mjs","golden:capture":"node scripts/capture-golden-fixtures.mjs","golden:compare":"node scripts/compare-golden-captures.mjs","prepublishOnly":"npm run verify:release","thumbs:catalog":"node scripts/generate-catalog-thumbs.mjs","verify:catalog":"node scripts/verify-catalog.mjs","verify:climate":"node scripts/verify-climate.mjs","verify:package":"node scripts/verify-package-boundary.mjs","verify:pathgen":"node scripts/verify-pathgen.mjs","verify:propgen":"node scripts/verify-propgen.mjs","verify:release":"npm run verify:system-style && npm run verify:style-contract && npm run verify:style-labels-package && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:public-labs && npm run verify:live-labs && npm run verify:rock-shader && npm run verify:rock-generation-lab && npm run verify:rock-lab-lifecycle && npm run verify:ground-shader && npm run verify:manufactured-materials && npm run verify:material-labeling:agent && npm run verify:material-labeling:mcp && npm run verify:water-lab && npm run verify:water && npm run verify:vegetation-labs && npm run verify:texgen && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:world-quality && npm run verify:scatter && npm run verify:branch-tree && npm run verify:grass-package && npm run verify:character-package && npm run verify:locomotion-state && npm run verify:ground-stabilizer && npm run verify:water-interaction && npm run verify:walkable-character && npm run verify:playground-walkable && npm run verify:renderer-configuration && npm run verify:scene-scheduler && npm run verify:scene-surface && npm run verify:shared-shadow-receivers && npm run verify:scene-quality && npm run verify:quality-integration && npm run verify:lab-asset-provenance && npm run verify:api && npm run verify:types && npm run verify:mcp && npm run verify:skills && npm run verify:docs && npm run verify:local-database && npm run verify:package","verify:rockgen":"node scripts/verify-rockgen.mjs","verify:scatter":"node scripts/verify-scatter.mjs","verify:weather":"node scripts/verify-weather.mjs","thumbs:building":"node scripts/generate-building-thumbs.mjs","verify:assetlib":"node scripts/verify-assetlib.mjs","verify:lighting":"node scripts/verify-lighting.mjs","baseline:capture":"node scripts/baseline-capture.mjs","baseline:compare":"node scripts/compare-baselines.mjs","verify:ambientfx":"node scripts/verify-ambientfx.mjs","verify:game-feel":"node scripts/verify-game-feel.mjs","verify:landscape":"node scripts/verify-landscape.mjs","verify:launch-dx":"node scripts/verify-launch-dx.mjs","verify:live-labs":"node scripts/verify-live-labs.mjs","verify:water-lab":"node scripts/verify-water-lab-contract.mjs","assets:characters":"node scripts/generate-local-character-assets.mjs","verify:generation":"node scripts/verify-generation.mjs","verify:lab-styles":"node scripts/verify-lab-style-boundaries.mjs","verify:soundscape":"node scripts/verify-soundscape.mjs","verify:tree-woody":"node scripts/verify-tree-woody-engine.mjs","verify:villagegen":"node scripts/verify-villagegen.mjs","verify:branch-tree":"node scripts/verify-branch-tree.mjs","verify:buildinggen":"node scripts/verify-buildinggen.mjs","verify:lab-preview":"node scripts/verify-lab-preview.mjs","verify:public-labs":"node scripts/verify-public-lab-authoring.mjs","verify:rock-shader":"node scripts/verify-rock-shader.mjs","verify:tree-doodle":"node scripts/verify-tree-doodle.mjs","assets:environments":"node scripts/generate-local-environment-assets.mjs","audit:tree-baseline":"node scripts/analyze-woody-baseline-relationships.mjs","verify:cloud-shader":"node scripts/verify-cloud-shader.mjs","verify:ground-field":"node scripts/verify-ground-field.mjs","verify:lighting-lab":"node scripts/verify-lighting-lab.mjs","verify:localization":"node scripts/verify-localization.mjs","verify:rock-regions":"node scripts/verify-rock-regions.mjs","verify:system-style":"node scripts/verify-system-style-policy.mjs","verify:tree-species":"node scripts/verify-tree-species.mjs","verify:golden-matrix":"node scripts/verify-golden-fixture-matrix.mjs","verify:grass-package":"node scripts/verify-packaged-grass.mjs","verify:ground-shader":"node scripts/verify-ground-shader.mjs","verify:launch-packed":"node scripts/verify-launch-packed-consumers.mjs","verify:scene-quality":"node scripts/verify-scene-quality-profiles.mjs && node scripts/verify-packaged-scene-quality-profiles.mjs","verify:scene-surface":"node scripts/verify-scene-surface-runtime.mjs","verify:sky-cloud-lab":"node scripts/verify-sky-cloud-lab.mjs","verify:world-quality":"node scripts/verify-world-quality.mjs","catalog:seed:generate":"node scripts/generate-catalog-seed.mjs","verify:golden-harness":"node scripts/verify-golden-harness.mjs","verify:local-database":"node scripts/verify-local-database.mjs","verify:style-contract":"node scripts/verify-style-contract.mjs","verify:volumetric-sky":"node scripts/verify-volumetric-sky.mjs","prepare:level-d-review":"node scripts/prepare-level-d-review.mjs","verify:library-preview":"node scripts/verify-library-preview-coverage.mjs","verify:rock-c7-library":"node scripts/verify-rock-c7-surface-library.mjs","verify:scene-collision":"node scripts/verify-scene-collision-runtime.mjs","verify:scene-scheduler":"node scripts/verify-scene-update-scheduler.mjs && node scripts/verify-packaged-scene-update-scheduler.mjs","verify:vegetation-labs":"node scripts/verify-vegetation-lab-readiness.mjs","verify:gallery-database":"node scripts/verify-official-gallery-database.mjs","verify:local-generation":"node scripts/verify-local-generation.mjs && node scripts/verify-fal-patina.mjs","verify:locomotion-state":"node scripts/verify-locomotion-state-machine.mjs","verify:official-catalog":"node scripts/verify-official-catalog-provider.mjs && node scripts/verify-official-catalog-rock-package.mjs && node scripts/verify-official-catalog-runtime.mjs && node scripts/verify-official-catalog-lod.mjs && node scripts/verify-official-catalog-placement.mjs && node scripts/verify-playground-official-catalog.mjs && node scripts/verify-packaged-official-catalog.mjs","verify:scene-depth-pass":"node scripts/verify-scene-depth-color-pass.mjs","assets:plateau-landmarks":"node scripts/extract-plateau-landmarks.mjs","verify:character-package":"node scripts/verify-packaged-character.mjs","verify:collision-package":"node scripts/verify-packaged-world-collision.mjs","verify:environment-cycle":"node scripts/verify-environment-cycle.mjs","verify:ground-stabilizer":"node scripts/verify-ground-stabilizer.mjs","verify:product-namespace":"node scripts/verify-product-namespace.mjs","verify:vegetation-shader":"node scripts/verify-vegetation-shader.mjs","verify:water-interaction":"node scripts/verify-water-interaction-controller.mjs","verify:creation-revisions":"node scripts/verify-creation-revisions.mjs","verify:lab-editor-headers":"node scripts/verify-lab-editor-headers.mjs","verify:rock-lab-lifecycle":"node scripts/verify-rock-lab-lifecycle.mjs","verify:walkable-character":"node scripts/verify-walkable-character-runtime.mjs && node scripts/verify-packaged-walkable-character.mjs","verify:playground-walkable":"node scripts/verify-playground-walkable-runtime.mjs","verify:quality-integration":"node scripts/verify-quality-budget-integration.mjs && node scripts/verify-packaged-quality-budget-integration.mjs","verify:rock-generation-lab":"node scripts/verify-rock-generation-lab.mjs","verify:lab-asset-provenance":"node scripts/verify-lab-asset-provenance.mjs","verify:rock-dense-field-lod":"node scripts/verify-rock-dense-field-lod.mjs && node scripts/verify-official-catalog-lod.mjs","verify:rock-region-compiler":"node scripts/verify-rock-region-compiler.mjs","verify:rock-regions-package":"node scripts/verify-packaged-rock-regions.mjs","verify:style-labels-package":"node scripts/verify-packaged-style-labels.mjs","verify:material-labeling:mcp":"node quality/mcp-material-labeling/verify-mcp-material-labeling.mjs","verify:manufactured-materials":"node scripts/verify-manufactured-materials.mjs","verify:renderer-configuration":"node scripts/verify-renderer-configuration.mjs && node scripts/verify-packaged-renderer-configuration.mjs","verify:rock-region-migrations":"node scripts/verify-rock-region-schema-migrations.mjs","verify:tree-baseline-coverage":"node scripts/verify-woody-baseline-coverage.mjs","verify:material-labeling:agent":"node quality/agent-material-labeling/multi-part-manufactured-prop.mjs","verify:rock-semantic-materials":"node scripts/verify-rock-semantic-materials.mjs","verify:shared-shadow-receivers":"node scripts/verify-shared-shadow-receivers.mjs","verify:tree-species-references":"node scripts/verify-tree-species-references.mjs","verify:rock-geology-v2-ontology":"node scripts/verify-rock-geology-v2-ontology.mjs","verify:atmospheric-condition-lab":"node scripts/verify-atmospheric-condition-lab.mjs","verify:rock-geology-v2-morphology":"node scripts/verify-rock-geology-v2-morphology.mjs","verify:rock-regions-clean-consumer":"node scripts/verify-rock-region-clean-consumer.mjs","verify:rock-geology-v2-inspirations":"node scripts/verify-rock-geology-v2-inspirations.mjs","verify:rock-geology-v2-canonical-pilot":"node scripts/verify-rock-geology-v2-canonical-pilot.mjs","capture:rock-geology-v2-canonical-pilot":"node scripts/capture-rock-geology-v2-canonical-pilot.mjs"},"_npmUser":{"name":"jack_hyperbond","email":"jack@hyperbond.studio"},"repository":{"url":"git+https://github.com/call-me-sensei/toonlab.git","type":"git"},"_npmVersion":"11.10.1","description":"Anime-style game toolkit for Three.js with cel shading, vegetation, rocks, water, sky, clouds, procedural textures, and portable Lab artifacts","directories":{},"_nodeVersion":"25.7.0","dependencies":{"pg":"^8.22.0","3d-tiles-renderer":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","react":"^19.2.7","three":"^0.185.1","ecctrl":"^1.0.97","marked":"^18.0.6","draco3d":"^1.5.7","react-dom":"^19.2.7","playwright":"^1.60.0","typescript":"^5.9.3","lucide-react":"^1.23.0","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@react-three/rapier":"^2.2.0","@vitejs/plugin-react":"^4.7.0","@dimforge/rapier3d-compat":"^0.19.2"},"peerDependencies":{"react":"^19.0.0","three":"^0.185.1","three-stdlib":"^2.36.1","three-mesh-bvh":"^0.8.3","@pixiv/three-vrm":"^3.5.4","@react-three/fiber":"^9.0.0","@dimforge/rapier3d-compat":"^0.19.0"},"peerDependenciesMeta":{"react":{"optional":true},"three-stdlib":{"optional":true},"three-mesh-bvh":{"optional":true},"@pixiv/three-vrm":{"optional":true},"@react-three/fiber":{"optional":true},"@dimforge/rapier3d-compat":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toonlab_0.4.22_1788275239987_0.6456644251798387","host":"s3://npm-registry-packages-npm-production"}},"0.4.23":{"name":"@call-me-sensei/toonlab","version":"0.4.23","keywords":["three","threejs","toon","cel-shading","anime","anime-game","anime-environment","cel-shader","shader","lighting","water","procedural-textures","game-starter"],"author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"license":"MIT","_id":"@call-me-sensei/toonlab@0.4.23","maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"homepage":"https://toonlab.io/docs","bugs":{"url":"https://github.com/call-me-sensei/toonlab/issues"},"bin":{"toonlab":"cli/toonlab.mjs","toonlab-mcp":"mcp/server.mjs"},"dist":{"shasum":"b3bbc54a202effc66a12eb1ea819beda43fa26d5","tarball":"https://registry.npmjs.org/@call-me-sensei/toonlab/-/toonlab-0.4.23.tgz","fileCount":769,"integrity":"sha512-+Vn0xedrmxyLkm879dWPHdAJmPxGRmdmfpV5SuRHZHEpmpJJ/w0RgDCyRg3ZVZFmv7OsO6igI6NNDZC6Deo2yA==","signatures":[{"sig":"MEUCIQD7SfsfKy8dt1fY5XE1jQA2q+5gjMOFNfCoMvkpuWokowIgJdy0Q2mbZlioAoXWFWyDnfgWYIJWV2KYCW+f7F3mAo4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33356745},"main":"./src/index.js","type":"module","_from":"file:/Users/juminoz/CascadeProjects/toonlab-main/artifacts/release-0.4.23/call-me-sensei-toonlab-0.4.23.tgz","types":"./types/index.d.ts","module":"./src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./sky":{"types":"./types/sky/index.d.ts","default":"./src/sky/index.js"},"./post":{"types":"./types/post/index.d.ts","default":"./src/post/index.js"},"./toon":{"types":"./types/toon/index.d.ts","default":"./src/toon/index.js"},"./cloud":{"types":"./types/cloud/index.d.ts","default":"./src/cloud/index.js"},"./grass":{"types":"./types/vegetation/grass.d.ts","default":"./src/vegetation/grass.js"},"./react":{"types":"./types/react/index.d.ts","default":"./src/react/index.js"},"./water":{"types":"./types/water/index.d.ts","default":"./src/water/index.js"},"./styles":{"types":"./types/styles/index.d.ts","default":"./src/styles/index.js"},"./texgen":{"types":"./types/texgen/index.d.ts","default":"./src/texgen/index.js"},"./loaders":{"types":"./types/loaders/index.d.ts","default":"./src/loaders/index.js"},"./rockgen":{"types":"./types/rockgen/index.d.ts","default":"./src/rockgen/index.js"},"./runtime":{"types":"./types/runtime/index.d.ts","default":"./src/runtime/index.js"},"./agents/*":"./agents/*","./assetlib":{"types":"./types/assetlib/index.d.ts","default":"./src/assetlib/index.js"},"./lighting":{"types":"./types/lighting/index.d.ts","default":"./src/lighting/index.js"},"./renderer":{"types":"./types/renderer/index.d.ts","default":"./src/renderer/index.js"},"./character":{"types":"./types/character/index.d.ts","default":"./src/character/index.js"},"./vegetation":{"types":"./types/vegetation/index.d.ts","default":"./src/vegetation/index.js"},"./environment":{"types":"./types/environment/index.d.ts","default":"./src/environment/index.js"},"./rock-shader":{"types":"./types/rock-shader/index.d.ts","default":"./src/rock-shader/index.js"},"./asset-policy":{"types":"./types/asset-policy/index.d.ts","default":"./src/asset-policy/index.js"},"./ground-shader":{"types":"./types/ground-shader/index.d.ts","default":"./src/ground-shader/index.js"},"./toon-settings":{"types":"./types/toon/toonSettings.d.ts","default":"./src/toon/toonSettings.js"},"./grass-palettes":{"types":"./types/vegetation/grassPalettes.d.ts","default":"./src/vegetation/grassPalettes.js"},"./water-settings":{"types":"./types/water/waterSettings.d.ts","default":"./src/water/waterSettings.js"},"./post-processing":{"types":"./types/post/postProcessing.d.ts","default":"./src/post/postProcessing.js"},"./world-collision":{"types":"./types/worldCollision.d.ts","default":"./src/worldCollision.js"},"./official-catalog":{"types":"./types/catalog/officialCatalog.d.ts","default":"./src/catalog/officialCatalog.js"},"./scene-operations":{"types":"./types/agents/index.d.ts","default":"./src/agents/index.js"},"./vegetation-shaders":{"types":"./types/vegetation/vegetationShaders.d.ts","default":"./src/vegetation/vegetationShaders.js"}},"imports":{"#toonlab-mannequin-asset-url":{"browser":"./src/character/mannequinAssetUrl.browser.js","default":"./src/character/mannequinAssetUrl.node.js"}},"scripts":{"dev":"vite","mcp":"node mcp/server.mjs","build":"vite build","setup":"node scripts/setup-local.mjs","update":"node scripts/setup-local.mjs --update","db:seed":"node database/apply-sql.mjs seed","preview":"vite preview","sky:smoke":"SKY_CAPTURE_LAB=sky-smoke node scripts/capture-sky-presets.mjs","db:migrate":"node database/apply-sql.mjs migrate","verify:all":"npm run verify:system-style && npm run verify:product-namespace && npm run verify:generation && npm run verify:post && npm run verify:camera && npm run verify:motion && npm run verify:biome && npm run verify:soundscape && npm run verify:game-feel && npm run verify:world-quality && npm run verify:rock-shader && npm run verify:ground-shader && npm run verify:rockgen && npm run verify:rock-generation-lab && npm run verify:pathgen && npm run verify:propgen && npm run verify:buildinggen && npm run verify:villagegen && npm run verify:fauna && npm run verify:ambientfx && npm run verify:vfxgen && npm run verify:water && npm run verify:landscape && npm run verify:lighting && npm run verify:lighting-lab && npm run verify:live-labs && npm run verify:lab-preview && npm run verify:weather && npm run verify:climate && npm run verify:atmospheric-condition-lab && npm run verify:sky && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:environment-cycle && npm run verify:manufactured-materials && npm run verify:ground-field && npm run verify:grass && npm run verify:grass-package && npm run verify:character-package && npm run verify:vegetation-shader && npm run verify:lab-styles && npm run verify:scatter && npm run verify:branch-tree && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:api && npm run verify:package && npm run verify:catalog && npm run verify:assetlib && npm run verify:mcp && npm run verify:local-generation","verify:api":"node scripts/verify-public-api.mjs","verify:mcp":"node scripts/sync-mcp-tree-contract.mjs --check && node scripts/verify-mcp.mjs && node scripts/verify-packaged-mcp.mjs","verify:sky":"node scripts/verify-sky.mjs","sky:capture":"node scripts/capture-sky-presets.mjs","thumbs:home":"node scripts/generate-home-shots.mjs","thumbs:prop":"node scripts/generate-prop-thumbs.mjs","types:build":"node scripts/build-types.mjs","verify:docs":"node scripts/verify-package-documentation.mjs && node scripts/generate-settings-reference.mjs --check && node scripts/verify-documentation-examples.mjs","verify:post":"node scripts/verify-post.mjs","assets:local":"npm run assets:characters && npm run assets:environments","verify:biome":"node scripts/verify-biome.mjs","verify:fauna":"node scripts/verify-fauna.mjs","verify:grass":"node scripts/verify-grass-palettes.mjs","verify:types":"npm run types:build && node scripts/verify-packaged-types.mjs","verify:water":"node scripts/verify-watergen.mjs && node scripts/verify-water-physics.mjs && node scripts/verify-water-dynamics.mjs && node scripts/verify-water-beach-swash.mjs","visual:check":"node scripts/visual-check.mjs","verify:camera":"node scripts/verify-camera.mjs","verify:motion":"node scripts/verify-motion.mjs","verify:skills":"node scripts/verify-agent-skills.mjs","verify:texgen":"node scripts/verify-texgen.mjs","verify:vfxgen":"node scripts/verify-vfxgen.mjs","assets:starmap":"node scripts/generate-procedural-starmap.mjs","golden:capture":"node scripts/capture-golden-fixtures.mjs","golden:compare":"node scripts/compare-golden-captures.mjs","prepublishOnly":"npm run verify:release","thumbs:catalog":"node scripts/generate-catalog-thumbs.mjs","verify:catalog":"node scripts/verify-catalog.mjs","verify:climate":"node scripts/verify-climate.mjs","verify:package":"node scripts/verify-package-boundary.mjs","verify:pathgen":"node scripts/verify-pathgen.mjs","verify:propgen":"node scripts/verify-propgen.mjs","verify:release":"npm run verify:system-style && npm run verify:style-contract && npm run verify:style-labels-package && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:public-labs && npm run verify:live-labs && npm run verify:natural-rock-surfaces && npm run verify:rock-shader && npm run verify:rock-generation-lab && npm run verify:rock-lab-lifecycle && npm run verify:ground-shader && npm run verify:manufactured-materials && npm run verify:material-labeling:agent && npm run verify:material-labeling:mcp && npm run verify:water-lab && npm run verify:water && npm run verify:vegetation-labs && npm run verify:texgen && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:world-quality && npm run verify:scatter && npm run verify:branch-tree && npm run verify:grass-package && npm run verify:character-package && npm run verify:locomotion-state && npm run verify:ground-stabilizer && npm run verify:water-interaction && npm run verify:walkable-character && npm run verify:playground-walkable && npm run verify:renderer-configuration && npm run verify:scene-scheduler && npm run verify:scene-surface && npm run verify:shared-shadow-receivers && npm run verify:scene-quality && npm run verify:quality-integration && npm run verify:lab-asset-provenance && npm run verify:api && npm run verify:types && npm run verify:mcp && npm run verify:skills && npm run verify:docs && npm run verify:local-database && npm run verify:package","verify:rockgen":"node scripts/verify-rockgen.mjs","verify:scatter":"node scripts/verify-scatter.mjs","verify:weather":"node scripts/verify-weather.mjs","thumbs:building":"node scripts/generate-building-thumbs.mjs","verify:assetlib":"node scripts/verify-assetlib.mjs","verify:lighting":"node scripts/verify-lighting.mjs","baseline:capture":"node scripts/baseline-capture.mjs","baseline:compare":"node scripts/compare-baselines.mjs","verify:ambientfx":"node scripts/verify-ambientfx.mjs","verify:game-feel":"node scripts/verify-game-feel.mjs","verify:landscape":"node scripts/verify-landscape.mjs","verify:launch-dx":"node scripts/verify-launch-dx.mjs","verify:live-labs":"node scripts/verify-live-labs.mjs","verify:water-lab":"node scripts/verify-water-lab-contract.mjs && node scripts/verify-water-experiments.mjs","assets:characters":"node scripts/generate-local-character-assets.mjs","verify:generation":"node scripts/verify-generation.mjs","verify:lab-styles":"node scripts/verify-lab-style-boundaries.mjs","verify:soundscape":"node scripts/verify-soundscape.mjs","verify:tree-woody":"node scripts/verify-tree-woody-engine.mjs","verify:villagegen":"node scripts/verify-villagegen.mjs","verify:branch-tree":"node scripts/verify-branch-tree.mjs","verify:buildinggen":"node scripts/verify-buildinggen.mjs","verify:lab-preview":"node scripts/verify-lab-preview.mjs","verify:public-labs":"node scripts/verify-public-lab-authoring.mjs && node scripts/verify-lab-audit-regressions.mjs && node scripts/verify-lab-editing-regressions.mjs","verify:rock-shader":"node scripts/verify-rock-shader.mjs","verify:tree-doodle":"node scripts/verify-tree-doodle.mjs","assets:environments":"node scripts/generate-local-environment-assets.mjs","audit:tree-baseline":"node scripts/analyze-woody-baseline-relationships.mjs","verify:cloud-shader":"node scripts/verify-cloud-shader.mjs","verify:ground-field":"node scripts/verify-ground-field.mjs","verify:lighting-lab":"node scripts/verify-lighting-lab.mjs","verify:localization":"node scripts/verify-localization.mjs","verify:rock-regions":"node scripts/verify-rock-regions.mjs","verify:system-style":"node scripts/verify-system-style-policy.mjs","verify:tree-species":"node scripts/verify-tree-species.mjs","verify:golden-matrix":"node scripts/verify-golden-fixture-matrix.mjs","verify:grass-package":"node scripts/verify-packaged-grass.mjs","verify:ground-shader":"node scripts/verify-ground-shader.mjs","verify:launch-packed":"node scripts/verify-launch-packed-consumers.mjs","verify:scene-quality":"node scripts/verify-scene-quality-profiles.mjs && node scripts/verify-packaged-scene-quality-profiles.mjs","verify:scene-surface":"node scripts/verify-scene-surface-runtime.mjs","verify:sky-cloud-lab":"node scripts/verify-sky-cloud-lab.mjs","verify:world-quality":"node scripts/verify-world-quality.mjs","catalog:seed:generate":"node scripts/generate-catalog-seed.mjs","verify:golden-harness":"node scripts/verify-golden-harness.mjs","verify:local-database":"node scripts/verify-local-database.mjs","verify:style-contract":"node scripts/verify-style-contract.mjs","verify:volumetric-sky":"node scripts/verify-volumetric-sky.mjs","prepare:level-d-review":"node scripts/prepare-level-d-review.mjs","verify:library-preview":"node scripts/verify-library-preview-coverage.mjs","verify:rock-c7-library":"node scripts/verify-rock-c7-surface-library.mjs","verify:scene-collision":"node scripts/verify-scene-collision-runtime.mjs","verify:scene-scheduler":"node scripts/verify-scene-update-scheduler.mjs && node scripts/verify-packaged-scene-update-scheduler.mjs","verify:vegetation-labs":"node scripts/verify-vegetation-lab-readiness.mjs && node scripts/verify-vegetation-preview-runtime.mjs","verify:gallery-database":"node scripts/verify-official-gallery-database.mjs","verify:local-generation":"node scripts/verify-local-generation.mjs && node scripts/verify-fal-patina.mjs","verify:locomotion-state":"node scripts/verify-locomotion-state-machine.mjs","verify:official-catalog":"node scripts/verify-official-catalog-provider.mjs && node scripts/verify-official-catalog-rock-package.mjs && node scripts/verify-official-catalog-runtime.mjs && node scripts/verify-official-catalog-lod.mjs && node scripts/verify-official-catalog-placement.mjs && node scripts/verify-playground-official-catalog.mjs && node scripts/verify-packaged-official-catalog.mjs","verify:scene-depth-pass":"node scripts/verify-scene-depth-color-pass.mjs","assets:plateau-landmarks":"node scripts/extract-plateau-landmarks.mjs","verify:character-package":"node scripts/verify-packaged-character.mjs","verify:collision-package":"node scripts/verify-packaged-world-collision.mjs","verify:environment-cycle":"node scripts/verify-environment-cycle.mjs","verify:ground-stabilizer":"node scripts/verify-ground-stabilizer.mjs","verify:product-namespace":"node scripts/verify-product-namespace.mjs","verify:vegetation-shader":"node scripts/verify-vegetation-shader.mjs","verify:water-experiments":"node scripts/verify-water-experiments.mjs","verify:water-interaction":"node scripts/verify-water-interaction-controller.mjs","verify:creation-revisions":"node scripts/verify-creation-revisions.mjs","verify:lab-editor-headers":"node scripts/verify-lab-editor-headers.mjs","verify:rock-lab-lifecycle":"node scripts/verify-rock-lab-lifecycle.mjs","verify:walkable-character":"node scripts/verify-walkable-character-runtime.mjs && node scripts/verify-packaged-walkable-character.mjs","verify:playground-walkable":"node scripts/verify-playground-walkable-runtime.mjs","verify:quality-integration":"node scripts/verify-quality-budget-integration.mjs && node scripts/verify-packaged-quality-budget-integration.mjs","verify:rock-generation-lab":"node scripts/verify-rock-tool-behavior.mjs","verify:lab-asset-provenance":"node scripts/verify-lab-asset-provenance.mjs","verify:rock-dense-field-lod":"node scripts/verify-rock-dense-field-lod.mjs && node scripts/verify-official-catalog-lod.mjs","verify:rock-region-compiler":"node scripts/verify-rock-region-compiler.mjs","verify:rock-regions-package":"node scripts/verify-packaged-rock-regions.mjs","verify:style-labels-package":"node scripts/verify-packaged-style-labels.mjs","verify:material-labeling:mcp":"node quality/mcp-material-labeling/verify-mcp-material-labeling.mjs","verify:natural-rock-surfaces":"node scripts/verify-natural-rock-surfaces.mjs && node scripts/verify-natural-rock-replay.mjs","verify:manufactured-materials":"node scripts/verify-manufactured-materials.mjs","verify:renderer-configuration":"node scripts/verify-renderer-configuration.mjs && node scripts/verify-packaged-renderer-configuration.mjs","verify:rock-region-migrations":"node scripts/verify-rock-region-schema-migrations.mjs","verify:tree-baseline-coverage":"node scripts/verify-woody-baseline-coverage.mjs","verify:material-labeling:agent":"node quality/agent-material-labeling/multi-part-manufactured-prop.mjs","verify:rock-semantic-materials":"node scripts/verify-rock-semantic-materials.mjs","verify:shared-shadow-receivers":"node scripts/verify-shared-shadow-receivers.mjs","verify:tree-species-references":"node scripts/verify-tree-species-references.mjs","verify:rock-geology-v2-ontology":"node scripts/verify-rock-geology-v2-ontology.mjs","verify:atmospheric-condition-lab":"node scripts/verify-atmospheric-condition-lab.mjs","verify:rock-geology-v2-morphology":"node scripts/verify-rock-geology-v2-morphology.mjs","verify:rock-regions-clean-consumer":"node scripts/verify-rock-region-clean-consumer.mjs","verify:rock-geology-v2-inspirations":"node scripts/verify-rock-geology-v2-inspirations.mjs","verify:rock-geology-v2-canonical-pilot":"node scripts/verify-rock-geology-v2-canonical-pilot.mjs","capture:rock-geology-v2-canonical-pilot":"node scripts/capture-rock-geology-v2-canonical-pilot.mjs"},"_npmUser":{"name":"jack_hyperbond","email":"jack@hyperbond.studio"},"_resolved":"/Users/juminoz/CascadeProjects/toonlab-main/artifacts/release-0.4.23/call-me-sensei-toonlab-0.4.23.tgz","_integrity":"sha512-+Vn0xedrmxyLkm879dWPHdAJmPxGRmdmfpV5SuRHZHEpmpJJ/w0RgDCyRg3ZVZFmv7OsO6igI6NNDZC6Deo2yA==","repository":{"url":"git+https://github.com/call-me-sensei/toonlab.git","type":"git"},"_npmVersion":"11.10.1","description":"Anime-style game toolkit for Three.js with cel shading, vegetation, rocks, water, sky, clouds, procedural textures, and portable Lab artifacts","directories":{},"_nodeVersion":"25.7.0","dependencies":{"pg":"^8.22.0","3d-tiles-renderer":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","react":"^19.2.7","three":"^0.185.1","ecctrl":"^1.0.97","marked":"^18.0.6","draco3d":"^1.5.7","react-dom":"^19.2.7","playwright":"^1.60.0","typescript":"^5.9.3","manifold-3d":"3.5.1","lucide-react":"^1.23.0","three-stdlib":"^2.36.1","meshoptimizer":"1.1.1","three-bvh-csg":"0.0.18","three-mesh-bvh":"0.9.14","@pixiv/three-vrm":"^3.5.4","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@react-three/rapier":"^2.2.0","@vitejs/plugin-react":"^4.7.0","@dimforge/rapier3d-compat":"^0.19.2"},"peerDependencies":{"react":"^19.0.0","three":"^0.185.1","three-stdlib":"^2.36.1","three-mesh-bvh":"0.9.14","@pixiv/three-vrm":"^3.5.4","@react-three/fiber":"^9.0.0","@dimforge/rapier3d-compat":"^0.19.0"},"peerDependenciesMeta":{"react":{"optional":true},"three-stdlib":{"optional":true},"three-mesh-bvh":{"optional":true},"@pixiv/three-vrm":{"optional":true},"@react-three/fiber":{"optional":true},"@dimforge/rapier3d-compat":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toonlab_0.4.23_1788794860656_0.2196420129597303","host":"s3://npm-registry-packages-npm-production"}},"0.4.24":{"name":"@call-me-sensei/toonlab","version":"0.4.24","keywords":["three","threejs","toon","cel-shading","anime","anime-game","anime-environment","cel-shader","shader","lighting","water","procedural-textures","game-starter"],"author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"license":"MIT","_id":"@call-me-sensei/toonlab@0.4.24","maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"homepage":"https://toonlab.io/docs","bugs":{"url":"https://github.com/call-me-sensei-app/toonlab/issues"},"bin":{"toonlab":"cli/toonlab.mjs","toonlab-mcp":"mcp/server.mjs"},"dist":{"shasum":"8d6f29cffef94995b798c2e0a585e73ea6407b30","tarball":"https://registry.npmjs.org/@call-me-sensei/toonlab/-/toonlab-0.4.24.tgz","fileCount":772,"integrity":"sha512-jJk/WNEOmwrcRXzcZkdnC/F4x6x/pEW/p+6QgIPlJBgeOS121JmXHxnSsAKhC14m+SG8QoSgkJONlK0lwYIZMA==","signatures":[{"sig":"MEQCIEWpwhuPX0/PO8QyqNft8SDlNDOFNV1STj5LRJGAaaJyAiACi7vnulyGrvCLaRZFj4Ef1xrO5429d4Z8PA8fX1V+pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38363708},"main":"./src/index.js","type":"module","_from":"file:/private/tmp/toonlab-publish-0.4.24/call-me-sensei-toonlab-0.4.24.tgz","types":"./types/index.d.ts","module":"./src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./sky":{"types":"./types/sky/index.d.ts","default":"./src/sky/index.js"},"./post":{"types":"./types/post/index.d.ts","default":"./src/post/index.js"},"./toon":{"types":"./types/toon/index.d.ts","default":"./src/toon/index.js"},"./cloud":{"types":"./types/cloud/index.d.ts","default":"./src/cloud/index.js"},"./grass":{"types":"./types/vegetation/grass.d.ts","default":"./src/vegetation/grass.js"},"./react":{"types":"./types/react/index.d.ts","default":"./src/react/index.js"},"./water":{"types":"./types/water/index.d.ts","default":"./src/water/index.js"},"./styles":{"types":"./types/styles/index.d.ts","default":"./src/styles/index.js"},"./texgen":{"types":"./types/texgen/index.d.ts","default":"./src/texgen/index.js"},"./loaders":{"types":"./types/loaders/index.d.ts","default":"./src/loaders/index.js"},"./rockgen":{"types":"./types/rockgen/index.d.ts","default":"./src/rockgen/index.js"},"./runtime":{"types":"./types/runtime/index.d.ts","default":"./src/runtime/index.js"},"./agents/*":"./agents/*","./assetlib":{"types":"./types/assetlib/index.d.ts","default":"./src/assetlib/index.js"},"./lighting":{"types":"./types/lighting/index.d.ts","default":"./src/lighting/index.js"},"./renderer":{"types":"./types/renderer/index.d.ts","default":"./src/renderer/index.js"},"./character":{"types":"./types/character/index.d.ts","default":"./src/character/index.js"},"./vegetation":{"types":"./types/vegetation/index.d.ts","default":"./src/vegetation/index.js"},"./environment":{"types":"./types/environment/index.d.ts","default":"./src/environment/index.js"},"./rock-shader":{"types":"./types/rock-shader/index.d.ts","default":"./src/rock-shader/index.js"},"./asset-policy":{"types":"./types/asset-policy/index.d.ts","default":"./src/asset-policy/index.js"},"./ground-shader":{"types":"./types/ground-shader/index.d.ts","default":"./src/ground-shader/index.js"},"./toon-settings":{"types":"./types/toon/toonSettings.d.ts","default":"./src/toon/toonSettings.js"},"./grass-palettes":{"types":"./types/vegetation/grassPalettes.d.ts","default":"./src/vegetation/grassPalettes.js"},"./water-settings":{"types":"./types/water/waterSettings.d.ts","default":"./src/water/waterSettings.js"},"./post-processing":{"types":"./types/post/postProcessing.d.ts","default":"./src/post/postProcessing.js"},"./world-collision":{"types":"./types/worldCollision.d.ts","default":"./src/worldCollision.js"},"./official-catalog":{"types":"./types/catalog/officialCatalog.d.ts","default":"./src/catalog/officialCatalog.js"},"./scene-operations":{"types":"./types/agents/index.d.ts","default":"./src/agents/index.js"},"./vegetation-shaders":{"types":"./types/vegetation/vegetationShaders.d.ts","default":"./src/vegetation/vegetationShaders.js"}},"imports":{"#toonlab-mannequin-asset-url":{"browser":"./src/character/mannequinAssetUrl.browser.js","default":"./src/character/mannequinAssetUrl.node.js"}},"scripts":{"dev":"vite","mcp":"node mcp/server.mjs","build":"vite build","setup":"node scripts/setup-local.mjs","update":"node scripts/setup-local.mjs --update","db:seed":"node database/apply-sql.mjs seed","preview":"vite preview","sky:smoke":"SKY_CAPTURE_LAB=sky-smoke node scripts/capture-sky-presets.mjs","db:migrate":"node database/apply-sql.mjs migrate","verify:all":"npm run verify:repository && npm run verify:system-style && npm run verify:generation && npm run verify:post && npm run verify:camera && npm run verify:motion && npm run verify:biome && npm run verify:soundscape && npm run verify:game-feel && npm run verify:world-quality && npm run verify:rock-shader && npm run verify:ground-shader && npm run verify:rockgen && npm run verify:rock-generation-lab && npm run verify:pathgen && npm run verify:propgen && npm run verify:buildinggen && npm run verify:villagegen && npm run verify:fauna && npm run verify:ambientfx && npm run verify:vfxgen && npm run verify:water && npm run verify:landscape && npm run verify:lighting && npm run verify:lighting-lab && npm run verify:live-labs && npm run verify:lab-preview && npm run verify:weather && npm run verify:climate && npm run verify:atmospheric-condition-lab && npm run verify:sky && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:environment-cycle && npm run verify:manufactured-materials && npm run verify:ground-field && npm run verify:grass && npm run verify:grass-package && npm run verify:character-package && npm run verify:vegetation-shader && npm run verify:lab-styles && npm run verify:scatter && npm run verify:branch-tree && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:api && npm run verify:package && npm run verify:catalog && npm run verify:assetlib && npm run verify:mcp && npm run verify:local-generation","verify:api":"node scripts/verify-public-api.mjs","verify:mcp":"node scripts/sync-mcp-tree-contract.mjs --check && node scripts/verify-mcp.mjs && node scripts/verify-packaged-mcp.mjs","verify:sky":"node scripts/verify-sky.mjs","sky:capture":"node scripts/capture-sky-presets.mjs","thumbs:home":"node scripts/generate-home-shots.mjs","thumbs:prop":"node scripts/generate-prop-thumbs.mjs","types:build":"node scripts/build-types.mjs","verify:docs":"node scripts/verify-package-documentation.mjs && node scripts/generate-settings-reference.mjs --check && node scripts/verify-documentation-examples.mjs","verify:post":"node scripts/verify-post.mjs","assets:local":"npm run assets:characters && npm run assets:environments","verify:biome":"node scripts/verify-biome.mjs","verify:fauna":"node scripts/verify-fauna.mjs","verify:grass":"node scripts/verify-grass-palettes.mjs","verify:types":"npm run types:build && node scripts/verify-packaged-types.mjs","verify:water":"node scripts/verify-watergen.mjs && node scripts/verify-water-physics.mjs && node scripts/verify-water-dynamics.mjs && node scripts/verify-water-beach-swash.mjs","visual:check":"node scripts/visual-check.mjs","verify:camera":"node scripts/verify-camera.mjs","verify:motion":"node scripts/verify-motion.mjs","verify:skills":"node scripts/verify-agent-skills.mjs","verify:texgen":"node scripts/verify-texgen.mjs","verify:vfxgen":"node scripts/verify-vfxgen.mjs","assets:starmap":"node scripts/generate-procedural-starmap.mjs","golden:capture":"node scripts/capture-golden-fixtures.mjs","golden:compare":"node scripts/compare-golden-captures.mjs","prepublishOnly":"npm run verify:release","thumbs:catalog":"node scripts/generate-catalog-thumbs.mjs","verify:catalog":"node scripts/verify-catalog.mjs","verify:climate":"node scripts/verify-climate.mjs","verify:package":"node scripts/verify-package-boundary.mjs","verify:pathgen":"node scripts/verify-pathgen.mjs","verify:propgen":"node scripts/verify-propgen.mjs","verify:release":"npm run verify:repository && npm run verify:system-style && npm run verify:style-contract && npm run verify:style-labels-package && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:public-labs && npm run verify:live-labs && npm run verify:natural-rock-surfaces && npm run verify:rock-shader && npm run verify:rock-generation-lab && npm run verify:rock-lab-lifecycle && npm run verify:ground-shader && npm run verify:manufactured-materials && npm run verify:material-labeling:agent && npm run verify:material-labeling:mcp && npm run verify:water-lab && npm run verify:water && npm run verify:vegetation-labs && npm run verify:texgen && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:world-quality && npm run verify:scatter && npm run verify:branch-tree && npm run verify:grass-package && npm run verify:character-package && npm run verify:locomotion-state && npm run verify:ground-stabilizer && npm run verify:water-interaction && npm run verify:walkable-character && npm run verify:playground-walkable && npm run verify:renderer-configuration && npm run verify:scene-scheduler && npm run verify:scene-surface && npm run verify:shared-shadow-receivers && npm run verify:scene-quality && npm run verify:quality-integration && npm run verify:lab-asset-provenance && npm run verify:api && npm run verify:types && npm run verify:mcp && npm run verify:skills && npm run verify:docs && npm run verify:local-database && npm run verify:package","verify:rockgen":"node scripts/verify-rockgen.mjs","verify:scatter":"node scripts/verify-scatter.mjs","verify:weather":"node scripts/verify-weather.mjs","thumbs:building":"node scripts/generate-building-thumbs.mjs","verify:assetlib":"node scripts/verify-assetlib.mjs","verify:lighting":"node scripts/verify-lighting.mjs","baseline:capture":"node scripts/baseline-capture.mjs","baseline:compare":"node scripts/compare-baselines.mjs","verify:ambientfx":"node scripts/verify-ambientfx.mjs","verify:game-feel":"node scripts/verify-game-feel.mjs","verify:landscape":"node scripts/verify-landscape.mjs","verify:launch-dx":"node scripts/verify-launch-dx.mjs","verify:live-labs":"node scripts/verify-live-labs.mjs","verify:water-lab":"node scripts/verify-water-lab-contract.mjs && node scripts/verify-water-experiments.mjs","assets:characters":"node scripts/generate-local-character-assets.mjs","verify:generation":"node scripts/verify-generation.mjs","verify:lab-styles":"node scripts/verify-lab-style-boundaries.mjs","verify:repository":"node scripts/verify-repository.mjs","verify:soundscape":"node scripts/verify-soundscape.mjs","verify:tree-woody":"node scripts/verify-tree-woody-engine.mjs","verify:villagegen":"node scripts/verify-villagegen.mjs","verify:branch-tree":"node scripts/verify-branch-tree.mjs","verify:buildinggen":"node scripts/verify-buildinggen.mjs","verify:lab-preview":"node scripts/verify-lab-preview.mjs","verify:public-labs":"node scripts/verify-public-lab-authoring.mjs && node scripts/verify-lab-audit-regressions.mjs && node scripts/verify-lab-editing-regressions.mjs","verify:rock-shader":"node scripts/verify-rock-shader.mjs","verify:tree-doodle":"node scripts/verify-tree-doodle.mjs","assets:environments":"node scripts/generate-local-environment-assets.mjs","audit:tree-baseline":"node scripts/analyze-woody-baseline-relationships.mjs","verify:cloud-shader":"node scripts/verify-cloud-shader.mjs","verify:ground-field":"node scripts/verify-ground-field.mjs","verify:lighting-lab":"node scripts/verify-lighting-lab.mjs","verify:localization":"node scripts/verify-localization.mjs","verify:rock-regions":"node scripts/verify-rock-regions.mjs","verify:system-style":"node scripts/verify-system-style-policy.mjs","verify:tree-species":"node scripts/verify-tree-species.mjs","verify:golden-matrix":"node scripts/verify-golden-fixture-matrix.mjs","verify:grass-package":"node scripts/verify-packaged-grass.mjs","verify:ground-shader":"node scripts/verify-ground-shader.mjs","verify:launch-packed":"node scripts/verify-launch-packed-consumers.mjs","verify:scene-quality":"node scripts/verify-scene-quality-profiles.mjs && node scripts/verify-packaged-scene-quality-profiles.mjs","verify:scene-surface":"node scripts/verify-scene-surface-runtime.mjs","verify:sky-cloud-lab":"node scripts/verify-sky-cloud-lab.mjs","verify:world-quality":"node scripts/verify-world-quality.mjs","catalog:seed:generate":"node scripts/generate-catalog-seed.mjs","verify:golden-harness":"node scripts/verify-golden-harness.mjs","verify:local-database":"node scripts/verify-local-database.mjs && node scripts/verify-catalog-seed-reuse.mjs","verify:style-contract":"node scripts/verify-style-contract.mjs","verify:volumetric-sky":"node scripts/verify-volumetric-sky.mjs","prepare:level-d-review":"node scripts/prepare-level-d-review.mjs","verify:library-preview":"node scripts/verify-library-preview-coverage.mjs","verify:rock-c7-library":"node scripts/verify-rock-c7-surface-library.mjs","verify:scene-collision":"node scripts/verify-scene-collision-runtime.mjs","verify:scene-scheduler":"node scripts/verify-scene-update-scheduler.mjs && node scripts/verify-packaged-scene-update-scheduler.mjs","verify:vegetation-labs":"node scripts/verify-vegetation-lab-readiness.mjs && node scripts/verify-vegetation-preview-runtime.mjs","verify:gallery-database":"node scripts/verify-official-gallery-database.mjs","verify:local-generation":"node scripts/verify-local-generation.mjs && node scripts/verify-fal-patina.mjs","verify:locomotion-state":"node scripts/verify-locomotion-state-machine.mjs","verify:official-catalog":"node scripts/verify-official-catalog-provider.mjs && node scripts/verify-official-catalog-rock-package.mjs && node scripts/verify-official-catalog-runtime.mjs && node scripts/verify-official-catalog-lod.mjs && node scripts/verify-official-catalog-placement.mjs && node scripts/verify-playground-official-catalog.mjs && node scripts/verify-packaged-official-catalog.mjs","verify:scene-depth-pass":"node scripts/verify-scene-depth-color-pass.mjs","assets:plateau-landmarks":"node scripts/extract-plateau-landmarks.mjs","verify:character-package":"node scripts/verify-packaged-character.mjs","verify:collision-package":"node scripts/verify-packaged-world-collision.mjs","verify:environment-cycle":"node scripts/verify-environment-cycle.mjs","verify:ground-stabilizer":"node scripts/verify-ground-stabilizer.mjs","verify:vegetation-shader":"node scripts/verify-vegetation-shader.mjs","verify:water-experiments":"node scripts/verify-water-experiments.mjs","verify:water-interaction":"node scripts/verify-water-interaction-controller.mjs","verify:creation-revisions":"node scripts/verify-creation-revisions.mjs","verify:lab-editor-headers":"node scripts/verify-lab-editor-headers.mjs","verify:rock-lab-lifecycle":"node scripts/verify-rock-lab-lifecycle.mjs","verify:walkable-character":"node scripts/verify-walkable-character-runtime.mjs && node scripts/verify-packaged-walkable-character.mjs","verify:playground-walkable":"node scripts/verify-playground-walkable-runtime.mjs","verify:quality-integration":"node scripts/verify-quality-budget-integration.mjs && node scripts/verify-packaged-quality-budget-integration.mjs","verify:rock-generation-lab":"node scripts/verify-rock-tool-behavior.mjs","verify:lab-asset-provenance":"node scripts/verify-lab-asset-provenance.mjs","verify:rock-dense-field-lod":"node scripts/verify-rock-dense-field-lod.mjs && node scripts/verify-official-catalog-lod.mjs","verify:rock-region-compiler":"node scripts/verify-rock-region-compiler.mjs","verify:rock-regions-package":"node scripts/verify-packaged-rock-regions.mjs","verify:style-labels-package":"node scripts/verify-packaged-style-labels.mjs","verify:material-labeling:mcp":"node quality/mcp-material-labeling/verify-mcp-material-labeling.mjs","verify:natural-rock-surfaces":"node scripts/verify-natural-rock-surfaces.mjs && node scripts/verify-natural-rock-replay.mjs","verify:manufactured-materials":"node scripts/verify-manufactured-materials.mjs","verify:renderer-configuration":"node scripts/verify-renderer-configuration.mjs && node scripts/verify-packaged-renderer-configuration.mjs","verify:rock-region-migrations":"node scripts/verify-rock-region-schema-migrations.mjs","verify:tree-baseline-coverage":"node scripts/verify-woody-baseline-coverage.mjs","verify:material-labeling:agent":"node quality/agent-material-labeling/multi-part-manufactured-prop.mjs","verify:rock-semantic-materials":"node scripts/verify-rock-semantic-materials.mjs","verify:shared-shadow-receivers":"node scripts/verify-shared-shadow-receivers.mjs","verify:tree-species-references":"node scripts/verify-tree-species-references.mjs","verify:rock-geology-v2-ontology":"node scripts/verify-rock-geology-v2-ontology.mjs","verify:atmospheric-condition-lab":"node scripts/verify-atmospheric-condition-lab.mjs","verify:rock-geology-v2-morphology":"node scripts/verify-rock-geology-v2-morphology.mjs","verify:rock-regions-clean-consumer":"node scripts/verify-rock-region-clean-consumer.mjs","verify:rock-geology-v2-inspirations":"node scripts/verify-rock-geology-v2-inspirations.mjs","verify:rock-geology-v2-canonical-pilot":"node scripts/verify-rock-geology-v2-canonical-pilot.mjs","capture:rock-geology-v2-canonical-pilot":"node scripts/capture-rock-geology-v2-canonical-pilot.mjs"},"_npmUser":{"name":"jack_hyperbond","email":"jack@hyperbond.studio"},"_resolved":"/private/tmp/toonlab-publish-0.4.24/call-me-sensei-toonlab-0.4.24.tgz","_integrity":"sha512-jJk/WNEOmwrcRXzcZkdnC/F4x6x/pEW/p+6QgIPlJBgeOS121JmXHxnSsAKhC14m+SG8QoSgkJONlK0lwYIZMA==","repository":{"url":"git+https://github.com/call-me-sensei-app/toonlab.git","type":"git"},"_npmVersion":"11.10.1","description":"Anime-style game toolkit for Three.js with cel shading, vegetation, rocks, water, sky, clouds, procedural textures, and portable Lab artifacts","directories":{},"_nodeVersion":"25.7.0","dependencies":{"pg":"^8.22.0","3d-tiles-renderer":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","react":"^19.2.7","three":"^0.185.1","ecctrl":"^1.0.97","marked":"^18.0.6","draco3d":"^1.5.7","react-dom":"^19.2.7","playwright":"^1.60.0","typescript":"^5.9.3","manifold-3d":"3.5.1","lucide-react":"^1.23.0","three-stdlib":"^2.36.1","meshoptimizer":"1.1.1","three-bvh-csg":"0.0.18","three-mesh-bvh":"0.9.14","@pixiv/three-vrm":"^3.5.4","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@react-three/rapier":"^2.2.0","@vitejs/plugin-react":"^4.7.0","@dimforge/rapier3d-compat":"^0.19.2"},"peerDependencies":{"react":"^19.0.0","three":"^0.185.1","three-stdlib":"^2.36.1","three-mesh-bvh":"0.9.14","@pixiv/three-vrm":"^3.5.4","@react-three/fiber":"^9.0.0","@dimforge/rapier3d-compat":"^0.19.0"},"peerDependenciesMeta":{"react":{"optional":true},"three-stdlib":{"optional":true},"three-mesh-bvh":{"optional":true},"@pixiv/three-vrm":{"optional":true},"@react-three/fiber":{"optional":true},"@dimforge/rapier3d-compat":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/toonlab_0.4.24_1788877449793_0.2418499851989333","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"_id":"@call-me-sensei/toonlab@0.5.0","bin":{"toonlab":"cli/toonlab.mjs","toonlab-mcp":"mcp/server.mjs"},"bugs":{"url":"https://github.com/call-me-sensei-app/toonlab/issues"},"dist":{"shasum":"c7192eb501971090761fcc47d6f5a46b266053e6","tarball":"https://registry.npmjs.org/@call-me-sensei/toonlab/-/toonlab-0.5.0.tgz","fileCount":784,"integrity":"sha512-RUM4Mvt2/GsHLuC4+uXPEbkbw0U1Ff5CzaoLXK017hSD0p5Xk5i4B0dgnfpYmxN2NvS6epy9N31Xelux5IwVMQ==","signatures":[{"sig":"MEUCIQCRTnuRaJtaZOL2Ua0U83j9f0STVEvGeNuYkhhgekoKgAIgE5wox218LRAvaC1Z50ffuf9saDLYOfibPAIuVe6Y/dk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEQXCe1R8yFA3XoXFXi4Y6oiHvyxZXvRa3vXxzBF22H3AiEAitfI5fQhvtPmD2OxAoEr1AQAJsVbMjIWRPEGAavm7hk="}],"unpackedSize":38311808},"main":"./src/index.js","name":"@call-me-sensei/toonlab","type":"module","types":"./types/index.d.ts","author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"module":"./src/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./sky":{"types":"./types/sky/index.d.ts","default":"./src/sky/index.js"},"./post":{"types":"./types/post/index.d.ts","default":"./src/post/index.js"},"./toon":{"types":"./types/toon/index.d.ts","default":"./src/toon/index.js"},"./cloud":{"types":"./types/cloud/index.d.ts","default":"./src/cloud/index.js"},"./grass":{"types":"./types/vegetation/grass.d.ts","default":"./src/vegetation/grass.js"},"./react":{"types":"./types/react/index.d.ts","default":"./src/react/index.js"},"./water":{"types":"./types/water/index.d.ts","default":"./src/water/index.js"},"./styles":{"types":"./types/styles/index.d.ts","default":"./src/styles/index.js"},"./texgen":{"types":"./types/texgen/index.d.ts","default":"./src/texgen/index.js"},"./loaders":{"types":"./types/loaders/index.d.ts","default":"./src/loaders/index.js"},"./rockgen":{"types":"./types/rockgen/index.d.ts","default":"./src/rockgen/index.js"},"./runtime":{"types":"./types/runtime/index.d.ts","default":"./src/runtime/index.js"},"./agents/*":"./agents/*","./assetlib":{"types":"./types/assetlib/index.d.ts","default":"./src/assetlib/index.js"},"./lighting":{"types":"./types/lighting/index.d.ts","default":"./src/lighting/index.js"},"./renderer":{"types":"./types/renderer/index.d.ts","default":"./src/renderer/index.js"},"./character":{"types":"./types/character/index.d.ts","default":"./src/character/index.js"},"./vegetation":{"types":"./types/vegetation/index.d.ts","default":"./src/vegetation/index.js"},"./environment":{"types":"./types/environment/index.d.ts","default":"./src/environment/index.js"},"./rock-shader":{"types":"./types/rock-shader/index.d.ts","default":"./src/rock-shader/index.js"},"./asset-policy":{"types":"./types/asset-policy/index.d.ts","default":"./src/asset-policy/index.js"},"./ground-shader":{"types":"./types/ground-shader/index.d.ts","default":"./src/ground-shader/index.js"},"./toon-settings":{"types":"./types/toon/toonSettings.d.ts","default":"./src/toon/toonSettings.js"},"./grass-palettes":{"types":"./types/vegetation/grassPalettes.d.ts","default":"./src/vegetation/grassPalettes.js"},"./water-settings":{"types":"./types/water/waterSettings.d.ts","default":"./src/water/waterSettings.js"},"./post-processing":{"types":"./types/post/postProcessing.d.ts","default":"./src/post/postProcessing.js"},"./world-collision":{"types":"./types/worldCollision.d.ts","default":"./src/worldCollision.js"},"./official-catalog":{"types":"./types/catalog/officialCatalog.d.ts","default":"./src/catalog/officialCatalog.js"},"./scene-operations":{"types":"./types/agents/index.d.ts","default":"./src/agents/index.js"},"./vegetation-shaders":{"types":"./types/vegetation/vegetationShaders.d.ts","default":"./src/vegetation/vegetationShaders.js"}},"imports":{"#toonlab-mannequin-asset-url":{"browser":"./src/character/mannequinAssetUrl.browser.js","default":"./src/character/mannequinAssetUrl.node.js"}},"license":"MIT","scripts":{"dev":"vite","mcp":"node mcp/server.mjs","build":"vite build","setup":"node scripts/setup-local.mjs","update":"node scripts/setup-local.mjs --update","db:seed":"node database/apply-sql.mjs seed","preview":"vite preview","sky:smoke":"SKY_CAPTURE_LAB=sky-smoke node scripts/capture-sky-presets.mjs","db:migrate":"node database/apply-sql.mjs migrate","verify:all":"npm run verify:repository && npm run verify:system-style && npm run verify:generation && npm run verify:post && npm run verify:camera && npm run verify:motion && npm run verify:biome && npm run verify:soundscape && npm run verify:game-feel && npm run verify:world-quality && npm run verify:rock-shader && npm run verify:ground-shader && npm run verify:rockgen && npm run verify:rock-generation-lab && npm run verify:pathgen && npm run verify:propgen && npm run verify:buildinggen && npm run verify:villagegen && npm run verify:fauna && npm run verify:ambientfx && npm run verify:vfxgen && npm run verify:water && npm run verify:landscape && npm run verify:lighting && npm run verify:lighting-lab && npm run verify:live-labs && npm run verify:lab-preview && npm run verify:weather && npm run verify:climate && npm run verify:atmospheric-condition-lab && npm run verify:sky && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:environment-cycle && npm run verify:manufactured-materials && npm run verify:ground-field && npm run verify:grass && npm run verify:grass-package && npm run verify:character-package && npm run verify:vegetation-shader && npm run verify:lab-styles && npm run verify:scatter && npm run verify:branch-tree && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:api && npm run verify:package && npm run verify:catalog && npm run verify:assetlib && npm run verify:mcp && npm run verify:local-generation","verify:api":"node scripts/verify-public-api.mjs","verify:mcp":"node scripts/sync-mcp-tree-contract.mjs --check && node scripts/verify-mcp.mjs && node scripts/verify-packaged-mcp.mjs","verify:sky":"node scripts/verify-sky.mjs","sky:capture":"node scripts/capture-sky-presets.mjs","thumbs:home":"node scripts/generate-home-shots.mjs","thumbs:prop":"node scripts/generate-prop-thumbs.mjs","types:build":"node scripts/build-types.mjs","verify:docs":"node scripts/verify-package-documentation.mjs && node scripts/generate-settings-reference.mjs --check && node scripts/verify-documentation-examples.mjs","verify:post":"node scripts/verify-post.mjs","assets:local":"npm run assets:characters && npm run assets:environments","verify:biome":"node scripts/verify-biome.mjs","verify:fauna":"node scripts/verify-fauna.mjs","verify:grass":"node scripts/verify-grass-palettes.mjs","verify:types":"npm run types:build && node scripts/verify-packaged-types.mjs","verify:water":"node scripts/verify-watergen.mjs && node scripts/verify-water-physics.mjs && node scripts/verify-water-dynamics.mjs && node scripts/verify-water-beach-swash.mjs","visual:check":"node scripts/visual-check.mjs","verify:camera":"node scripts/verify-camera.mjs","verify:motion":"node scripts/verify-motion.mjs","verify:skills":"node scripts/verify-agent-skills.mjs","verify:texgen":"node scripts/verify-texgen.mjs","verify:vfxgen":"node scripts/verify-vfxgen.mjs","assets:starmap":"node scripts/generate-procedural-starmap.mjs","golden:capture":"node scripts/capture-golden-fixtures.mjs","golden:compare":"node scripts/compare-golden-captures.mjs","prepublishOnly":"npm run verify:release","thumbs:catalog":"node scripts/generate-catalog-thumbs.mjs","verify:catalog":"node scripts/verify-catalog.mjs","verify:climate":"node scripts/verify-climate.mjs","verify:package":"node scripts/verify-package-boundary.mjs","verify:pathgen":"node scripts/verify-pathgen.mjs","verify:propgen":"node scripts/verify-propgen.mjs","verify:release":"npm run verify:repository && npm run verify:system-style && npm run verify:style-contract && npm run verify:style-labels-package && npm run verify:collision-package && npm run verify:scene-collision && npm run verify:official-catalog && npm run verify:public-labs && npm run verify:live-labs && npm run verify:natural-rock-surfaces && npm run verify:rock-shader && npm run verify:rock-generation-lab && npm run verify:rock-lab-lifecycle && npm run verify:ground-shader && npm run verify:manufactured-materials && npm run verify:material-labeling:agent && npm run verify:material-labeling:mcp && npm run verify:water-lab && npm run verify:water && npm run verify:vegetation-labs && npm run verify:texgen && npm run verify:cloud-shader && npm run verify:sky-cloud-lab && npm run verify:world-quality && npm run verify:scatter && npm run verify:branch-tree && npm run verify:grass-package && npm run verify:character-package && npm run verify:toon-shading && npm run verify:locomotion-state && npm run verify:ground-stabilizer && npm run verify:water-interaction && npm run verify:walkable-character && npm run verify:playground-walkable && npm run verify:renderer-configuration && npm run verify:scene-scheduler && npm run verify:scene-surface && npm run verify:shared-shadow-receivers && npm run verify:scene-quality && npm run verify:quality-integration && npm run verify:lab-asset-provenance && npm run verify:api && npm run verify:types && npm run verify:mcp && npm run verify:skills && npm run verify:docs && npm run verify:local-database && npm run verify:package","verify:rockgen":"node scripts/verify-rockgen.mjs","verify:scatter":"node scripts/verify-scatter.mjs","verify:weather":"node scripts/verify-weather.mjs","thumbs:building":"node scripts/generate-building-thumbs.mjs","verify:assetlib":"node scripts/verify-assetlib.mjs","verify:lighting":"node scripts/verify-lighting.mjs","baseline:capture":"node scripts/baseline-capture.mjs","baseline:compare":"node scripts/compare-baselines.mjs","verify:ambientfx":"node scripts/verify-ambientfx.mjs","verify:game-feel":"node scripts/verify-game-feel.mjs","verify:landscape":"node scripts/verify-landscape.mjs","verify:launch-dx":"node scripts/verify-launch-dx.mjs","verify:live-labs":"node scripts/verify-live-labs.mjs","verify:water-lab":"node scripts/verify-water-lab-contract.mjs && node scripts/verify-water-experiments.mjs","assets:characters":"node scripts/generate-local-character-assets.mjs","verify:generation":"node scripts/verify-generation.mjs","verify:lab-styles":"node scripts/verify-lab-style-boundaries.mjs","verify:provenance":"node scripts/verify-provenance.mjs","verify:repository":"node scripts/verify-repository.mjs","verify:soundscape":"node scripts/verify-soundscape.mjs","verify:tree-woody":"node scripts/verify-tree-woody-engine.mjs","verify:villagegen":"node scripts/verify-villagegen.mjs","verify:branch-tree":"node scripts/verify-branch-tree.mjs","verify:buildinggen":"node scripts/verify-buildinggen.mjs","verify:lab-preview":"node scripts/verify-lab-preview.mjs","verify:public-labs":"node scripts/verify-public-lab-authoring.mjs && node scripts/verify-lab-audit-regressions.mjs && node scripts/verify-lab-editing-regressions.mjs","verify:rock-shader":"node scripts/verify-rock-shader.mjs","verify:tree-doodle":"node scripts/verify-tree-doodle.mjs","assets:environments":"node scripts/generate-local-environment-assets.mjs","audit:tree-baseline":"node scripts/analyze-woody-baseline-relationships.mjs","verify:cloud-shader":"node scripts/verify-cloud-shader.mjs","verify:ground-field":"node scripts/verify-ground-field.mjs","verify:lighting-lab":"node scripts/verify-lighting-lab.mjs","verify:localization":"node scripts/verify-localization.mjs","verify:rock-regions":"node scripts/verify-rock-regions.mjs","verify:system-style":"node scripts/verify-system-style-policy.mjs","verify:toon-shading":"node scripts/verify-toon-character-shading.mjs","verify:tree-species":"node scripts/verify-tree-species.mjs","verify:golden-matrix":"node scripts/verify-golden-fixture-matrix.mjs","verify:grass-package":"node scripts/verify-packaged-grass.mjs","verify:ground-shader":"node scripts/verify-ground-shader.mjs","verify:launch-packed":"node scripts/verify-launch-packed-consumers.mjs","verify:scene-quality":"node scripts/verify-scene-quality-profiles.mjs && node scripts/verify-packaged-scene-quality-profiles.mjs","verify:scene-surface":"node scripts/verify-scene-surface-runtime.mjs","verify:sky-cloud-lab":"node scripts/verify-sky-cloud-lab.mjs","verify:world-quality":"node scripts/verify-world-quality.mjs","catalog:seed:generate":"node scripts/generate-catalog-seed.mjs","verify:golden-harness":"node scripts/verify-golden-harness.mjs","verify:local-database":"node scripts/verify-local-database.mjs && node scripts/verify-catalog-seed-reuse.mjs","verify:style-contract":"node scripts/verify-style-contract.mjs","verify:volumetric-sky":"node scripts/verify-volumetric-sky.mjs","prepare:level-d-review":"node scripts/prepare-level-d-review.mjs","verify:library-preview":"node scripts/verify-library-preview-coverage.mjs","verify:rock-c7-library":"node scripts/verify-rock-c7-surface-library.mjs","verify:scene-collision":"node scripts/verify-scene-collision-runtime.mjs","verify:scene-scheduler":"node scripts/verify-scene-update-scheduler.mjs && node scripts/verify-packaged-scene-update-scheduler.mjs","verify:vegetation-labs":"node scripts/verify-vegetation-lab-readiness.mjs && node scripts/verify-vegetation-preview-runtime.mjs","verify:gallery-database":"node scripts/verify-official-gallery-database.mjs","verify:local-generation":"node scripts/verify-local-generation.mjs && node scripts/verify-fal-patina.mjs","verify:locomotion-state":"node scripts/verify-locomotion-state-machine.mjs","verify:official-catalog":"node scripts/verify-official-catalog-provider.mjs && node scripts/verify-official-catalog-rock-package.mjs && node scripts/verify-official-catalog-runtime.mjs && node scripts/verify-official-catalog-lod.mjs && node scripts/verify-official-catalog-placement.mjs && node scripts/verify-playground-official-catalog.mjs && node scripts/verify-packaged-official-catalog.mjs","verify:scene-depth-pass":"node scripts/verify-scene-depth-color-pass.mjs","assets:plateau-landmarks":"node scripts/extract-plateau-landmarks.mjs","verify:character-package":"node scripts/verify-packaged-character.mjs","verify:collision-package":"node scripts/verify-packaged-world-collision.mjs","verify:environment-cycle":"node scripts/verify-environment-cycle.mjs","verify:ground-stabilizer":"node scripts/verify-ground-stabilizer.mjs","verify:vegetation-shader":"node scripts/verify-vegetation-shader.mjs","verify:water-experiments":"node scripts/verify-water-experiments.mjs","verify:water-interaction":"node scripts/verify-water-interaction-controller.mjs","verify:creation-revisions":"node scripts/verify-creation-revisions.mjs","verify:lab-editor-headers":"node scripts/verify-lab-editor-headers.mjs","verify:rock-lab-lifecycle":"node scripts/verify-rock-lab-lifecycle.mjs","verify:walkable-character":"node scripts/verify-walkable-character-runtime.mjs && node scripts/verify-packaged-walkable-character.mjs","verify:playground-walkable":"node scripts/verify-playground-walkable-runtime.mjs","verify:quality-integration":"node scripts/verify-quality-budget-integration.mjs && node scripts/verify-packaged-quality-budget-integration.mjs","verify:rock-generation-lab":"node scripts/verify-rock-tool-behavior.mjs","verify:lab-asset-provenance":"node scripts/verify-lab-asset-provenance.mjs","verify:rock-dense-field-lod":"node scripts/verify-rock-dense-field-lod.mjs && node scripts/verify-official-catalog-lod.mjs","verify:rock-region-compiler":"node scripts/verify-rock-region-compiler.mjs","verify:rock-regions-package":"node scripts/verify-packaged-rock-regions.mjs","verify:style-labels-package":"node scripts/verify-packaged-style-labels.mjs","verify:material-labeling:mcp":"node quality/mcp-material-labeling/verify-mcp-material-labeling.mjs","verify:natural-rock-surfaces":"node scripts/verify-natural-rock-surfaces.mjs && node scripts/verify-natural-rock-replay.mjs","verify:manufactured-materials":"node scripts/verify-manufactured-materials.mjs","verify:renderer-configuration":"node scripts/verify-renderer-configuration.mjs && node scripts/verify-packaged-renderer-configuration.mjs","verify:rock-region-migrations":"node scripts/verify-rock-region-schema-migrations.mjs","verify:tree-baseline-coverage":"node scripts/verify-woody-baseline-coverage.mjs","verify:material-labeling:agent":"node quality/agent-material-labeling/multi-part-manufactured-prop.mjs","verify:rock-semantic-materials":"node scripts/verify-rock-semantic-materials.mjs","verify:shared-shadow-receivers":"node scripts/verify-shared-shadow-receivers.mjs","verify:tree-species-references":"node scripts/verify-tree-species-references.mjs","verify:rock-geology-v2-ontology":"node scripts/verify-rock-geology-v2-ontology.mjs","verify:atmospheric-condition-lab":"node scripts/verify-atmospheric-condition-lab.mjs","verify:rock-geology-v2-morphology":"node scripts/verify-rock-geology-v2-morphology.mjs","verify:rock-regions-clean-consumer":"node scripts/verify-rock-region-clean-consumer.mjs","verify:rock-geology-v2-inspirations":"node scripts/verify-rock-geology-v2-inspirations.mjs","verify:rock-geology-v2-canonical-pilot":"node scripts/verify-rock-geology-v2-canonical-pilot.mjs","capture:rock-geology-v2-canonical-pilot":"node scripts/capture-rock-geology-v2-canonical-pilot.mjs"},"version":"0.5.0","_npmUser":{"name":"jack_hyperbond","email":"jack@hyperbond.studio"},"homepage":"https://toonlab.io/docs","keywords":["three","threejs","toon","cel-shading","anime","anime-game","anime-environment","cel-shader","shader","lighting","water","procedural-textures","game-starter"],"repository":{"url":"git+https://github.com/call-me-sensei-app/toonlab.git","type":"git"},"_npmVersion":"11.10.1","description":"Anime-style game toolkit for Three.js with cel shading, vegetation, rocks, water, sky, clouds, procedural textures, and portable Lab artifacts","directories":{},"maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"_nodeVersion":"25.7.0","dependencies":{"pg":"^8.22.0","3d-tiles-renderer":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","react":"^19.2.7","three":"^0.185.1","ecctrl":"^1.0.97","marked":"^18.0.6","draco3d":"^1.5.7","react-dom":"^19.2.7","playwright":"^1.60.0","typescript":"^5.9.3","manifold-3d":"3.5.1","lucide-react":"^1.23.0","three-stdlib":"^2.36.1","meshoptimizer":"1.1.1","three-bvh-csg":"0.0.18","three-mesh-bvh":"0.9.14","@pixiv/three-vrm":"^3.5.4","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@react-three/rapier":"^2.2.0","@vitejs/plugin-react":"^4.7.0","@dimforge/rapier3d-compat":"^0.19.2"},"peerDependencies":{"react":"^19.0.0","three":"^0.185.1","three-stdlib":"^2.36.1","three-mesh-bvh":"0.9.14","@pixiv/three-vrm":"^3.5.4","@react-three/fiber":"^9.0.0","@dimforge/rapier3d-compat":"^0.19.0"},"peerDependenciesMeta":{"react":{"optional":true},"three-stdlib":{"optional":true},"three-mesh-bvh":{"optional":true},"@pixiv/three-vrm":{"optional":true},"@react-three/fiber":{"optional":true},"@dimforge/rapier3d-compat":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/toonlab_0.5.0_1790563225576_0.049384624828271884"}}},"time":{"created":"2026-07-12T02:27:34.875Z","modified":"2026-09-28T02:40:25.946Z","0.1.0":"2026-07-12T02:27:35.273Z","0.1.1":"2026-07-12T02:43:01.184Z","0.2.0":"2026-07-12T15:14:12.096Z","0.3.0":"2026-07-19T08:57:15.652Z","0.3.1":"2026-07-19T17:33:15.791Z","0.4.19":"2026-08-14T17:52:21.116Z","0.4.20":"2026-08-28T23:09:38.278Z","0.4.21":"2026-08-29T14:17:08.350Z","0.4.22":"2026-09-01T15:07:20.338Z","0.4.23":"2026-09-07T15:27:40.881Z","0.4.24":"2026-09-08T14:24:10.035Z","0.5.0":"2026-09-28T02:40:25.751Z"},"bugs":{"url":"https://github.com/call-me-sensei-app/toonlab/issues"},"author":{"url":"Call Me Sensei","name":"Hyperbond Studio PTE. LTD."},"license":"MIT","homepage":"https://toonlab.io/docs","keywords":["three","threejs","toon","cel-shading","anime","anime-game","anime-environment","cel-shader","shader","lighting","water","procedural-textures","game-starter"],"repository":{"url":"git+https://github.com/call-me-sensei-app/toonlab.git","type":"git"},"description":"Anime-style game toolkit for Three.js with cel shading, vegetation, rocks, water, sky, clouds, procedural textures, and portable Lab artifacts","maintainers":[{"name":"jack_hyperbond","email":"jack@hyperbond.studio"}],"readme":"# ToonLab by Call Me Sensei\n\nToonLab by Call Me Sensei is an anime rendering and content-integration toolkit\nfor [Three.js](https://threejs.org/). It is purpose-built for cel-shaded anime\ngames rather than generic stylization. It is strongest when you already have a\nscene, level layout, or asset and want to apply coordinated\ncharacter, environment, ground, rock, vegetation, water, and post treatments\nwithout building those shaders from scratch. It also provides focused asset\ngenerators, a searchable Gallery, portable presets, and OSS/Pro MCP workflows.\n\nToonLab does **not** currently make a coding agent reliable at constructing a\ncomplete polished world from one prompt. Terrain composition, natural cliffs,\ncoastlines, beaches, underwater habitat, biome layout, cameras, and final scene\nart direction remain host-authored or experimental work. For an existing\nlabeled scene, the public style runtime coordinates the selected bundle's\nlighting, sky probe, grass/ground coupling, sky/cloud/water, and post defaults.\n\nUse ToonLab as a focused runtime library (`@call-me-sensei/toonlab` on npm), as\nan asset/preset authoring workspace, or as an asset-discovery service—not as a\none-shot world generator.\n\n## Versioned expectation: 0.5.0\n\nFor a correctly constructed and semantically labeled scene, one strict Call Me\nSensei bundle application is expected to establish the supported visual\nbaseline without scene-specific shader tuning: partly-cloudy sky and clouds,\nrenderer look, sun and blue sky fill, shared sun shadows and visible-cloud\nshadows across every supported receiver (including water foam and direct-sun\nhighlights), character and material\nrouting, source-texture-preserving rocks, Ground Shader conversion,\nmeadow grass that adopts the ground's final lit/shadowed color with LOD and\nfinite-water exclusion, Anime water,\nand reversible per-domain inspection.\n\nThe host still authors the level, geometry, asset selection and placement,\nmaterial labels, cameras, gameplay, dynamic physics, and navigation. Labeled\nsolid objects receive conservative static collision by default. Arbitrary\nimported assets are not guaranteed to route automatically; strict mode blocks\nuncertain contracts instead of guessing. The installed\n[npm library guide](./NPM-LIBRARY.md) defines the complete shipped surface,\nexclusions, agent setup, MCP setup, and package-first documentation paths.\n\n## Recommended scope today\n\nThe recommended production workflow is:\n\n1. **Style an existing scene** with Toon, Environment, Ground, Rock,\n   Tree/Grass/Flower, Water, and Post runtimes. Water still needs a host-authored\n   footprint, shore, and closed seabed.\n2. **Find and reuse assets** from the project/library, released ToonLab Gallery,\n   or policy-permitted open sources. Select by dimensions, taxonomy,\n   provenance, license, review status, and immutable public URLs before\n   downloading.\n3. **Connect through ToonLab MCP**—ToonLab OSS local MCP, ToonLab Pro remote\n   MCP, or both—for discovery, metadata, provenance, saved presets/files, and\n   policy-aware imports.\n4. **Author bounded outputs** such as portable settings, style bundles,\n   procedural grass/trees/rocks/textures, model-loading integrations, and\n   reusable exports.\n\nWhole-world generation, terrain/biome/coast/cliff formation, automatic set\ndressing, Weather/Climate composition, gameplay systems, and autonomous scene\nclassification belong under experimentation. The exact supported boundary and\na recommended agent brief ship in `NPM-LIBRARY.md` and `agents/PROMPTS.md`.\n\n## Quickstart\n\n**No install** — use the hosted Labs at **[toonlab.io](https://toonlab.io)**:\ndefine character, vegetation, and environment shaders; author stylized assets;\ntune Water, Sky, and Cloud; and export portable presets from the browser.\n\n**As a library** in your own Three.js app:\n\n```bash\nnpm install @call-me-sensei/toonlab\n```\n\nThe package publishes declaration files for the root and every supported\nsubpath. TypeScript resolves them through each export's `types` condition. The\nstyle-target, label, bundle-application, inspector, and official-catalog\nplacement APIs use exact contracts, including the closed style-domain union;\nthe remaining JavaScript surface uses source-inferred declarations with\npermissive signatures only where inference cannot produce a valid public type.\nPackage verification compiles a clean packed consumer with `strict: true` and\n`skipLibCheck: false`.\n\nThe npm artifact is self-documenting when the source repository is unavailable:\n\n- `NPM-LIBRARY.md` is the versioned install, runtime, agent, MCP, and support\n  boundary guide.\n- `agents/PROMPTS.md` contains ready-to-paste supported prompts.\n- The Codex, Claude Code, and Cursor guidance files are included under\n  `agents/` alongside their paired feature skills.\n- Live user documentation remains available at\n  [toonlab.io/docs](https://toonlab.io/docs), including the\n  [15 public Labs](https://toonlab.io/docs/labs),\n  [MCP setup](https://toonlab.io/docs/mcp), and\n  [settings reference](https://toonlab.io/docs/reference).\n\n```ts\nimport {\n  CALL_ME_SENSEI_STYLE_BUNDLE,\n  createStyleTargetLabel,\n  createToonLabInspector,\n} from '@call-me-sensei/toonlab/styles';\n\nconst label = createStyleTargetLabel('natural.rock', {\n  targetId: 'island/cliff',\n});\nconst inspector = createToonLabInspector({ bundle: CALL_ME_SENSEI_STYLE_BUNDLE });\n\nawait inspector.setDomainEnabled(label.domain, false);\n```\n\n**Run the labs locally** (this repo):\n\n```bash\ngit clone https://github.com/call-me-sensei-app/toonlab.git && cd toonlab\nnpm install\nnpm run setup\nnpm run dev\n```\n\nSetup starts local Postgres with Docker Compose, applies schema migrations and\nofficial catalog seeds, and reports configured BYO-key providers. Set an\nexternal `DATABASE_URL` to use an existing Postgres service instead. Vite\nserves the labs at `http://127.0.0.1:5175`. See\n[Getting started](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/getting-started.md) for a tour.\n\n### Open the full documentation locally\n\nAfter `npm run dev` is running, open **[http://127.0.0.1:5175/docs/](http://127.0.0.1:5175/docs/)**.\nThe Docs page links to the runtime reference, the 15 live Labs, MCP setup,\nasset policy, style bundles, and the generated settings reference. Use the\nlanguage menu in the site header to choose one of the 22 Call Me Sensei\nlanguages; the selected language is remembered in your browser.\n\n### Complete local setup\n\nPrerequisites:\n\n- Git and Node.js 18 or newer.\n- Docker Desktop on macOS/Windows, or Docker Engine with the Compose plugin on\n  Linux. Use Docker's official installation guides for\n  [macOS](https://docs.docker.com/desktop/setup/install/mac-install/),\n  [Windows](https://docs.docker.com/desktop/setup/install/windows-install/),\n  or [Linux](https://docs.docker.com/engine/install/).\n- On macOS or Windows, open Docker Desktop once, finish its first-run setup,\n  and wait until it reports that the Docker engine is running.\n- At least one provider API key only if you want local AI generation. Browsing,\n  editing, the Library, styles, and official catalog assets do not require one.\n\nInstall and configure:\n\n```bash\ngit clone https://github.com/call-me-sensei-app/toonlab.git\ncd toonlab\nnpm install\ncp .env.example .env\n```\n\nEdit `.env` if needed:\n\n```dotenv\n# The bundled local database; leave this unchanged for the simplest setup.\nDATABASE_URL=postgresql://toonlab:toonlab@127.0.0.1:55432/toonlab\n\n# Optional server-side provider keys. Add only providers you use.\nTRIPO_API_KEY=\nMESHY_API_KEY=\nMESHY_API_KEYS=\nGEMINI_API_KEY=\nFAL_KEY=\nOPENAI_API_KEY=\nARK_API_KEY=\nPOLYPIZZA_API_KEY=\n```\n\nThen initialize and start ToonLab:\n\n```bash\nnpm run setup\nnpm run dev\n```\n\nOpen `http://127.0.0.1:5175`. `npm run setup` starts Postgres, waits for it to\nbe healthy, applies every missing schema migration, applies every missing\nofficial catalog dataset, and reports which providers are configured. It is\nsafe to run again.\n\nThe local MCP server exposes the same configured image/3D providers through\n`generate_ai_asset`, `get_generation_job(s)`, and `save_generated_asset`.\nWith `FAL_KEY`, `kind: \"material\"` creates a seamless Fal Patina preview and a\ndurable grouped PBR bundle (basecolor, normal, roughness, metalness, and height)\nat 1K–8K instead of flattening the maps into unrelated image jobs.\nMeshy text mode first generates a concept with the selected `image_model`,\nthen submits that PNG/JPEG to Meshy 7 as one trackable MCP job. The existing\n`generate_asset` tool remains the deterministic procedural-recipe contract.\n\nIf setup reports that Docker Desktop is installed but not running, start it\nand retry:\n\n```bash\nopen -a Docker # macOS\nnpm run setup\n```\n\nToonLab supports the normal `docker compose` plugin, Docker Desktop's bundled\nCompose binary on macOS, and the legacy `docker-compose` command.\n\nTo use an existing Postgres server instead of Docker, set `DATABASE_URL` to\nthat server before running setup. ToonLab skips Docker and applies the same\nmigrations and catalog batches to the external database.\n\n### Local Generate and Library\n\nOpen `/generate/` to use the same asset-generation workflow as ToonLab Pro\nwithout accounts, credits, billing, or Character Setup. The local workspace\nsupports:\n\n- Meshy 7 image-to-3D and multi-image-to-3D, including status polling and GLB\n  downloads. Text prompts can run through a selected image model and chain\n  into Meshy 7 automatically. Tripo remains available for direct text/image/\n  multi-view generation and model segmentation.\n- Gemini image, texture, and concept generation, including model,\n  aspect-ratio, resolution, image-count, reference-image, reference-URL,\n  previous-generation, prompt-enhancement, and automatic image-to-3D controls.\n- Searchable generation history, full previews, bulk image-to-3D conversion,\n  multi-view composition, prompt reuse, cancellation, and explicit saving to\n  the Library.\n\nProvider keys remain in `.env` and are read only by the local Node server.\nUploaded references, generated files, and provider downloads are stored as\nopaque objects under `.toonlab/objects`; Postgres stores their metadata and\ngeneration history. Saved generated assets appear in `/library/` with preview,\nOpen, asset-download, JSON-export, and delete actions.\n\nEvery meaningful Library save also creates an immutable local revision. Open a\ncreation in `/library/` to browse or download earlier documents, give important\nversions a unique name, add version-only tags and notes, pin milestones, or\nrestore an earlier snapshot. Identical saves are deduplicated, and restore\nalways creates a new head revision instead of rewriting history. This revision\nnumber is Library history; a document's own `version` field remains its portable\nschema version. Style-bundle revisions also record the exact revisions of saved\ndocuments referenced by their slots. Local runtimes can request the locked,\nself-contained bundle with\n`fetchStyleBundle('/api/toonlab/library/<bundle-id>/resolved')`; a missing lock\nfails explicitly instead of substituting a newer dependency.\n\n### Updating an existing installation\n\nUse the same update sequence for every ToonLab release, whether it contains\napplication changes, database changes, new official assets, or all three:\n\n```bash\ngit pull --ff-only\nnpm install\nnpm run update\n```\n\nRestart `npm run dev` afterward. `npm run update` is idempotent: it applies\nonly files that this database has not recorded yet. It does not recreate the\ndatabase, reset the Library, or delete local creations, drafts, files, styles,\nbundles, or generation history.\n\nUsers do not need to inspect a release and choose a migration manually:\n\n| Release content | Repository location | Applied automatically by |\n|---|---|---|\n| Database structure or behavior | `database/migrations/NNNN_name.sql` | `npm run setup` and `npm run update` |\n| Official catalog metadata and immutable `https://assets.toonlab.io` R2 URLs | `database/seeds/catalog/NNNN_release.sql` | `npm run setup` and `npm run update` |\n| Personal Library content | Local Postgres and `.toonlab/objects` | Never replaced by an official update |\n\nFresh installations receive the complete catalog by applying all versioned\nseed batches in order. Existing installations apply only newer batches.\nCatalog data therefore does **not** use a separate downloadable “current\nseed,” and new datasets are **not** schema migrations. Keeping every released\nbatch in the repository gives fresh and upgraded installations the same final\ncatalog while preserving a simple, auditable upgrade path. The checked-in\ncatalog includes the original 480 first-party Stylized rocks, the 100-item\nNature Reference Rocks by ToonLab collection, and the verified open-asset\nrelease. The two ToonLab rock collections keep distinct searchable identities.\n\nApplied filenames and SHA-256 digests are recorded in `schema_migrations` and\n`catalog_seed_batches`. Never edit, rename, or replace a released migration or\nseed file; add the next numbered file instead. The updater intentionally stops\nif an already-applied file has changed.\n\nAdvanced troubleshooting commands are available, but are not required for a\nnormal installation:\n\n```bash\nnpm run db:migrate # apply schema files only\nnpm run db:seed    # apply catalog dataset files only\n```\n\n**Building with an AI coding agent?** That is the fastest path through all of\nthis — see [Build with an AI coding agent](#build-with-an-ai-coding-agent)\nfor the recommended setup (skills + MCP) and ready-to-paste starting prompts.\n\n### Local MCP server\n\nRunning the labs locally also creates a Postgres-backed `.toonlab/` workspace\nshared by the browser tools and the included MCP server. Structured records\nlive in Postgres; `.toonlab/objects` contains opaque local binaries. Open\n`http://localhost:5175/settings/` for a checkout-specific configuration you\ncan paste into an MCP-compatible coding tool.\n\n```bash\nnpm run dev\n# In an MCP client, use the command/config shown at /settings/.\n```\n\nThe local server can search your workspace, the public ToonLab Gallery, the\nreleased official catalog, and public CC0 sources; read saved presets and\nexported files; generate approved seeded recipes; and import assets into the\nproject. Authored Gallery recipes are fetched with their public license and\nprovenance instead of being copied into the npm package. The server uses stdio,\nrequires no account or OAuth for public discovery, and keeps local work local.\nSee [Local MCP and workspace](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/mcp.md) and\n[Local database and public asset releases](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/local-database-and-public-assets.md).\n\n## The labs\n\nLab UIs are development tools and are not published in the npm package. The\nLabs home (`/`) presents the 15 live user-facing Labs by the artifact they\nauthor. Every Lab can save and reopen its documented portable creation type;\npreview cameras, stages, lights, playback, and comparison helpers remain\npreview-only. See [The 15 live ToonLab Labs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/live-labs.md).\n\nFocused ToonLab shaders, water, vegetation, generated assets, texture recipes,\nGallery assets, and metadata are intended for supplied scene content. Complete\nscene layout, gameplay, dynamic physics, precise collision, navigation, and one-shot world\nconstruction remain host responsibilities.\n\nEvery lab also uses one shared 24-hour preview harness with Dawn, Day, Sunset,\nand Night captures. The Day reference must visibly show Call Me Sensei's\ncool/blue shadow response. See the\n[universal preview contract](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/lab-preview-environment.md).\n\n- **Shaders** — Character, Tree, Grass, Flower, Rock, Ground, Manufactured\n  Surface, Water, Sky, Cloud, and integrated Sky & Cloud authoring.\n- **Asset Generation** — Rock, Tree, and Grass recipes and projects.\n- **Source & Texture Generation** — deterministic material-map recipes.\n\nEvery card links to a working editor. Integration examples are documented as\nexamples rather than additional Labs. See\n[Lab responsibilities](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/lab-architecture.md) for scope rules and\n[Getting started](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/getting-started.md) for current direct routes.\n\nSky, Cloud, and Water Labs author reusable rendering artifacts. Your application\nstill supplies valid scene geometry, placement, current conditions, and the\nlighting coordination that keeps the sun, shadows, vegetation, sky, and water\naligned. Current time and weather remain runtime state and do not alter exported\npresets. Sky quality can be rebuilt with `setQuality()`; Water quality is a\nconstruction-time graph choice and requires rebuilding the surface.\n\nEvery URL parameter has a HUD control. In local development, lab state is\nstored in Postgres so the MCP server and browser share it; existing\n`localStorage` and IndexedDB data migrate on first run and browser copies are\nretired after the verified commit. Static hosted builds\nfall back to browser storage. **Reset Lab** clears the current lab state.\nPoint any model-aware lab at your own model with the Model URL input or\n`?model=` — see\n[Characters](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/characters.md).\n\n## What's inside\n\nThe current release exposes the public runtime clusters below. Public API status and\nend-to-end capability maturity are different: the recommended workflow is to\napply focused runtimes to supplied scene content. Whole-world composition\nremains host-owned even though focused Sky and Cloud authoring is live.\nLighting, VFX, renderer ownership,\ncamera behavior, and game feel remain host-owned or pre-beta.\n\n| Cluster | Import | What you get |\n|---|---|---|\n| Styles and bundles | `@call-me-sensei/toonlab/styles` | Local, versioned style-bundle documents that coordinate domain profiles without storing asset identity or current scene state. Create, validate, serialize, parse, and resolve JSON with no account or database; hosts currently route explicitly labeled assets through each owning runtime. [Contract](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/styles-and-bundles.md) |\n| Toon character shading | `@call-me-sensei/toonlab/toon` | Anime-game character shader: flat lit colour, per-surface shadow tones with a warm band at the terminator, face maps baked automatically from the face, a nose shadow, eye-white shade and stocking sheen derived from the model, environment-aware light (sun, sky, cast shade), scenery, character and hair-on-face shadows, depth rim, hair ring and masked specular, ink outlines coloured from the surface, source map routing (normal/AO/emissive/MatCap/detail), stickers, shell fur, dither fades — 14 settings groups, all preset-serializable. [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/toon-shading.md) |\n| Environment shading | `@call-me-sensei/toonlab/environment` | Modern anime-style scene shader for texture packs, standard glTF, and untextured scenes: material-role classification, wrapped lighting, packed-map hints, window cutouts, sun/lamp rigs, time-of-day, six-direction ambient probe, planar floor reflections, BVH vertex-AO baking, height fog, cloud shadows. [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/environment.md) |\n| Water | `@call-me-sensei/toonlab/water` | Focused water treatment for a host-authored water footprint, continuous shore, and closed seabed: Gerstner waves, absorption color, refraction/caustics/foam, ripples, splashes, wakes, kelp, underwater treatment, and CPU buoyancy sampling. It does not design the coast or underwater habitat. [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/water.md) |\n| Vegetation | `@call-me-sensei/toonlab/vegetation` | Tree/grass/flower construction and shader runtimes, including the focused procedural broadleaf `BranchTree` with deterministic branching, eight leaf silhouettes, caller-supplied leaf/bark textures, and a portable recipe. No authored tree asset collection is bundled or exported: reviewed tree recipes remain searchable Gallery assets delivered through MCP with their CC0 metadata. Package-generated trees preserve authored bark first and otherwise select a registered deterministic bark surface instead of a bare trunk. The experimental species roster remains repository-only. [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/vegetation-sky.md) |\n| Rock shader | `@call-me-sensei/toonlab/rock-shader` | Detailed, versioned rock-material profiles with projected detail, distance tint, normal fading, striping, moss and optional top layers, plus explicit source-albedo and vertex-color/AO integration. Call Me Sensei is the default. Geometry generation remains separate in `rockgen`. [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/rock-shader.md) |\n| Ground shader | `@call-me-sensei/toonlab/ground-shader` | Splat-weighted anime terrain with slope/cliff detail, shoreline and weather response, HDR sun/shade controls, safe shadow defaults, and flat-albedo ground-field output for vegetation adoption. [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/ground-shader.md) |\n| Sky | `@call-me-sensei/toonlab/sky` | Reusable atmosphere, palette, sun, moon, stars, and god-ray settings authored by Sky Lab and Sky & Cloud Lab. Your application coordinates final lighting and scene state. [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/sky.md) |\n| Cloud | `@call-me-sensei/toonlab/cloud` | Reusable cloud shape, erosion, density, lighting, wind, cirrus, haze, fade, style, and hero-cloud recipe controls authored by Cloud Shader Lab and Sky & Cloud Lab. [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/cloud-shader.md) |\n| Post-processing | `@call-me-sensei/toonlab/post` | Optional single-pipeline compositor: character-aware bloom, color grade, LUT, vignette, screen outline, depth cue — schema-driven, preset-serializable. [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/post-processing.md) |\n| Procedural textures | `@call-me-sensei/toonlab/texgen` | Seamless CPU-baked PBR texture generator: 25 tileable pattern/noise generators, layered detail + colored overlays (moss, rust, grime), five-stop cel-capable color ramp, cavity/sheen hand-painted read, derived normal/AO/roughness/metalness/height/ORM/emissive maps, 60+ presets, and a natural-language recipe mapper (offline keywords or BYO-key Gemini/OpenAI). [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/texture-lab.md) |\n| Character pipeline | `@call-me-sensei/toonlab/character` | High-level load/style/rig/animate lifecycle runtime, bone-role adapters for VRM/MMD/Mixamo/Rigify rigs, native-or-packaged locomotion fallback, and procedural freestyle swim. [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/characters.md) |\n| Scene surface runtime | `@call-me-sensei/toonlab/runtime` | One strict heightfield contract for grounded props/characters, terrain-aware meadow scatter, shoreline water bed/phase/state wiring, source-texture continuity, and actual labeled shadow-coverage readiness. The host still authors terrain and XZ layout. |\n| Scene collision runtime | `@call-me-sensei/toonlab/runtime` | Automatic reversible collision discovery for labeled static solids, lightweight walkable blockers by default, strict readiness diagnostics, and public Rapier/custom-adapter integration. |\n| Model loaders | `@call-me-sensei/toonlab/loaders` | Optional GLB/glTF, VRM 0+1, PMX/PMD, FBX, OBJ, and text-USDZ loading helpers. Kept off the root import so apps that do not load models avoid loader dependencies. [Docs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/characters.md) |\n\nThe main `vegetation` barrel exposes the complete runtime. Smaller consumers\ncan import the same bindings from\n`@call-me-sensei/toonlab/vegetation-shaders` or\n`@call-me-sensei/toonlab/grass-palettes`; package verification asserts that\nthe focused subpaths and root export reference the identical implementations.\n\n### Default Call Me Sensei grass\n\nToonLab's default grass is its own deterministic procedural implementation.\nThe package generates the `primary` or denser `secondary` clump, LOD0/1/2,\nblade attributes, and material entirely from code. The public factory uses the\nprimary `call_me_sensei_clump` meadow by default and has no GLB or image\ndependency. Its accepted look is continuous upright coverage, full ground\ncolor adoption, and a bright texture-free watercolor wash—not isolated dark\ntufts or generic procedural blades:\n\n```js\nimport { createSceneSurfaceRuntime } from '@call-me-sensei/toonlab/runtime';\nimport { createSceneStyleRuntime, createStyleTarget } from '@call-me-sensei/toonlab/styles';\n\nconst surface = createSceneSurfaceRuntime({ bounds, heightAt, waterLevel: 0 });\nconst grass = await surface.createGrassField({\n  count: 12000,\n  min: { x: -40, z: -30 },\n  max: { x: 40, z: 30 },\n  // variant: 'secondary',\n});\nconst water = surface.createWaterSurface({\n  width: 80,\n  depth: 50,\n  position: { x: 0, z: -25 },\n});\nscene.add(grass);\nscene.add(water);\n\nconst look = createSceneStyleRuntime({ renderer, scene, sky, water });\nawait look.apply('call-me-sensei', {\n  targets: [\n    createStyleTarget('terrain', 'terrain.ground', ground),\n    createStyleTarget('meadow', 'vegetation.grass', grass),\n  ],\n});\n\n// The style runtime updates its ground-color field before the grass renders.\nlook.update(delta, camera);\ngrass.update(delta, camera);\n\n// Fail closed after the package shadow pass has produced coverage telemetry.\nsurface.assertReady({\n  camera,\n  styleRuntime: look,\n  requireShadowDomains: ['character', 'manufactured.surface', 'vegetation.tree'],\n});\n```\n\nLarge fields are spatially chunked by default. Each update rejects chunks and\nplacements outside the camera frustum, then compacts only visible records into\nthe same three LOD draw buffers. `chunkSize` (default 16 m), `cullPadding`\n(default 1.5 m), and `frustumCulling` are construction options;\n`grass.cullingStats` reports the current visible/culled instance and chunk\ncounts. Do not disable this for an outdoor meadow merely to work around bounds.\n\n`CALL_ME_SENSEI_GRASS_CLUMP_VARIANTS` exposes the stable procedural recipes;\n`CALL_ME_SENSEI_GRASS_MATERIAL_TEXTURE_URLS` is an empty compatibility binding\nbecause the material has no image dependencies. The default factory returns a\n`StylizedGrassClumpField`. `RetainedGrassClumpField` remains the generic\ncaller-supplied geometry/material container and does not load assets by itself.\nThe Call Me Sensei default preserves sampled ground hue: green ground produces\nonly lighter/darker green blades. Optional hue shift/desaturation remain public\nprofile parameters for other authored styles. Its recipe-v3 LOD0/1/2 topology\nuses 40/14/6 primary blades and compensates retained stroke width so zooming\ndoes not make the underlying terrain appear to change color.\n\nToonLab does not ship predefined tree assets in npm. Search reviewed public\ntree recipes through MCP, then pass the retrieved portable recipe options to\nthe runtime:\n\n```js\nimport { StylizedTree } from '@call-me-sensei/toonlab/vegetation';\n\n// treeRecipe is the document returned by get_public_gallery_asset after\n// search_public_gallery({ query: 'tree', type: 'tree-recipe' }).\nconst tree = new StylizedTree({\n  ...treeRecipe.options,\n  trunkMap: barkTexture,\n  vegetationShader: { preset: 'call_me_sensei' },\n});\nscene.add(tree);\n```\n\nFor a configurable recursive branch-type broadleaf, use the focused wrapper:\n\n```js\nimport { BranchTree } from '@call-me-sensei/toonlab/vegetation';\n\nconst tree = new BranchTree({\n  seed: 18,\n  branches: { levels: 3, children: 5, angle: 52 },\n  leaves: { shape: 'oak', color: [0.18, 0.48, 0.22], map: leafTexture },\n  trunk: { color: [0.48, 0.29, 0.16], map: barkTexture },\n});\nscene.add(tree);\n```\n\n`teardrop`, `round`, `oak`, `maple`, and `gingko` are the supported leaf\nshapes. Botanical species generation is not a public package claim.\n\nWater, sky, flowers, trees, grass, and splashes keep procedural defaults, while\nGallery tree recipes, `StylizedTree`, and `BranchTree` may use caller-owned\nleaf and bark textures. The\nCall Me Sensei tree path resolves bark in this order: explicit\n`trunkSurfaceProfile`, authored `trunkMap`, then the registered\n`call-me-sensei-bark-v1` fallback. Use `getTreeSurfaceProfileOptions()` when a\ndeveloper or coding agent should choose a different registered surface; use\n`trunkSurfaceProfile: 'none'` only for an intentional flat-color trunk. Trunks\ncast and receive through the package shared shadow pass by default.\n\nThe optional CC0 Quaternius mannequin is also not bundled in npm: its immutable R2\nURL, byte count, hash, source, and license are exposed as metadata. A host may\ndownload that test fixture or use its own mannequin:\n\n```js\nimport { TOONLAB_MANNEQUIN_ASSET } from '@call-me-sensei/toonlab/character';\nimport { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';\n\nconst { scene: mannequin, animations } = await new GLTFLoader().loadAsync(\n  TOONLAB_MANNEQUIN_ASSET.url,\n);\n```\n\n## Library usage\n\nThe local Library is discoverable through the same vocabulary as Gallery:\nsearch names, descriptions, types, and durable tags in `/library/`, or use\n`list_my_creations` / `search_assets({ source: 'library' })` through MCP.\nSaved-object tags are ASCII lowercase slugs (`a-z`, `0-9`, and single hyphen\nseparators; maximum 10 tags and 32 characters each) and are\nstored independently from the portable document so they remain searchable\nafter reload and edits.\n\nRevision history is unlimited in the local workspace. Creation tags above are\nseparate from version tags: creation tags remain discovery metadata, while\nversion tags describe a particular immutable snapshot.\n\nStart by loading one style bundle, explicitly labeling the scene targets, and\npreflighting the complete routing plan. Strict mode is atomic: if any target\nis unlabeled, unsupported, or missing an adapter, nothing is mutated.\n\n```js\nimport {\n  CALL_ME_SENSEI_STYLE_BUNDLE,\n  applyStyleBundle,\n} from '@call-me-sensei/toonlab/styles';\n\nconst targets = [\n  {\n    id: 'hero',\n    domain: 'character',\n    subject: characterRoot,\n    apply: (root, settings) => applyCharacterProfile(root, settings),\n  },\n  {\n    id: 'terrain',\n    domain: 'terrain.ground',\n    subject: terrainRoot,\n    apply: (root, settings) => applyGroundProfile(root, settings),\n  },\n  {\n    id: 'forest',\n    domain: 'vegetation.tree',\n    subject: treeRoot,\n    apply: (root, settings) => applyTreeProfile(root, settings),\n  },\n];\n\nawait applyStyleBundle(CALL_ME_SENSEI_STYLE_BUNDLE, { targets });\n```\n\nUse the domain-specific runtimes below to implement each `apply` callback.\nAsset identity stays in project/library sourcing configuration; it is never\nembedded in the style bundle. Custom adapters and custom assets must be\nrecorded in `.toonlab/reports/style-asset-gaps.json` and\n`.toonlab/reports/asset-gaps.md`. These generated review records stay local and are\nexcluded from source control.\n\n### Individual clusters\n\n```js\nimport { applyToonShader, createToonSettings } from '@call-me-sensei/toonlab/toon';\n\nconst settings = createToonSettings({\n  preset: 'default',\n  ramp: {\n    tone: { skin: [0.94, 0.82, 0.76] },\n  },\n});\n\napplyToonShader(characterRoot, { settings });\n```\n\n```js\nimport { WaterSurface } from '@call-me-sensei/toonlab/water';\n\n// The host supplies a continuous shore and closed bed sampler.\nconst water = new WaterSurface({\n  width: 200,\n  depth: 200,\n  preset: 'lake',\n  bedHeight,\n});\nscene.add(water);\n\n// per frame, before renderer.render(scene, camera):\nwater.update(renderer, scene, camera, delta);\n```\n\nAdd Sky and Cloud after the host scene has one coordinated sun, light rig, and\ncurrent-condition source. Their focused Labs produce the portable settings;\nthe application owns final scene composition.\n\nInside this repo the labs import from `../../src/...`; the `@call-me-sensei/toonlab/...`\nspecifiers are what you use once the package is installed from npm. The\nshader clusters are TSL/NodeMaterial modules for Three's WebGPU renderer\nstack, with WebGL2 fallback through the same TSL path.\n\n## Documentation\n\n- **In-browser docs** — with the labs running (`npm run dev`), open\n  `http://localhost:5175/docs/` for guided documentation: library usage,\n  MCP setup, the prompt cookbook, and the full settings reference. Hosted\n  features are marked \"Pro\"; the extended hosted docs live at\n  [toonlab.io/docs](https://toonlab.io/docs).\n- [Lab responsibilities](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/lab-architecture.md) — the finalized artifact,\n  production-method, editor/library, and preview-state boundaries.\n- [The 15 live ToonLab Labs](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/live-labs.md) — each user-facing editor, saved artifact, runtime, and generation workflow.\n- [Universal lab preview environment](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/lab-preview-environment.md) —\n  shared 24-hour controls, four-state regression matrix, and required cool/blue\n  daylight-shadow verification.\n- [Rock shader](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/rock-shader.md) — the separate generator/material\n  architecture, schema-defined public configuration, import policy, and bundle use.\n- [Styles, style bundles, and asset routing](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/styles-and-bundles.md) —\n  rendering domains, required asset labels, fallback policy, bundle ownership,\n  OSS application boundaries, and the shader/lab migration contract.\n- [Open asset library and scene coverage](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/open-asset-library.md) —\n  measurable scene-kit coverage, curated stylized generator base sets,\n  CC0/CC-BY provenance, gallery routing, and generation fallback policy.\n- [Getting started](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/getting-started.md) — clone, run, tour the labs,\n  load your own models.\n- [Current capability status](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/capability-status.md) — recommended\n  existing-scene, Gallery, MCP, and focused-authoring workflows versus\n  experimental scene-construction claims.\n- [Toon character shading](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/toon-shading.md)\n- [Manufactured environment materials](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/urban-prop-surface-roles.md) —\n  the layered classify-once contract for props, vehicles, buildings,\n  interiors, and reusable material-aware shaders.\n- [Environment shading](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/environment.md)\n- [Styles and bundles](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/styles-and-bundles.md) — apply coordinated treatments to explicitly labeled scene targets.\n- [Current release notes](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/release-notes.md)\n- [Water](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/water.md)\n- [Sky system](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/sky.md)\n- [Cloud shader](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/cloud-shader.md)\n- [Vegetation](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/vegetation-sky.md)\n- [Post-processing](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/post-processing.md)\n- [Texture Lab and texgen](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/texture-lab.md)\n- [Characters and animation](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/characters.md)\n- [Settings reference](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/settings-reference.md) — selected runtime and repository settings,\n  generated from the schemas (`node scripts/generate-settings-reference.mjs`).\n- [Shader constants](https://github.com/call-me-sensei-app/toonlab/blob/main/docs/shader-constants.md) — the deliberately unexposed\n  constants and where they live.\n\n## Build with an AI coding agent\n\nToonLab is designed to be driven by a coding agent (Claude Code, Codex,\nCursor, …). The recommended setup has three parts: give the agent the ToonLab\nskills, connect whichever ToonLab OSS local or ToonLab Pro remote MCP surface\nthe developer has, then start from a goal prompt and iterate. The npm package\nships runtime source and the small text-only `agents/` guidance bundle. It\nincludes a copyable playable blockout in `agents/examples/game-foundation.mjs`;\nmodels, textures, Lab apps, repository demos and review media are not bundled.\n\n### 1. Install the ToonLab skills in your game project\n\nThe skills teach the agent the runtime boundary, asset-discovery order,\nframe-loop contract, and each focused subsystem API. Start with `game-dev` for\nnew-game development or integration, and `asset-sourcing` for Gallery/MCP work.\nExperimental whole-world, natural-cliff, Weather/Climate, camera, game-feel,\nand gameplay-VFX skills are intentionally not included in the npm artifact.\n\n```bash\n# Claude Code — feature skills + project guidance\nmkdir -p .claude/skills\ncp -R node_modules/@call-me-sensei/toonlab/agents/skills/claude/* .claude/skills/\ncat node_modules/@call-me-sensei/toonlab/agents/claude/CLAUDE.md >> CLAUDE.md\n\n# Codex — shared guide + Codex-oriented skills\ncat node_modules/@call-me-sensei/toonlab/agents/codex/AGENTS.md >> AGENTS.md\nmkdir -p docs/toonlab-skills\ncp -R node_modules/@call-me-sensei/toonlab/agents/skills/codex/* docs/toonlab-skills/\n\n# Cursor — rule file\nmkdir -p .cursor/rules\ncp node_modules/@call-me-sensei/toonlab/agents/cursor/toonlab.mdc .cursor/rules/\n```\n\nSee [`agents/README.md`](agents/README.md) for the full layout.\nReady-to-paste supported prompts are included in\n[`agents/PROMPTS.md`](agents/PROMPTS.md).\n\n### 2. Connect MCP for asset discovery\n\nTwo servers, and they compose:\n\n**Local (free, no account).** The stdio server included in this package\nsearches local/project content, reviewed public Gallery recipes, the released\nofficial catalog, and public CC0 sources; reads saved presets and Lab exports;\ngenerates approved seeded recipes; and imports assets into a disk-backed\n`.toonlab/` workspace. Use `search_public_gallery` for authored assets such as\nthe public tree collection—those recipes are not npm built-ins:\n\n```json\n{\n  \"mcpServers\": {\n    \"toonlab-local\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"--package=@call-me-sensei/toonlab@latest\", \"toonlab-mcp\", \"--workspace\", \"/absolute/path/to/your-game/.toonlab\"],\n      \"env\": { \"TOONLAB_LEGACY_WORKSPACE\": \"1\" }\n    }\n  }\n}\n```\n\nThe npm server defaults to this disk workspace when `DATABASE_URL` is absent.\nSee [the installed npm guide](./NPM-LIBRARY.md) and\n[live MCP documentation](https://toonlab.io/docs/mcp) for the complete local\nand hosted setup.\n\n**ToonLab Pro (remote, OAuth).** [toonlab.io](https://toonlab.io) hosts a\nremote MCP server that adds an indexed CC0 asset search with ToonLab-styled\npreviews, AI generation (concept art, seamless textures, image→3D model\nchaining) on credits, stored characters with reference-image consistency, and\nyour cloud library of presets and style bundles. Requires a Pro or Team plan.\n\n```bash\n# Claude Code\nclaude mcp add --transport http toonlab https://toonlab.io/mcp\n```\n\nOther clients: add `https://toonlab.io/mcp` as a remote MCP server and\nauthorize in the browser. Full client-by-client setup and a tool reference\nlive at [toonlab.io/docs/mcp](https://toonlab.io/docs/mcp).\n\n### 3. The first prompt\n\nGive the agent a bounded goal over supplied scene content, name the skill, and\nlet it verify its own work:\n\n```text\nUsing the ToonLab game-dev skill, integrate @call-me-sensei/toonlab into this\nexisting Three.js scene. Inventory and label the character, manufactured,\nground, rock, tree, grass, flower, water, and post targets. Confirm my asset\nsourcing policy and use whichever ToonLab OSS or Pro MCP surface is connected\nto fill only named asset gaps. Apply the matching public runtimes, preserve\nprovenance, run the scene, and verify the supplied cameras. Do not redesign the\nterrain, coastline, biome, lighting, camera, or gameplay unless I explicitly\nrequest an experiment.\n```\n\n### 4. Prompts for common jobs\n\n```text\nUse the ToonLab MCP server to find CC0 props for a small fishing village —\nlanterns, crates, a pier, a torii gate. Evaluate geometry, material separation,\ntexture frequency, silhouette, provenance, and license for the Call Me Sensei\nanime treatment. Use the host game's placement/collision/LOD system and tell\nme what came from where.\n```\n\n```text\nUsing the ToonLab water skill, make the ocean stormier as the player sails\naway from shore, and let them surf the plunging breakers near the reef.\n```\n\n```text\nGenerate a seamless mossy stone texture with texgen and apply it to the\nshrine path. I want a hand-painted look with a five-stop cel ramp.\n```\n\n```text\nAs an experiment, use ToonLab Weather plus the host game's lighting system to\nprototype a day/night cycle with a thunderstorm at dusk. Keep lighting outside\nthe selected style bundle, list every host adapter, and do not describe the result\nas a supported full-world workflow.\n```\n\n```text\nSearch my ToonLab library for the \"sunset-festival\" style bundle and apply\nit across toon shading, sky, water, and post so the whole game matches it.\n```\n\n```text\nDesign a sword-swing VFX treatment that matches the selected anime bundle.\nVFX is not included in the selected bundle, so use your application runtime,\nrecord the custom VFX choice, and include its provenance and intended feedback.\n```\n\nA more extensive prompt cookbook — including the Pro generation and\ncharacter-consistency workflows — is at\n[toonlab.io/docs/prompts](https://toonlab.io/docs/prompts).\n\n## License\n\nCode is [MIT](LICENSE), copyright Hyperbond Studio PTE. LTD. Bundled assets are CC0 — see\n[ATTRIBUTION.md](ATTRIBUTION.md) for credits and for the bring-your-own\nconventions (Mixamo clips, your own models, licensed scan packs).\n","readmeFilename":"README.md"}