{"_id":"@aituber-onair/chat","_rev":"62-d136ececdc6d4a929222f3e46cc39eba","name":"@aituber-onair/chat","dist-tags":{"latest":"0.55.0"},"versions":{"0.1.0":{"name":"@aituber-onair/chat","version":"0.1.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.1.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"f4327900390d5fbfb49e3445a13c9e7fc68377ce","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.1.0.tgz","fileCount":211,"integrity":"sha512-ntjuSR4E9EKFVbEjkZI2dh6leNq7evMpVkuf/NSaFBaXITFT2zF5PxumDF6Sqc7qj/8Zd0/UUGBfESGk4wz1xg==","signatures":[{"sig":"MEUCIQCsSM3qAQxx/+5zsLNdBTdGM1oDTy9w2lO0SW11ZRdd5gIgRvRG/Ym5RQmEJBIf7ETDCNg2Y4mXW9eCQnUj1HMamt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":465691},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"90286dee9da7afa50435338d4628f350ba77ce94","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"_npmVersion":"10.9.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"_nodeVersion":"22.17.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.1.0_1754475709214_0.7878132934472841","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aituber-onair/chat","version":"0.2.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.2.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"386d1162f123c7802eec83b94140ddec6b8331b1","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.2.0.tgz","fileCount":211,"integrity":"sha512-Egf/a9OLsOJKQ1/GtP683R+P8RU2QahbrAqzvXxIwnxMclLgythHgpzWpnPDF28ROvRBcfwmk+cK2d2C/g2fwg==","signatures":[{"sig":"MEQCIHVkz5TJQA+71j0hcC+x1qicr6AcM12l1qFA4wh+70okAiByjtDR2Kxg2EL//R/6SxH/4RO3idrKOTvwtmJk6TYnTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":498018},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"1b410f8c90349ee1115dab8285f48780952199e9","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"_nodeVersion":"20.19.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.2.0_1754902329289_0.09449950671624818","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aituber-onair/chat","version":"0.2.1","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.2.1","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"264b039333fe80460a3fb5e5af9b944cefc2c3a6","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.2.1.tgz","fileCount":211,"integrity":"sha512-p0DuRMUTuBnXeNRylVqA781V4dYLHeE0OpCVK2jI0zctkqX2w+YCnES0hTgsf52Rcm4ak0GxziLTC+veTiEFIw==","signatures":[{"sig":"MEYCIQDfdvlrD7B/bqNE8+bUzqhea4O+nBivzkXwGSiJEXsdKAIhAPYLp8fMK9/OochDbOUWEaV5aWH01G4onz0vhTi1kXfu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":500154},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"c20cda93dd1ccae1a9a31a5977b2666881aa7f85","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"_nodeVersion":"20.19.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.2.1_1754984030051_0.54707637768674","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aituber-onair/chat","version":"0.3.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.3.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"f7a8bd0b13a3d7accb332205cca5efa091a27a7b","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.3.0.tgz","fileCount":235,"integrity":"sha512-0wZXBZuH6f4zyu7IQOl6h+OvDCSauvFu8vKp1QOH5xgM9gcHQgUtf+Em9xCwFIHoA5hX4NtDfl3caXQGovIJ1Q==","signatures":[{"sig":"MEYCIQDzAGP2O9KYQBQrmihWBktFgfeAUEFQNuudDS7ruCemdQIhAPo3IcMOh9QkPuwRt/QcpAahSPoDqvO9/lEPdulklGJT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":595773},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"7f16115c30bc49a842ac9e31a75ae9ff45089f91","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"_nodeVersion":"20.19.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.3.0_1755918261652_0.31686354730045596","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aituber-onair/chat","version":"0.4.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.4.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"a5f4f92b8db3a3192d7eaae51c6f33ac063699d2","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.4.0.tgz","fileCount":253,"integrity":"sha512-nel+SPM0Hfw5oEg3UB5o1tKhgQnIXoypu+6OP3VAN31Deg7yG/kjbEKTzWHoRpi9iro/2FqdjrvMe2YaE0r0xQ==","signatures":[{"sig":"MEUCIQDq92VxhgJiJ85Fr9tR1GOs7xQTS39KErVmVbTKhgugdwIgXq1lQlBh++RTp4sQnBNhCqzaTxHHQIWuxOuFDaToM9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":761483},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"b67233f93d0430305feb3c88546bc83fba56bcbb","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.4.0_1757063436206_0.06138710900647859","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@aituber-onair/chat","version":"0.5.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.5.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"454a94c2afd5345d16df2cff8c9e53fa7ee0f686","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.5.0.tgz","fileCount":253,"integrity":"sha512-ma5B/l/MGBS8bgoVkE8N2gtHr1ol8QMbrc4hu2DpBg7OQ6sGjFpikqeprLLILn3U2XLc9hP7A1Fw/uaeXOP7eA==","signatures":[{"sig":"MEQCIEQ5lFBwcS53+nCMZBDBCRITHymyiIvooI2Nqbj/6O5cAiA+H40t3yYZleoJnwnick/zANUU3LSJgUIP2JnpJPNaZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":763509},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"c4a0361624bc5c97df3c2ec307e72355ed38b69e","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.5.0_1763034540835_0.09008995482298054","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@aituber-onair/chat","version":"0.6.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.6.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"25bbb894b90c2366b444273307f6966fdb26579b","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.6.0.tgz","fileCount":253,"integrity":"sha512-d00RieMH/03dgvvLEFDUVzjyLbpz1D04dh0W6dAxFFFb++Kv040I5WIYsyUCu/JMVApQ3/rEzrqTIhTgBraqvw==","signatures":[{"sig":"MEYCIQDEfRbjqTTDm7Td4NdLiWdLDcfFQAhHhCRK9h1Ujlp85wIhAI5QlM0P9xO1HtHpOdAcnIW/9P0oqqwtpSLMvLjvqq1U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":773480},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"b041339249f396056f22b9f2d8e85e1757e3f9b2","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.6.0_1763215957974_0.7841882237631796","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@aituber-onair/chat","version":"0.7.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.7.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"eb8eccbe0909ca92f799750a4da525b19c7d8f7e","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.7.0.tgz","fileCount":253,"integrity":"sha512-0frgTzNYl4cGXNrNSyqWe3jVAtR/S/CRLJDH054z/7vCqbmfw5B0F1AqskwvuOKuvFhm4/thAYGeG2qxP2lLqw==","signatures":[{"sig":"MEUCIQDe0McxW8BnuBMk+DzsSejdd0dCYfkBie7XOzBpKKBdywIgDwtGK/D7uG+KBvhPIkSRg4W42f+eVGItEkigAqCC+og=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":771676},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"48f840ed233f4160fbc548d121587bac1961763b","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.7.0_1765791607273_0.7127000308138711","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@aituber-onair/chat","version":"0.8.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.8.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"bdb6802d0d2560577a2447a443b3ebf170428c4f","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.8.0.tgz","fileCount":253,"integrity":"sha512-SOEpOp4nX5PpyZAfIbUqr4k8o5qfjtvshWsradhStZTjDTwrtQKw1ZSfd2srDSdPqez5eu/5blyrBebwKqsJJw==","signatures":[{"sig":"MEUCIQCFmaBYNxKdvJ4pCjgWdxna6qYCZY4JpccUOeSB+5w89wIgFzRmEELQACany97VLkGjOOkvJd4UN8XNrTii9IJQNeU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":772697},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"f8f708083887681dc3d9e427f0f262dd9c4c9aff","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.8.0_1768704988594_0.8695061056461004","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@aituber-onair/chat","version":"0.9.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.9.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"fea3d67bf70902657a1ba152d3341be23acf9c46","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.9.0.tgz","fileCount":277,"integrity":"sha512-7r12TEHiItOP/o0sR8NLYlU4MzHXKRtdoT+7KnsLBqLI4Zv6qnpfK+XiUf89KLEsMeMmRxUIzlwlx0amKTN2gg==","signatures":[{"sig":"MEYCIQCDryatT9sdukEF4UC3cFB7KowGjYVGxuWzbqOV0RwyNgIhAI4LqfN/22ppzqiu4mxKWaXc54fcHEbRyKTi2v8yEqzr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":861198},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"05b4ddea2f6955bf3907d4a146dac7383f137197","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.9.0_1769071952076_0.42058723210535187","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@aituber-onair/chat","version":"0.10.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.10.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"203687de9d4b917b948ee2036e26cd8307d23c4f","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.10.0.tgz","fileCount":301,"integrity":"sha512-173FR13pGiskET645DOQZBb6vAkMs2pDSLYxT5TJo+4wSG+ql0lEYqfQLU5f8GuHEa7E04GF/MmhtijukwAXww==","signatures":[{"sig":"MEUCIQCN7zaPz8LZCoB4vuKU/j2W4GleLZgsuXqaoVHFQSVcdwIgQFcyQULFiV3LmlxI4sVdxD/Bx+Auc2uKmXZadeO9OPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":971782},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"459f644a32937792a73019ef27a2cb9cd75c4dd9","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.10.0_1769732435687_0.5343085110253907","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@aituber-onair/chat","version":"0.11.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.11.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"ef4afda59f469bb869fb703cad3ef40171cc6915","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.11.0.tgz","fileCount":341,"integrity":"sha512-RxJDpc35osNKjowZSn1WY9hGtOWhl8baNrkXBCAOQ/wCVrfJh9hETWg9RKexcciWiea7zpiueeuU3+g2OSklIw==","signatures":[{"sig":"MEYCIQDhTgd8J/ajK3/rKqRZXoykNt0HDC3wZAgJvsDJuYQjsQIhAP+KH4o1GLyB4c7SC+m5a4xzeYlwawL9XWUW8YZvIqzx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":924843},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"f58bd25d5c86687fb707814f44c41f71433650d7","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.11.0_1770432435190_0.16448949592234352","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@aituber-onair/chat","version":"0.11.1","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.11.1","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"269d6e9e9bcb9942afb8a02d14aec4affb09e8da","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.11.1.tgz","fileCount":341,"integrity":"sha512-HIoJ25kfEKhwjlN9TLvx7WqJJV9PMrBLowzfNw1Uerhl7+hKG/jucSNxsuKkrFsmHvqUH+3mQ3nDm/7gVthwgw==","signatures":[{"sig":"MEUCIQC7yJBqcAs5iaa/45xWuwtZtdQCfgiWf9h0PV2h3fdCuAIgKLerUuzPOVehAHGRLk0OsqykGuNk5vvDWDxOeGqV9b0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":925631},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"8e637eb14fa687e78c082a3308dc7b315ca376a3","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.11.1_1770474708744_0.774157425813323","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@aituber-onair/chat","version":"0.12.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.12.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"0f674c9e2e8a8d85a32c694af15cdd90315dee50","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.12.0.tgz","fileCount":341,"integrity":"sha512-w1J0W1lZREv97qUqmEuhh3rAZaJjjymQOBFbrjSRHekHe585dR0jSaYxszX8XRcGnhMQb2njCX2S9ypZk6XYaA==","signatures":[{"sig":"MEUCIQCZ4m9ZU0YDowuy3xP/oTHpZ48D/2FVMCZhtv/bOgeRkAIgOYhEs0u5MZOr10Lylf4GGnHn5GeR1zIR+hoKuQ3Eqws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":926520},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"d5c23327ea4a6fdafde8f43db2665bb1646738c9","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.12.0_1770822360743_0.728193973534558","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@aituber-onair/chat","version":"0.13.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.13.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"b075d33b61b53e0b83ca6b294f1f3bd3e4f3dafd","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.13.0.tgz","fileCount":341,"integrity":"sha512-FuYPM6ASv1NX/ODmkuikncmC3F/cqHF9YuMMRvWAyaj50bFVoD6hLZrg1YU5Vto3G5s4zxkA29mKNBoOckWfOw==","signatures":[{"sig":"MEUCIQCgls3jSNtDsuvfCQmpEF144NQi6dPcqfqtWsjApy6D2wIgF9Ygx2Z0pGbz0hBykp0VOtkXO1xlcPG+m8cBuLCjhbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":927476},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"001b8458882d2dc4abc596b766df48abc53a9919","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.13.0_1771369138058_0.9946189174836495","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@aituber-onair/chat","version":"0.14.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.14.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"fbede2335771a900c2e25f0e69e6ef78f8a32754","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.14.0.tgz","fileCount":349,"integrity":"sha512-N2l3UOagyJHcLOtMt3cxaUiRqzf1MNvmolhaJ2InH6StkDmRaHYAKTaS7LIthR586qwjRu+BIiMFtv0/Nw8WMA==","signatures":[{"sig":"MEUCIQDVj6ssED9Vh4qAzdaJHFmJ8u81a6+lyCxYhifWVTJ6MgIgbYSGTUvbC4K/iXJjwH0Cyn8g3Gz2067N250VT9Me+Kk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":954127},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"5f6e89803414142d44eeebcb0560d7a5aee7c763","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.14.0_1771485032897_0.12149653332075472","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@aituber-onair/chat","version":"0.15.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.15.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"b507c23449d72ade4ad663dc3517d0d1429a4631","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.15.0.tgz","fileCount":349,"integrity":"sha512-J94o7tFDXuW/sWKVoG20FBwWzEjBBVy+3KoWbdCz47gMzp5vSsPDUTwnDlxONCCCxmI9+9FoIZd9bzfmf76zTQ==","signatures":[{"sig":"MEUCIQDv1+0Gmv1gEDF3tt7XORH2OWroiaOw9kD3AYK4+xhsgAIgbOIUknX59DVrxUWZTjCPZrO5K9uN+2c8bP9cxUeUe40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":958358},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"fbff39eef757aceaeeb46fe5d629d708e0e33ebe","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.15.0_1771544776210_0.3926711807322696","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@aituber-onair/chat","version":"0.16.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.16.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"5249b8842e0e98a623186cb19580fa894b425cda","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.16.0.tgz","fileCount":349,"integrity":"sha512-eGxru2nA6RIKPdHuB5gZXLoIbvyZk6S2vDGZD6BlHiQaAuYwNF+djt5pTOt9tE8BFRTpQvlvZcM3hgiKRaVqgQ==","signatures":[{"sig":"MEUCIQDb6m1dFwWaIpBw5HLpHBY1xS0wCcE38My0S/GLMOXm9QIgblRaMXPCVRcypGNh4EK/RevCL/ijHaL9fIGLYc7XZDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":957442},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"0ee44b8bcb55a1829333d00a0b00c06b7abe0eb8","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.16.0_1771800548767_0.5292791931929357","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@aituber-onair/chat","version":"0.17.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.17.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"031d174fd0b366c87c2310d4ddb51e235cd73f86","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.17.0.tgz","fileCount":357,"integrity":"sha512-ZaOUC7JOxmGBd5lfpeiq9GIrEy4wJwKUBfi3j/I6agJZVAZ8ODU7j8EZlYlEy4qEKLfxjSWwVLgHrSCditAGiQ==","signatures":[{"sig":"MEUCIQCxd3QSF0ILDYZxm4Mm6vHHvrbpdMbBirOyWO/hiIdmTwIgQj+0x1HtYim6USOwt+VnT+weo9aFoWFgg+H3TdSq964=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":998002},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"d2b02912b6d8a1b77a1cb13f2e769656426aac42","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.17.0_1771840736908_0.5747165644957799","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@aituber-onair/chat","version":"0.18.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.18.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"b8be0e2146c5566378aff0cfeed198fc540ea438","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.18.0.tgz","fileCount":357,"integrity":"sha512-4nqRGsS5mD3rY8LBcHICeyeTLs4nO926TZ+GrenuO6myT1/uV56yZoEuId6aHoCw5fUSpqLxPHeNWCgZtFNWQQ==","signatures":[{"sig":"MEYCIQCR6JXbh87GATwnxiXQbqRBa4J61ELbkCbZCrXMKD7X6QIhAPbuHJf/EsrraAA9NiWu/v4Si7FEQ83N784+NQQncsAO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":999278},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"264c865e7d06f421287364bf044fe898f4c892b2","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.18.0_1772623822539_0.7341582792085888","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@aituber-onair/chat","version":"0.19.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.19.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"e4cde204c63732526cc56ed514a665e99fee91e8","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.19.0.tgz","fileCount":357,"integrity":"sha512-dtimUFE9yRhei1Kp/bTKXaT6AJyfRUiTMfvzlWvPcdFNaCKayA9akkwuegPDaSvEC248H2uV46L1IXOLkT073A==","signatures":[{"sig":"MEYCIQDHcC7IQMIWKzT+jQT1n81gnSeyXXtJbcJ4JQwFdUAiZAIhAPoJLpYw+vkogYWUQxedLaVojnQ1A/3ObJtO8fTaFVCk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1009447},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"470fafe895a56f8bbd051f6d096dec8698d3437f","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.19.0_1772752627804_0.46879153736549917","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@aituber-onair/chat","version":"0.20.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.20.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"db0109d7206fc3fabacf135435d11a79e0d94717","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.20.0.tgz","fileCount":357,"integrity":"sha512-WGxYm7ZCmjR4RAw6GcPZLjXh01ZxcKXPkSq9X+Dm9u6VHsi/w6+NO4Tj3xrnx3wHyiUE27OtMZGvdYqxzjPQSg==","signatures":[{"sig":"MEYCIQDAxCbV8csJ7iTgWT3Qb6flLmSBO+Qee6s9WnqiBt0JqAIhAN0AlMUDCjoXW1hFCVfHzrZX/5Uh9sM9HIVVoSWDyUSE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1010177},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"40c1829c922d1fd8ea1248cf2a582ba86cd19cf1","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.20.0_1773738260166_0.9518454716276621","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@aituber-onair/chat","version":"0.21.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.21.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"46f46b70462028b277b43feae28b54b0b22f05ed","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.21.0.tgz","fileCount":357,"integrity":"sha512-iU9SL6rV4NX/WOi7V3Uu38ACbSie6tWFy0aN+cRzhDmsubw9KED9z6qkrCmP/GeLVWhDZ0PNFV+fJp2gwY+GUA==","signatures":[{"sig":"MEYCIQCJ4rtpfFCJYiEEPqXXQwtbi7kGVK6uktl8i2shcutJ/wIhAKogHaxZAe7UZWGt8CMZYH5E/0DdByyfsfF7dROoC82l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1013057},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"304f8a56ef99f0e630e3601fe37155c5f6eadb56","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.21.0_1773824278662_0.5102545352753378","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"@aituber-onair/chat","version":"0.21.1","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.21.1","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"053023ac8340fbbfc9c67fa9158caf9bf37e36d4","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.21.1.tgz","fileCount":357,"integrity":"sha512-qOmvikHzheup6gybBOxupKyKlgd3b150YO2HMhnB3DmlzGfkaIMudomTD/GbxTelv+M9mDGAqWlcESUH6HQdmQ==","signatures":[{"sig":"MEQCIBttfD0pkg8oQu3nJ+jkXfbvDpVAZ3afbqDtslILCnT3AiAC3AMB9brimp61tu4bP+WwIWy/C6+cZ+BAMZeo0lYMNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1013567},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"04e26d597d1bbef8c56a6c2bfc20b9ee14b6702f","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.21.1_1773872140244_0.4650944222279265","host":"s3://npm-registry-packages-npm-production"}},"0.21.2":{"name":"@aituber-onair/chat","version":"0.21.2","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.21.2","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"95064f4702f6ba6301b495ff27585d0bad68e1de","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.21.2.tgz","fileCount":357,"integrity":"sha512-aR/aGBpogTbmD7Xj1kLa5H4RAyjVK/AL08125NZxxlDRjNpm40WEQ1LIhexmPxaYD2xGAuD1vP1vBvAoBp9CsA==","signatures":[{"sig":"MEQCIFpBf2+Q5ypJi/TdpNRxB5yWqS5tNyNJj8fUPPLLMlG1AiAlcnhfYbvQkR3E9i8I5HyYoBk038P5bTs7aMJqybIsnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1031012},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"c3088ea1199f3afe4c99624609c6255dc9a06900","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.21.2_1774516370801_0.4276568195530761","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@aituber-onair/chat","version":"0.22.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.22.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"a6bed2108ed63fa93dd10700cafa0c5e05a4e699","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.22.0.tgz","fileCount":357,"integrity":"sha512-Dy2eIu7s5FedB9TkL+1hdr3myxofoA2yI5FLv8XZq3ulPviPd8AdU10nZuV8CE58A++kcL9jgOAYr+fTVVyI5g==","signatures":[{"sig":"MEQCIAUlnlU8qvsM7cZblX40fezrt1VZiZ6nHMiAEltRQDi5AiA5mJTaX5ehOAFVeg0z8VEU1yF5vqBJqn562KQCjBLuPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1054451},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"2f0c212ea4348c90d2575ea093b727a575843696","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.22.0_1774825220113_0.2008256784939384","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@aituber-onair/chat","version":"0.23.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.23.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"dc8dbfe2b84e4c10df1e068dd2d9bb99597d6f0e","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.23.0.tgz","fileCount":381,"integrity":"sha512-sXy4XHTpakdkPEhSY2RJrsWWNTHzY+G7cJkECQT+yYMfEuAQ1bXUaGrhhjKExOqZXkV22ryikgkrGkx0Vnw1yw==","signatures":[{"sig":"MEQCIDqGXoMkAJ9xG479nDOa+H0DAgKsnM733Ev0G/8Oti1iAiAJeqCprMmZ68hRrxrgyZRjyRBav2SR5rRuHK47F0uVMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1115563},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"099560011c2860befe953807fb06fbbf6fbfd21b","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.23.0_1775364910967_0.9140930656285424","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@aituber-onair/chat","version":"0.24.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.24.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"a3d3e7db231436d6d6be2aa6ac532d8d111f49e1","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.24.0.tgz","fileCount":405,"integrity":"sha512-S47Ru1yF4aeeVDSnFRz+4AZxAuLLQX+LcuCT12TuG9li3phhmB1zeitOtH1WdOydFZFM7i0aK1SeAfVOg0+P/w==","signatures":[{"sig":"MEUCIEW4pxNkKab8Gn3xrdAwBfSB5UchEdMRBxIif3GI380JAiEApBOIdn0QiinvXlgyvJXTVBX0h7lZKDMgiofe5G7fuZo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1159949},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"b39cf0b9ccf3bb922a0d7f92ed32f7d0ec0f58d1","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.24.0_1775569232910_0.8073286843500447","host":"s3://npm-registry-packages-npm-production"}},"0.24.1":{"name":"@aituber-onair/chat","version":"0.24.1","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.24.1","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"f655b15b746bc65b97bdfb187fa4753f2cae7737","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.24.1.tgz","fileCount":405,"integrity":"sha512-ygQHyo2l6AVCe+QK38f2vdnuazFwSEKt3fPErprK66qBcaZ7W60xkK9vetx8gJlSpG5zeLNqmrIlX39p4AP+6Q==","signatures":[{"sig":"MEUCIQDW3o3gopahshpRjxGC3/uZ8fDhUAzSbpj3BMlx+TkRWgIgGb4iN9gLftn5YHigxqDldmIgDl88l/Xu7dRemT2nxEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1162121},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"c43ea2d5c35aece08a5a1f15b7ba2f3a2f2b2244","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.24.1_1775597370718_0.5732377209197814","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"@aituber-onair/chat","version":"0.25.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.25.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"afec4914d04f36f1ae50ac1341f063ad3406cd0a","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.25.0.tgz","fileCount":405,"integrity":"sha512-F5cI4zAw1Hp78X0rAMdOFd/t/lz6RfeyfUD4izzbf6rgmsxi6bWbEpdgND1yEWdTE+SZg/n/jthzRkcACrY9gA==","signatures":[{"sig":"MEYCIQD7uyxKfNeoDML0kpKZGfAJGVxWo3Hf1apSTcviwWToHwIhAMtLjA1FlnxlZ6nbv8UjS0nBU51V7pU7n4o897zhO6jH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1168726},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"0f3cd291934fc258621a4f85509a48854bfd40db","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.25.0_1775607296182_0.8747559357312293","host":"s3://npm-registry-packages-npm-production"}},"0.25.1":{"name":"@aituber-onair/chat","version":"0.25.1","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.25.1","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"73f5dba941d0b50f6b7d3731a8835ac7ebbc6f47","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.25.1.tgz","fileCount":405,"integrity":"sha512-DTjU7Zw+SJTVSqRh7x7SqL9qBNbPu7G6egTzJKnmMDvTHIbDMV2W8k460w27jv8xjWnWBy1KuAsuWSpX6l9/8A==","signatures":[{"sig":"MEQCIARycU/tXFZfwND89On4PsiJM9Su4ok8llKfFsRIyUzDAiBt+/56gEMXyuaLg9Okw8lNpbv60PASOBlFU2eANZAK0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1173085},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"9b45673cc9f03f263af4842bc10408ca4e20c7ef","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.25.1_1775964969471_0.18923397056237246","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"@aituber-onair/chat","version":"0.26.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.26.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"5ca0aff3d3e1475b25ad479d8491f659006c4250","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.26.0.tgz","fileCount":405,"integrity":"sha512-xigls4c1so6Trr8LEi71LX5qivwhaxkZYZJOqU/mDfEAu28sdZHMMlkfmyclldpCFMkI9q4CG7QoJdLVmyrNXg==","signatures":[{"sig":"MEUCIQDPV5r503dxqbMYSoIiV5ICVSTriJAavQlZWOEbS2e3BwIgeBs5lsX3Fxz15J6gfo20cbF7lToB1bifaK/Kb2k+ufc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1173106},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"e51e0ffeffe9b85b219062cf3253d57dc27ce42c","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.26.0_1776375164825_0.6817491863014677","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"@aituber-onair/chat","version":"0.27.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.27.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"c04ab9d782335574f55bb7bcaa72f8264ca381b0","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.27.0.tgz","fileCount":405,"integrity":"sha512-v/rj1pP1L1A62UOuuX2DHvWKiAydBsqcJiyrYz7PPEYAvBbE6F3w688/umoRI61aZs+BLprpxOiJXxOMYReoDA==","signatures":[{"sig":"MEQCIGXLYZov089zahrf1YuUWPGfE+Ro8NU8xkSjUHt7tWtdAiB+JHgJXn2khEqHzRoAzun2Vn6VFoBkkA02pXZjvZVzgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1173923},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"fa4bd6f85a2321784187f9bf1dbff481f6954afc","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.27.0_1776779690762_0.8304486611111239","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"@aituber-onair/chat","version":"0.28.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.28.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"93929a6bb0236f7546a4e4f70e3bf4817feccf15","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.28.0.tgz","fileCount":405,"integrity":"sha512-vPOnI9QX0MD0HVQIOSU19GUdmW+3Z264sQs0O44Y//Pes1U0aXVtFStZKeZqB3eTILwI55EK/upg4s/w6HQBvA==","signatures":[{"sig":"MEUCIQD0+ULI0REKHWbMflfQg/V/gRt1rg01nWXVoRy3ynGOKAIgSXQEA1hJs5TuRp5BdWh7e+BLYWrhq3yXJMckbMd/u6U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1176768},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"17f6f9f0ef1e9cb31981b9a9bf1158b73afe2bd8","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.28.0_1777097558700_0.4536040537181063","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"@aituber-onair/chat","version":"0.29.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.29.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"34f18ca65dac75c7162842552af9bc769dd5c57d","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.29.0.tgz","fileCount":405,"integrity":"sha512-q6Q5jrO4flfQFed4hnYiM0pRVYTfKTYFWGERDibbnFcBSyut8inFTedWVXthJV5CS4uWTljAtek7z2UKNO2U3w==","signatures":[{"sig":"MEYCIQCowGbgyjmYhS5Rmi07X8Mv45sdmSj4Y02+r6Lj4U27+QIhAOiq38q84d+W+tixR+9YYMSCGCwT2YTESmz7PLaNGxv/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1187532},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"47457d03ea8ca980d4b6573e6a6bbe39272e3247","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.29.0_1777468292295_0.6240968823791986","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"@aituber-onair/chat","version":"0.30.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.30.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"26ca71b8019874c100cb31622748233645fd6ce9","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.30.0.tgz","fileCount":413,"integrity":"sha512-wmB4BzaAgwF0D/5cXlYT4m8l7fyVowt1RK9re+GUkxg2BDvMAzH2pYeCbSe8Mx9kU8Ft2V1A1bt2zu87U7G+Gw==","signatures":[{"sig":"MEQCIArb+ypVUZX3bqAPnAfQc382ip3NvSirwsBGgLVgo2yrAiB0ZmcCXnZUtJ2wbjSRoVd0ptKWWIyB07fAua53Gjow4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1184121},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"1fdb06a1765b00395d70d442f44091e388a396a6","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.30.0_1778233384635_0.7805106763774095","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"@aituber-onair/chat","version":"0.31.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.31.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"62b6dd7eef2002417971e25e4a96c8753914c44c","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.31.0.tgz","fileCount":469,"integrity":"sha512-ICnc7Za/67T13KBFlAYv0TLNkk4IJYqZcURzTVuzYT3THMm3THXNNK29yI15eg4KELGYolijk7AfwQxOQw2KNA==","signatures":[{"sig":"MEUCIBfCtBA6DvMKCStndBGIUzoDDVOMxFxFS5iDMOoWSTvPAiEA8gBMT8ExoLD6B3bUVjegqj1VUYjyh6No8vIjYVS54D4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1274808},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"f44eba30b4e77366aed1a6d7a3182967855165b4","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.31.0_1778374724308_0.59095816946927","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"@aituber-onair/chat","version":"0.32.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.32.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"67700a67efb431e960cd579bb32ee55cbbbf10a7","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.32.0.tgz","fileCount":485,"integrity":"sha512-wVj5fw3SLX0EtRAZPkWx8oFH9G1AyhVIXkgFXQiIQm/8muZS3boDNA1VYBQc9IzILurrKhvodwv7PARlU06gsg==","signatures":[{"sig":"MEUCIQCzO5eoIPYQfoNTHmnPoFUHVCdiOlI/j3RT51HU4g8p0gIgLQQ1p9SoEijeVJtABISS91W1TdrUTK025LxK/+5FIYw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1309606},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"f9a0077a696a31b0cfef72b6a74be5be2c9bbbeb","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.32.0_1778743808591_0.8445405557465095","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"@aituber-onair/chat","version":"0.33.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.33.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"e89cc3790ba2d46b5a57ca81d913998455aeaa10","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.33.0.tgz","fileCount":485,"integrity":"sha512-TfwEGJu+OOmKgqOus+TdCP8iWZ9vPwmP8299yoHilfFh3a9MTvOvUqIqMwzO8ywpBQw2wsE26kR8ZGjhiJugCg==","signatures":[{"sig":"MEYCIQCcglshqFVdBMrMzP0k5wTOY1ZFQvDtqxRVi/YivyQqEQIhAI+IEJqZoXWaCroETckiwAzxTY1NXp9dsHS4CWkYeOq6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1312448},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"8f084e137067d9b56038eb09f8e22eef8ba3f388","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.33.0_1778800171396_0.10409105672853602","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"@aituber-onair/chat","version":"0.34.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.34.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"047c5e3f8aa3071e858661b824ecedd1110beab5","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.34.0.tgz","fileCount":533,"integrity":"sha512-0GUJ2iPqQOHT/UP5ZjZESts6LowuLXSNWXXLkQiWbjFk7aO4OiRwI8EgW6cyHlOyzppUj6op5I8j4cSsmPFoeA==","signatures":[{"sig":"MEYCIQCE+D2cI7yC1pJpQd0GzU15cBlUoTyG5m4afbSRNUx+JwIhAMQvFdN8xRpg1tGmZpbFJKIJG0/z4uxokzVDfErAxiwd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1394894},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"13918956c99f013d03cc4cdc6439e21dffa08d40","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.34.0_1778882775693_0.5702256978887528","host":"s3://npm-registry-packages-npm-production"}},"0.34.1":{"name":"@aituber-onair/chat","version":"0.34.1","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.34.1","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"2073f1da0575b722a1573c72904b27c45cf93377","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.34.1.tgz","fileCount":533,"integrity":"sha512-BoRgAPZDrf7FNYZakBFMc5dA8f/GRFJ5paO86zfKKM1YOPQtv5gHFSMzywOud5W2F9JOZPyVVgPY0dm03KMvow==","signatures":[{"sig":"MEUCIQCe68Ch22vhZOAJMIjl70Y69/1Hj3n6KMQintauPzbj3wIgesD/BRUrueh7TO0VLP/qHtdjYylEfh84Ax4nCx8qCcI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1395374},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"a05d67507a599906d872ae3acd6d1114ff2cf398","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.34.1_1778936231249_0.3522205149137805","host":"s3://npm-registry-packages-npm-production"}},"0.35.0":{"name":"@aituber-onair/chat","version":"0.35.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.35.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"54ed6854dd2b73b305465ed247d038fba83cb669","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.35.0.tgz","fileCount":533,"integrity":"sha512-wXHYstu8emF60Oyn/LB64CYxtz47DfV969ZaUMq1Q/uYc2dEdBPqkTlu5e+fP3ykXt0dREZjqcNT1X5pSnT2yw==","signatures":[{"sig":"MEYCIQC9/xusySrmd7TyJ14whzQWB2IWB+2URhWxREMtiXEEFQIhAM5M762k2LZ2b5EMdHV1204MxlfA6pwXApFb6CsxDaoH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1398011},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"4e1d7b48b426a69f65e88d0b076d3327173d2181","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.35.0_1779255121260_0.4856034133086251","host":"s3://npm-registry-packages-npm-production"}},"0.36.0":{"name":"@aituber-onair/chat","version":"0.36.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.36.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"9bac535f75620e303643f5313adc9ade647df4f8","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.36.0.tgz","fileCount":573,"integrity":"sha512-XsmFalI9/hM/8sUHuX/u7jy8MfbiJ+fEJTMLvCVLXUPWCwC9RZffJBIbkkIClnQ+WgfdDmq7gN/faSHJJ7TyRg==","signatures":[{"sig":"MEUCIQCsIB8FZ2wnZ/eXJWJiJqfaEDUVWko9JpmqqZV4QivRnAIgG+//6+er/bdbsTHsFEbvfhXl9cI9C7eqS02uy+sg4z8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1402643},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"010868e5ae0ee3cd216995a993857f4e38ad360e","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.36.0_1780024318920_0.7555321520388703","host":"s3://npm-registry-packages-npm-production"}},"0.37.0":{"name":"@aituber-onair/chat","version":"0.37.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.37.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"e1d4ce9ad98429771f02e29880e0810e1d5a7e37","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.37.0.tgz","fileCount":573,"integrity":"sha512-FMkUo7Mb0OMx0LE7B2EoZSQmUZnG5nYw4qRh/HOY9U0a4I4/rK66WI9skMWoLv05mjJG6RYzptJcghFXeHkT/Q==","signatures":[{"sig":"MEQCIAi8xw9uUMEhMr7kEc+zyCgFKADKSBWF879omRka+qkRAiAqOkTUjbONimlQxgj9x1QE8YtE6GQkov1zpFP2U8IElw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1400302},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"41d8f10b8442a1d52d8af5a2baafee417a4dfaf9","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.37.0_1780230567311_0.17512264400338817","host":"s3://npm-registry-packages-npm-production"}},"0.38.0":{"name":"@aituber-onair/chat","version":"0.38.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.38.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"80a4e0db838b2dced1407701b6376054c878fca1","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.38.0.tgz","fileCount":581,"integrity":"sha512-w4pHEdjjmcnq4ibmXjAoUIj032y/pg/cYMG7gaiaxXb0USqGilDJ0HBqfo0NZI1u8mm1taovnPSY9VUx2fjMWQ==","signatures":[{"sig":"MEUCIQDjN4GoSOhsI7Cj7HlZgB0SOZt0zuQW4svcosI74ZhUJgIgGWpq0JlxmWKxyjZ0o92tIrdLYgT+IuFlaBvU9l9hy28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1424473},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"b688054ada249c0bed34b20c8131147a1b1b0969","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.38.0_1781071883264_0.1746423152485157","host":"s3://npm-registry-packages-npm-production"}},"0.39.0":{"name":"@aituber-onair/chat","version":"0.39.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.39.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"fd2e64737a0cd726cbff0f4a22828d1bae33531d","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.39.0.tgz","fileCount":581,"integrity":"sha512-ur1RIIEIOThi+En7AcF+ZnPg8a7Ydv0PllqBQcjlK+PoN1StyGl8sad4kKU3SDof5SxXRU7/Jrt+2Qum/Ji7ZQ==","signatures":[{"sig":"MEUCIDpcb3pMzT41DRn00MpJ2F6XoZmoGL2oV8LXtlmnGDXuAiEAy5Nue3XT761vWibxWTGb5spUGy6shkgO2xsd6Z7WQ6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1425754},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"6c0dca3e46d39ea56c9f1f5a38d51b9f6e70f6e4","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.39.0_1781410563351_0.5836963652795226","host":"s3://npm-registry-packages-npm-production"}},"0.40.0":{"name":"@aituber-onair/chat","version":"0.40.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.40.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"e8fafcd4d6c26cb09b508cb63dccdf0956fe0e4c","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.40.0.tgz","fileCount":581,"integrity":"sha512-TT0YJv64uZ8in8Hfkg1g6P7Qu/wY9oSRMwExzvfDTtQRXa1nTvADZHw2Ir9fGepKb0uHtojAUp/3+eL6zXmF3Q==","signatures":[{"sig":"MEYCIQCe3wYFI/mAPKiO8+nAY5MOskJJoWfVohGbKdG+v60LBQIhAJmzoDb84GiJJQmJsAdL+0+U6LBJFnewXlipOE2uYhLG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1442227},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"107423df9f7e996f23beb9c417c3df326561e5da","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.40.0_1781702518379_0.42143157528833797","host":"s3://npm-registry-packages-npm-production"}},"0.41.0":{"name":"@aituber-onair/chat","version":"0.41.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.41.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"5048dc19a1befff3ba392acb836d8158837a6f99","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.41.0.tgz","fileCount":605,"integrity":"sha512-of0/qQq1kexb0OLuDEyHSYgaVWnZw+fAAMczjvhokhr8yPIxK3qtFkAr4dp/0bhHh5qoOyu6ifYD20YVTEoNmg==","signatures":[{"sig":"MEUCIEg0bRM3FZBRdK6zie4Veb5tabN+1Hb9teMzqu+mJh2SAiEArxVXyUytPNKHhIU8DZkfW3LE9Wv3nTrSh3VYLUHj/Hw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1470240},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"f8f97dbc306e4d14517b64f72d378dcc21d4d8e2","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.41.0_1782115350387_0.40489616829122554","host":"s3://npm-registry-packages-npm-production"}},"0.42.0":{"name":"@aituber-onair/chat","version":"0.42.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.42.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"dbddb0d1179b2e1b93b49b54a6a6a42986ae11df","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.42.0.tgz","fileCount":629,"integrity":"sha512-7ZSfwk7oRWEKl1JS5anUA7NtKn3HJLoGtGlvAXmIph+A2QdBGVBywpevcRlqvkv6etliCttBwdzq94q/CIvAQw==","signatures":[{"sig":"MEUCICzaX4+KNDYn2TIXw7lAvuwrMQyDnCTMcJ7HTJDT6lLIAiEAwZHOclJZqqBbOkRO+zPYVhl4oRKle1EDPEbcHrWXODE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1498904},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"3bbfd6b6ebb347f2804c0b8f6a843df1968940ed","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.42.0_1782132476216_0.42266273619851336","host":"s3://npm-registry-packages-npm-production"}},"0.43.0":{"name":"@aituber-onair/chat","version":"0.43.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.43.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"55934bf4fb54ab840451ccf1879498c234432fac","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.43.0.tgz","fileCount":629,"integrity":"sha512-DClm+31rFhT8OOBHp8ltq6uMZ1tg6u2PY4avNXrFlQk9T0qNu2JOMp1FOe+OnBOCBSa45ND1Y9N+g2z+J137RQ==","signatures":[{"sig":"MEUCIHUH/E6+XJiCa85TUnMGLgd7bzWXiFRdjUht2CflxzgfAiEA846x+1Ud83YslPaJizaXso5NXz4K597oyC17S0cbQHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1504751},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"890b2bcf18b8b492c7545a489f5d4dd8d3b8963a","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.43.0_1782541896700_0.7966189625364457","host":"s3://npm-registry-packages-npm-production"}},"0.44.0":{"name":"@aituber-onair/chat","version":"0.44.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.44.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"656ff5084c4239e9ed1c12264cbd96dabe7f4af3","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.44.0.tgz","fileCount":637,"integrity":"sha512-EgIm7uy0hWGk+AfMVmQ4c0Cq25Zfg1QZGmJJnx34wmxwHDfeK+GGDFYbJpL8ZIUHVccVHoE8faiATfwULJprcg==","signatures":[{"sig":"MEUCIQDSu8FFw1BW/nNaL+fDjUKWHHEtkfTsXPFXvxOhXcHDAwIgInAdUiS4k/f33YyXY5mT+Z9PXSzwEDgjTsvCgB9AthE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1529319},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"b3b5b1ea3dc1f6b25f1c9a1d254e0c6ab030ce79","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.44.0_1782856945504_0.06889712989298924","host":"s3://npm-registry-packages-npm-production"}},"0.45.0":{"name":"@aituber-onair/chat","version":"0.45.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.45.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"ec349d9e73b1f3eb6bce9ae69c4339dc083f01d3","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.45.0.tgz","fileCount":637,"integrity":"sha512-tco2ErLOam31K6yVmpRMyl43dTVDcAeLCaHtUHBTWtBLH5Qog+IE92LNj7TuhyuDuEgANppQIVuvzmTDiJ3kxA==","signatures":[{"sig":"MEUCIQDW84rjW064OzYruQjCubwtLUMmS5Kkqd/GgBVXgKvBbAIgW8ZoFVFCSt9IkDbshmde835rQ/jaIgFkR3MVdPvaj8c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1535605},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"3ac341d5ea64a3dcc93600539f03f0ca6684c823","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.45.0_1783594509908_0.1284646109326797","host":"s3://npm-registry-packages-npm-production"}},"0.46.0":{"name":"@aituber-onair/chat","version":"0.46.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.46.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"72273bd39195bec61e7e502bcdc163ce85d7a511","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.46.0.tgz","fileCount":637,"integrity":"sha512-utUgEIWMOF1CabgQmY5MRLaSTZ3W2R1pcgrb2i8HzPIkJTfU/ksV39p+5QyMz1dmZk4UqRnarbws3pRPmDAvYA==","signatures":[{"sig":"MEUCIGP9xPDQcaBMKup3n5L7zNyqTLIFFVybaW2xXVBLHuKwAiEAnzI82ipEx/EROotX4OHESrklQhHNa6G/u2Y0Ssg6N4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1544390},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"1b77f0f56417db1b1c1e5047be5adb6c6159ace2","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.46.0_1783722965604_0.015190142538376472","host":"s3://npm-registry-packages-npm-production"}},"0.47.0":{"name":"@aituber-onair/chat","version":"0.47.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.47.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"c5824f4bd7c6c6baec5689dcaa49eac1f55d12b2","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.47.0.tgz","fileCount":637,"integrity":"sha512-tzpG6Vl38QarlJ0o/fFYiVTIhcmJzIGilcglGYsLdccAHLwz5Qo/5zEuuVbHtaPDNUuaMNbOU5NlmPwMS19xtw==","signatures":[{"sig":"MEQCIGz2erjCRQAyg0d/T1A/1y9A16nU3uGqLn7zEAikJlTdAiAqe/aBr9kSkSFee5CMLGWcfUkVQiC6grW6UZxvFXcVLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1548778},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"8878e8581218c9c16cdc9a80c34ac7dc93808a43","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.47.0_1784254117182_0.7262122672224429","host":"s3://npm-registry-packages-npm-production"}},"0.48.0":{"name":"@aituber-onair/chat","version":"0.48.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.48.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"d857971616376efca80dc4e7026e4ac1075cb983","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.48.0.tgz","fileCount":637,"integrity":"sha512-ewEN23gLEhEezIhlunLJegw9eOnxVLw6zQmiS2EcGa6py++UeLprKxEWJcrRhN2COPvSpzrbvzlaaJVLsLvEJQ==","signatures":[{"sig":"MEUCIDAuO05XvI7Jz5w07gaYn5pTr9PXd85dybcKwMcSj2SuAiEApK0Wo0N7Yk/piaYAem0Q7q778OaiM8zHFQvMJs6gjQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1602897},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"498b234a18638183332e192ea74144786c4da54f","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.48.0_1784707660838_0.5461190548015427","host":"s3://npm-registry-packages-npm-production"}},"0.49.0":{"name":"@aituber-onair/chat","version":"0.49.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.49.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"11e14b45d8732cede32963ede94ea899d7533342","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.49.0.tgz","fileCount":637,"integrity":"sha512-JYq+Q3ro5RszknpnJxZCF0zTLJEZr7pErwHgm4dxgzqG0otEweWDREtONgIL05GgXRa7N/JcdHBl6Xhd8l5ebQ==","signatures":[{"sig":"MEQCIFSJn3XmCbK3rF8/MwvccSWqKA5l01d47FYgl7PIiGSvAiB+iFtMzEHums427UINdQNVMBA5RBKsAufgURWJsJ77wQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1686767},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"876d300e531860ef3dea791bc775b5fb11b528e5","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.49.0_1784962546111_0.6853320898879043","host":"s3://npm-registry-packages-npm-production"}},"0.50.0":{"name":"@aituber-onair/chat","version":"0.50.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.50.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"ee54209085b8b109291d17411f5f314d177bc01c","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.50.0.tgz","fileCount":637,"integrity":"sha512-qLz6zqmcShOPnz0HTwI7PjeHsCx7N7UuztBgV3JzDwzMTM9b6g0ujSSuay4ciy+qF0MlZywpHMHlb+Rog2WqLA==","signatures":[{"sig":"MEYCIQDOaEWi4+iyfWtRiszLVon/uGWDEUJAKwC3EfB4EVUNBAIhAO8ebZhuPL5yC+dcK+POlVnP2HE8aZhxLFkRBForDJP8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1719234},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"338a3c6278f99b7e09797c6eec778dba59ae286e","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.50.0_1785645791121_0.34730441721296","host":"s3://npm-registry-packages-npm-production"}},"0.51.0":{"name":"@aituber-onair/chat","version":"0.51.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.51.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"82ab9df77f9eb4e34aef56682827e8312941e97a","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.51.0.tgz","fileCount":645,"integrity":"sha512-acSWa428aJKacMBQpQ5UdPKvEvTJkGZ0VSKm8CMt8JbuKJkDsfcBb3t+qQOOwH9c6GGPcDy7hS0jM4asbPNBPg==","signatures":[{"sig":"MEQCIEDlQCfCwO//wIgadFqrxbxnFhVvB3vVQspWMC8ibIYhAiBFEnO3sJdxW8sBPK8+6I4h8o+tkFo7myR0p5Uzu8uCPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1768482},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./backend":{"types":"./dist/cjs/backend.d.ts","import":"./dist/cjs/backend.js","require":"./dist/cjs/backend.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"58a524208fa46b5a50496f02647cd44cbf87b3cb","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.51.0_1786588243194_0.3766640931546532","host":"s3://npm-registry-packages-npm-production"}},"0.52.0":{"name":"@aituber-onair/chat","version":"0.52.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.52.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"1714f73ec05997c731da758422c6e345bd68f09b","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.52.0.tgz","fileCount":645,"integrity":"sha512-Wh2AFilXIRmPVtVbXiinAQWQN/1K6lGdsuSQotKeUjS12jBIVNTqd1df1dzbHURXv4vf8sOhd2b/HL84XJhPTQ==","signatures":[{"sig":"MEYCIQCO5z21TMMPOUrCDYzTrdatzHTBCG+TBYXPJM8Dm5XUagIhAPgNz9deUng6OAKIxXIlvRrcZMN/s6PdaUj8gJ6NeV73","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1808339},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./backend":{"types":"./dist/cjs/backend.d.ts","import":"./dist/cjs/backend.js","require":"./dist/cjs/backend.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"f68075a6174c474882bd1ccf69145bcebee60e59","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.52.0_1787098753664_0.767424790600542","host":"s3://npm-registry-packages-npm-production"}},"0.53.0":{"name":"@aituber-onair/chat","version":"0.53.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.53.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"279588b99aaf5235652186119da1af5dbda56061","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.53.0.tgz","fileCount":645,"integrity":"sha512-yv8ZYiE2WfRhnZofx2MGtw/PStb05M6plqA82s/1Z0UHmNLXjZ203QaQ+ErNVO0iOBXUwzplGlErNmer4yBzzw==","signatures":[{"sig":"MEQCIA7ccueQwCfxa3At7EP1EifAWfO761uFmJL1zgEj1IwbAiBHtsAJHVPhu6F7Mv2vMRTI7UmFitTRBp2tkR5XhTn74g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1847617},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./backend":{"types":"./dist/cjs/backend.d.ts","import":"./dist/cjs/backend.js","require":"./dist/cjs/backend.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"e270b17b4294596ee3e42f54a9cfe529bf4113f0","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.53.0_1788233636323_0.8850276695304593","host":"s3://npm-registry-packages-npm-production"}},"0.54.0":{"name":"@aituber-onair/chat","version":"0.54.0","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"url":"https://github.com/shinshin86","name":"shinshin86"},"license":"MIT","_id":"@aituber-onair/chat@0.54.0","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"dist":{"shasum":"81f3500bb89228c97e147de1a7bb2a6d064f9bae","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.54.0.tgz","fileCount":645,"integrity":"sha512-v6VqDHp1jYbA4q05rqIY9LakYU997+4/6Xp50VJ+6Lx9OKsFdCEyiEou4QK0OHaXtn+kPW0nxprA6yg/KaYWCw==","signatures":[{"sig":"MEUCIQCXO5MRg3uF2/OOYxNc+UpGrI4w+6d3uoxUQez//rsQAQIgMpE+gB2/K3DcM6UjAMa/7hhekPnnciTAlaqAfYXdVDg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1848063},"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","unpkg":"dist/umd/aituber-onair-chat.min.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./umd":"./dist/umd/aituber-onair-chat.js","./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./backend":{"types":"./dist/cjs/backend.d.ts","import":"./dist/cjs/backend.js","require":"./dist/cjs/backend.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*"},"gitHead":"108bf6c5e4708f9fef392733bcb7f85f84e333f5","scripts":{"fmt":"biome format . --write","lint":"biome lint .","test":"npm run typecheck && vitest run","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rm -rf dist","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","fmt:check":"biome format .","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","test:example:character-agent":"vitest run examples/character-agent/tests","openai-compatible:mock-server":"node examples/mock-openai-server/server.js"},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"jsdelivr":"dist/umd/aituber-onair-chat.min.js","_npmVersion":"10.8.2","description":"Chat and LLM API integration library for AITuber OnAir","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","vitest":"^1.3.1","typescript":"^5.0.0","@types/node":"^18.15.0","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/chat_0.54.0_1788387370718_0.9817611673353555","host":"s3://npm-registry-packages-npm-production"}},"0.55.0":{"name":"@aituber-onair/chat","version":"0.55.0","description":"Chat and LLM API integration library for AITuber OnAir","main":"dist/cjs/index.js","module":"dist/esm/index.js","types":"dist/cjs/index.d.ts","exports":{".":{"types":"./dist/cjs/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./agent":{"types":"./dist/cjs/agent.d.ts","import":"./dist/esm/agent.js","require":"./dist/cjs/agent.js"},"./backend":{"types":"./dist/cjs/backend.d.ts","import":"./dist/cjs/backend.js","require":"./dist/cjs/backend.js"},"./dist/cjs/*":"./dist/cjs/*","./dist/esm/*":"./dist/esm/*","./umd":"./dist/umd/aituber-onair-chat.js"},"scripts":{"build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","build:cjs":"tsc --project tsconfig.cjs.json","build:esm":"tsc --project tsconfig.esm.json","build:umd":"npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.js && npx tsup src/index.ts --format iife --global-name AITuberOnAirChat --minify --out-dir dist/umd && mv dist/umd/index.global.js dist/umd/aituber-onair-chat.min.js","clean":"rm -rf dist","typecheck":"tsc --noEmit","test":"npm run typecheck && vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","test:example:character-agent":"vitest run examples/character-agent/tests","example:character-agent":"npm --prefix examples/character-agent run build && npm --prefix examples/character-agent run start","openai-compatible:probe":"node examples/compat-probe/index.js","openai-compatible:mock-server":"node examples/mock-openai-server/server.js","fmt":"biome format . --write","fmt:check":"biome format .","lint":"biome lint .","prepublishOnly":"npm run build"},"keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"author":{"name":"shinshin86","url":"https://github.com/shinshin86"},"license":"MIT","devDependencies":{"@biomejs/biome":"1.9.4","@types/node":"^18.15.0","@vitest/coverage-v8":"^1.3.1","tsup":"^8.0.1","typescript":"^5.0.0","vitest":"^1.3.1"},"publishConfig":{"access":"public"},"unpkg":"dist/umd/aituber-onair-chat.min.js","jsdelivr":"dist/umd/aituber-onair-chat.min.js","sideEffects":false,"_id":"@aituber-onair/chat@0.55.0","gitHead":"beb838e7da91b6b3ad9bdd0a6f21ec5b132e8c3d","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-kv6AaIAUI7nydrODgTFb3YhS9E8xecDARZbbWrmpmT4NBdaQGdyjuy0DBV4frB7rlOgZja+h2nJzxvUveWsCaA==","shasum":"887e8aecaf983b4ab82952140b2e8671c3018be1","tarball":"https://registry.npmjs.org/@aituber-onair/chat/-/chat-0.55.0.tgz","fileCount":645,"unpackedSize":1889569,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFaHhQVYCEEcWzSMW+ZUaKPAWfZSthIyuGCcHUcqUsN8AiEAiEW5lJn8oipSSRcT3vuOx4Wk2oHgHn82A/iXlokr1gg="}]},"_npmUser":{"name":"shinshin86","email":"shinshin86npm@gmail.com"},"directories":{},"maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chat_0.55.0_1789173422439_0.8936258783053388"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-06T10:21:49.068Z","modified":"2026-09-12T00:37:02.774Z","0.1.0":"2025-08-06T10:21:49.432Z","0.2.0":"2025-08-11T08:52:09.474Z","0.2.1":"2025-08-12T07:33:50.230Z","0.3.0":"2025-08-23T03:04:21.877Z","0.4.0":"2025-09-05T09:10:36.426Z","0.5.0":"2025-11-13T11:49:01.023Z","0.6.0":"2025-11-15T14:12:38.248Z","0.7.0":"2025-12-15T09:40:07.411Z","0.8.0":"2026-01-18T02:56:28.757Z","0.9.0":"2026-01-22T08:52:32.378Z","0.10.0":"2026-01-30T00:20:35.865Z","0.11.0":"2026-02-07T02:47:15.452Z","0.11.1":"2026-02-07T14:31:48.901Z","0.12.0":"2026-02-11T15:06:00.958Z","0.13.0":"2026-02-17T22:58:58.241Z","0.14.0":"2026-02-19T07:10:33.087Z","0.15.0":"2026-02-19T23:46:16.538Z","0.16.0":"2026-02-22T22:49:08.978Z","0.17.0":"2026-02-23T09:58:57.084Z","0.18.0":"2026-03-04T11:30:22.763Z","0.19.0":"2026-03-05T23:17:08.013Z","0.20.0":"2026-03-17T09:04:20.317Z","0.21.0":"2026-03-18T08:57:58.812Z","0.21.1":"2026-03-18T22:15:40.499Z","0.21.2":"2026-03-26T09:12:50.997Z","0.22.0":"2026-03-29T23:00:20.307Z","0.23.0":"2026-04-05T04:55:11.164Z","0.24.0":"2026-04-07T13:40:33.121Z","0.24.1":"2026-04-07T21:29:30.879Z","0.25.0":"2026-04-08T00:14:56.445Z","0.25.1":"2026-04-12T03:36:09.653Z","0.26.0":"2026-04-16T21:32:45.068Z","0.27.0":"2026-04-21T13:54:50.897Z","0.28.0":"2026-04-25T06:12:39.036Z","0.29.0":"2026-04-29T13:11:32.432Z","0.30.0":"2026-05-08T09:43:04.800Z","0.31.0":"2026-05-10T00:58:44.487Z","0.32.0":"2026-05-14T07:30:08.768Z","0.33.0":"2026-05-14T23:09:31.599Z","0.34.0":"2026-05-15T22:06:15.918Z","0.34.1":"2026-05-16T12:57:11.457Z","0.35.0":"2026-05-20T05:32:01.455Z","0.36.0":"2026-05-29T03:11:59.077Z","0.37.0":"2026-05-31T12:29:27.487Z","0.38.0":"2026-06-10T06:11:23.410Z","0.39.0":"2026-06-14T04:16:03.501Z","0.40.0":"2026-06-17T13:21:58.576Z","0.41.0":"2026-06-22T08:02:30.564Z","0.42.0":"2026-06-22T12:47:56.365Z","0.43.0":"2026-06-27T06:31:36.861Z","0.44.0":"2026-06-30T22:02:25.682Z","0.45.0":"2026-07-09T10:55:10.070Z","0.46.0":"2026-07-10T22:36:05.832Z","0.47.0":"2026-07-17T02:08:37.351Z","0.48.0":"2026-07-22T08:07:41.021Z","0.49.0":"2026-07-25T06:55:46.303Z","0.50.0":"2026-08-02T04:43:11.302Z","0.51.0":"2026-08-13T02:30:43.360Z","0.52.0":"2026-08-19T00:19:13.824Z","0.53.0":"2026-09-01T03:33:56.778Z","0.54.0":"2026-09-02T22:16:10.874Z","0.55.0":"2026-09-12T00:37:02.596Z"},"author":{"name":"shinshin86","url":"https://github.com/shinshin86"},"license":"MIT","keywords":["aituber","vtuber","ai","chat","llm","openai","claude","gemini"],"description":"Chat and LLM API integration library for AITuber OnAir","maintainers":[{"name":"shinshin86","email":"shinshin86npm@gmail.com"}],"readme":"# @aituber-onair/chat\n\n![@aituber-onair/chat logo](https://github.com/shinshin86/aituber-onair/raw/main/packages/chat/images/aituber-onair-chat.png)\n\nChat and LLM API integration library for AITuber OnAir. This package provides a unified interface for interacting with various AI chat providers including OpenAI, OpenAI-compatible, Claude, Gemini, Gemini Nano (Chrome built-in AI), OpenRouter, Z.ai, xAI, Kimi, DeepSeek, Mistral, Sakana AI, PLaMo, and Agent SDK providers.\n\n## Features\n\n- 🤖 **Multiple AI Provider Support**: OpenAI, OpenAI-compatible, Claude (Anthropic), Google Gemini, Gemini Nano (Chrome built-in AI), OpenRouter, Z.ai, xAI, Kimi, DeepSeek, Mistral, Sakana AI, PLaMo, and Agent SDK providers\n- 🔄 **Unified Interface**: Consistent API across different providers\n- 🛠️ **Tool/Function Calling**: Support for AI function calling with automatic iteration\n- 💬 **Streaming Responses**: Real-time streaming chat responses\n- 🖼️ **Vision Support**: Process images with vision-enabled models\n- 📝 **Emotion Detection**: Extract emotions from AI responses\n- 🎯 **Response Length Control**: Configure response lengths with presets or custom token limits\n- 🔌 **Model Context Protocol (MCP)**: Support for MCP servers\n- 🧩 **Agent SDK Providers**: Optional `@aituber-onair/chat/agent` entry for agent SDK providers without adding agent SDK packages to the default install\n\n## Installation\n\n```bash\nnpm install @aituber-onair/chat\n```\n\n## UMD Build (Browser/GAS)\n\nThis package ships ESM/CJS by default. For environments without bundlers (browsers via script tag, Google Apps Script), a UMD/IIFE bundle is available.\n\n- Global name: `AITuberOnAirChat`\n- Files: `dist/umd/aituber-onair-chat.js`, `dist/umd/aituber-onair-chat.min.js`\n\nBuild UMD locally (in the monorepo):\n\n```bash\n# Install deps at repo root\nnpm ci\n\n# Build for chat only\nnpm -w @aituber-onair/chat run build\n```\n\n### Browser via UMD\n\n```html\n<!doctype html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <script src=\"/dist/umd/aituber-onair-chat.min.js\"></script>\n  </head>\n  <body>\n    <script>\n      const chat = AITuberOnAirChat.ChatServiceFactory.createChatService('openai', {\n        apiKey: 'your-api-key'\n      });\n      // Streaming is available in browsers\n    </script>\n  </body>\n  </html>\n```\n\n### Google Apps Script (GAS)\n\nGAS does not support streaming or the Fetch API natively. Use the provided adapter and the non‑streaming helper.\n\nSteps:\n- Build UMD and copy `dist/umd/aituber-onair-chat.min.js` into your GAS project as a script file (e.g., `lib.gs`). With clasp, place it under the project folder and push.\n- Create another file (e.g., `main.js`) and use the following snippet:\n\n```javascript\nasync function testChat() {\n  // Install fetch backed by UrlFetchApp\n  AITuberOnAirChat.installGASFetch();\n\n  const chat = AITuberOnAirChat.ChatServiceFactory.createChatService('openai', {\n    apiKey: PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY')\n  });\n\n  const text = await AITuberOnAirChat.runOnceText(chat, [\n    { role: 'user', content: 'Hello!' }\n  ]);\n\n  Logger.log(text);\n}\n```\n\nNotes:\n- GAS runtime: V8. No streaming; prefer `chatOnce(..., false)` or `runOnceText`.\n- Set your API key in Script Properties: `OPENAI_API_KEY`.\n- See `packages/chat/examples/gas-basic` for a working example. The Apps Script manifest (`appsscript.json`) is optional; modern projects default to V8. Add one only if you need custom settings (e.g., time zone).\n\n## Agent SDK Providers\n\nFor agent SDKs such as Codex SDK, Claude Agent SDK, and Copilot SDK, use the\nseparate `@aituber-onair/chat/agent` entry point:\n\n```typescript\nimport { createAgentChatService } from '@aituber-onair/chat/agent';\n```\n\nThis entry is not part of the browser/GAS UMD build. It loads agent SDK packages\ndynamically, so install only the agent SDK package used by your JavaScript runtime application:\n\n```bash\nnpm install @aituber-onair/chat @openai/codex-sdk\n# or\nnpm install @aituber-onair/chat @anthropic-ai/claude-agent-sdk\n# or\nnpm install @aituber-onair/chat @github/copilot-sdk\n```\n\nMinimal Codex SDK example:\n\n```typescript\nimport { createAgentChatService } from '@aituber-onair/chat/agent';\n\nconst chatService = createAgentChatService('codex-sdk', {\n  workingDirectory: process.cwd(),\n  skipGitRepoCheck: true,\n});\n\nconst messages = [\n  {\n    role: 'system',\n    content:\n      'You are a friendly AI avatar for a live chat. Reply warmly and concisely.',\n  },\n  { role: 'user', content: 'I am working on a TypeScript library tonight.' },\n  {\n    role: 'assistant',\n    content: 'Nice. I can keep the conversation light while you work.',\n  },\n  {\n    role: 'user',\n    content: 'What drink would you recommend for a late-night coding session?',\n  },\n];\n\nconst response = await chatService.chatOnce(messages, false);\n\nconsole.log(response);\n```\n\nFor Claude Agent SDK:\n\n```typescript\nimport { createAgentChatService } from '@aituber-onair/chat/agent';\n\nconst chatService = createAgentChatService('claude-agent-sdk', {\n  workingDirectory: process.cwd(),\n  maxTurns: 1,\n});\n\nconst messages = [\n  {\n    role: 'system',\n    content:\n      'You are a friendly AI avatar for a live chat. Reply warmly and concisely.',\n  },\n  { role: 'user', content: 'I am working on a TypeScript library tonight.' },\n  {\n    role: 'assistant',\n    content: 'Nice. I can keep the conversation light while you work.',\n  },\n  {\n    role: 'user',\n    content: 'What drink would you recommend for a late-night coding session?',\n  },\n];\n\nconst response = await chatService.chatOnce(messages, false);\n\nconsole.log(response);\n```\n\nClaude Agent SDK is run as a text-chat provider with built-in tools disabled by\ndefault. Eligible Claude subscription plans can use Agent SDK monthly credits\nstarting June 15, 2026; API-key based Developer Platform usage remains\npay-as-you-go.\n\nFor Copilot SDK:\n\n```typescript\nimport { createAgentChatService } from '@aituber-onair/chat/agent';\n\nconst chatService = createAgentChatService('copilot-sdk', {\n  model: 'gpt-4.1',\n});\n\nconst messages = [\n  {\n    role: 'system',\n    content:\n      'You are a friendly AI avatar for a live chat. Reply warmly and concisely.',\n  },\n  { role: 'user', content: 'I am working on a TypeScript library tonight.' },\n  {\n    role: 'assistant',\n    content: 'Nice. I can keep the conversation light while you work.',\n  },\n  {\n    role: 'user',\n    content: 'What drink would you recommend for a late-night coding session?',\n  },\n];\n\nconst response = await chatService.chatOnce(messages, false);\n\nconsole.log(response);\n```\n\nCopilot SDK requires a permission request handler when creating a session. This\npackage defaults to denying SDK-managed tool execution for safety. If your\napplication wants to allow it, pass `onPermissionRequest` explicitly.\n\n```typescript\nconst chatService = createAgentChatService('copilot-sdk', {\n  model: 'gpt-4.1',\n  onPermissionRequest: () => ({ kind: 'approve-once' }),\n});\n```\n\nAuthenticate the corresponding SDK locally before using these providers. If the\nSDK package is missing or authentication is not ready, the provider throws an\nerror at runtime with the original SDK error details.\n\n## Usage\n\n### Basic Chat\n\n```typescript\nimport { ChatServiceFactory, ChatServiceOptions } from '@aituber-onair/chat';\n\n// Create a chat service\nconst options: ChatServiceOptions = {\n  apiKey: 'your-api-key',\n  model: 'gpt-4' // optional, uses provider default if not specified\n};\n\nconst chatService = ChatServiceFactory.createChatService('openai', options);\n\n// Process a simple chat\nconst messages = [\n  { role: 'system', content: 'You are a helpful assistant.' },\n  { role: 'user', content: 'Hello! How are you?' }\n];\n\nawait chatService.processChat(\n  messages,\n  (partialText) => {\n    // Handle streaming response\n    console.log('Partial:', partialText);\n  },\n  async (completeText) => {\n    // Handle complete response\n    console.log('Complete:', completeText);\n  }\n);\n```\n\n### Provider-Specific Usage\n\n#### OpenAI\n\n`gpt-6-astra` (`MODEL_GPT_6_ASTRA`) is an explicit option with image input and streaming. The package routes it to Responses, which is required for tool calling. Reasoning supports `low` (package default), `medium`, `high`, `xhigh`, and `max`; `none`/`minimal` normalize to `low`. Existing `gpt5Preset` and `gpt5EndpointPreference` option names remain for compatibility, but Astra uses Responses at the standard endpoint. [API guide](https://developers.openai.com/api/docs/guides/latest-model).\n\n```typescript\nconst openaiService = ChatServiceFactory.createChatService('openai', {\n  apiKey: process.env.OPENAI_API_KEY,\n  model: 'gpt-5.4-pro',\n  gpt5EndpointPreference: 'responses', // Required for GPT-5.4 Pro\n  reasoning_effort: 'medium',\n  verbosity: 'medium'\n});\n```\n\nFor Chat Completions, use:\n\n```typescript\nendpoint: 'https://api.openai.com/v1/chat/completions';\n```\n\n##### OpenAI-Compatible Local LLM Quick Start\n\n```typescript\nconst localCompatibleService = ChatServiceFactory.createChatService(\n  'openai-compatible',\n  {\n    apiKey: process.env.OPENAI_COMPAT_API_KEY || 'dummy-key',\n    model: process.env.OPENAI_COMPAT_MODEL || 'your-local-model',\n    endpoint:\n      process.env.OPENAI_COMPAT_ENDPOINT ||\n      'http://127.0.0.1:18080/v1/chat/completions',\n  },\n);\n```\n\nNotes:\n- The `endpoint` must be a full URL (not shorthand like `'responses'`).\n- The target server must satisfy the OpenAI-compatible API contract.\n- This package does not depend on any specific local LLM product.\n\n#### Agent SDK Providers\n\n`@aituber-onair/chat/agent` exposes experimental providers for agent SDKs such\nas Codex SDK, Claude Agent SDK, and Copilot SDK. These providers are not\nincluded in the browser/GAS UMD entry point and do not use API keys.\n\nInstall only the agent SDK package you actually use in your JavaScript runtime application:\n\n```bash\nnpm install @aituber-onair/chat @openai/codex-sdk\n# or\nnpm install @aituber-onair/chat @anthropic-ai/claude-agent-sdk\n# or\nnpm install @aituber-onair/chat @github/copilot-sdk\n```\n\n`@openai/codex-sdk`, `@anthropic-ai/claude-agent-sdk`, and\n`@github/copilot-sdk` are not dependencies of `@aituber-onair/chat`. They are\nloaded dynamically, so users who only use the normal API providers do not\ninstall these agent SDK packages.\n\n```typescript\nimport { createAgentChatService } from '@aituber-onair/chat/agent';\n\nconst codexService = createAgentChatService('codex-sdk', {\n  workingDirectory: process.cwd(),\n  skipGitRepoCheck: true,\n});\n\nconst messages = [\n  {\n    role: 'system',\n    content:\n      'You are a friendly AI avatar for a live chat. Keep a natural conversation going.',\n  },\n  {\n    role: 'user',\n    content: 'I am thinking about how to keep a side project moving.',\n  },\n  {\n    role: 'assistant',\n    content: 'Let us make it feel manageable and easy to restart.',\n  },\n  { role: 'user', content: 'What should I work on first today?' },\n];\n\nconst result = await codexService.chatOnce(messages, false, (text) =>\n  process.stdout.write(text),\n);\n```\n\nFor Claude Agent SDK, use `claude-agent-sdk`.\n\n```typescript\nimport { createAgentChatService } from '@aituber-onair/chat/agent';\n\nconst claudeService = createAgentChatService('claude-agent-sdk', {\n  workingDirectory: process.cwd(),\n  maxTurns: 1,\n});\n\nconst messages = [\n  {\n    role: 'system',\n    content:\n      'You are a friendly AI avatar for a live chat. Keep a natural conversation going.',\n  },\n  {\n    role: 'user',\n    content: 'I am thinking about how to keep a side project moving.',\n  },\n  {\n    role: 'assistant',\n    content: 'Let us make it feel manageable and easy to restart.',\n  },\n  { role: 'user', content: 'What should I work on first today?' },\n];\n\nconst result = await claudeService.chatOnce(messages, false, (text) =>\n  process.stdout.write(text),\n);\n```\n\nClaude Agent SDK is configured with `tools: []`, `permissionMode: 'dontAsk'`,\nand `settingSources: []` by default so this provider behaves as text chat and\ndoes not load Claude Code project/user settings unless the implementation is\nexpanded later.\n\nFor Copilot SDK, use `copilot-sdk`.\n\n```typescript\nimport { createAgentChatService } from '@aituber-onair/chat/agent';\n\nconst copilotService = createAgentChatService('copilot-sdk', {\n  model: 'gpt-4.1',\n});\n\nconst messages = [\n  {\n    role: 'system',\n    content:\n      'You are a friendly AI avatar for a live chat. Keep a natural conversation going.',\n  },\n  {\n    role: 'user',\n    content: 'I am thinking about how to keep a side project moving.',\n  },\n  {\n    role: 'assistant',\n    content: 'Let us make it feel manageable and easy to restart.',\n  },\n  { role: 'user', content: 'What should I work on first today?' },\n];\n\nconst result = await copilotService.chatOnce(messages, false, (text) =>\n  process.stdout.write(text),\n);\n```\n\nCopilot SDK requires a permission request handler when creating a session. This\npackage defaults to denying SDK-managed tool execution for safety. If you want\nto allow it, pass `onPermissionRequest` from your application. For example, to\nallow all requests:\n\n```typescript\nconst copilotService = createAgentChatService('copilot-sdk', {\n  model: 'gpt-4.1',\n  onPermissionRequest: () => ({ kind: 'approve-once' }),\n});\n```\n\nAvailable providers:\n- `codex-sdk`: requires `@openai/codex-sdk` and Codex authentication.\n- `claude-agent-sdk`: requires `@anthropic-ai/claude-agent-sdk` and Claude Agent SDK authentication.\n- `copilot-sdk`: requires `@github/copilot-sdk` and GitHub Copilot authentication.\n\nCurrent limitations:\n- Text chat only.\n- Vision chat, tools, and MCP servers are intentionally unsupported for now.\n- If an agent SDK package is missing or local authentication is not ready, the\n  provider throws an error at runtime with the original SDK error details.\n\n#### OpenAI-Compatible (Local/Self-Hosted)\n\nUse `openai-compatible` when you want to clearly separate official OpenAI\nusage from compatible endpoint usage.\n\n```typescript\nconst compatibleService = ChatServiceFactory.createChatService(\n  'openai-compatible',\n  {\n    apiKey: process.env.OPENAI_COMPAT_API_KEY || 'dummy-key',\n    endpoint: 'http://127.0.0.1:18080/v1/chat/completions',\n    model: 'your-local-model',\n  },\n);\n```\n\nNotes:\n- `openai-compatible` requires both `endpoint` and `model`.\n- `apiKey` is optional for `openai-compatible`.\n- `openai-compatible` does not support `mcpServers`.\n- Vision support for `openai-compatible` is treated as `unknown`.\n  Image requests are allowed, but unsupported endpoints or models will fail\n  at runtime.\n- Existing `openai` provider behavior is unchanged.\n\n`reasoning_effort` options differ per model:\n- `gpt-5.6` / `gpt-5.6-sol` / `gpt-5.6-terra` / `gpt-5.6-luna`:\n  `'none' | 'low' | 'medium' | 'high' | 'xhigh' | 'max'`\n- `gpt-5.4-pro`: `'medium' | 'high' | 'xhigh'` (Responses API only)\n- `gpt-5.5`: `'none' | 'low' | 'medium' | 'high' | 'xhigh'`\n- `gpt-5.4`: `'none' | 'low' | 'medium' | 'high' | 'xhigh'`\n- `gpt-5.4-mini` / `gpt-5.4-nano`: `'none' | 'low' | 'medium' | 'high' | 'xhigh'`\n- `gpt-5.1`: `'none' | 'low' | 'medium' | 'high'`\n- `gpt-5` / `gpt-5-mini` / `gpt-5-nano`: `'minimal' | 'low' | 'medium' | 'high'`\n\nDefaults and normalization in this package:\n- Models that support `'none'` (`gpt-5.1`, `gpt-5.4`, `gpt-5.4-mini`,\n  `gpt-5.4-nano`, `gpt-5.5`, and the GPT-5.6 family) default to `'none'`\n  for fast chat responses.\n  Note that OpenAI's own default for some of these models is `'medium'`;\n  this package intentionally prioritizes low latency.\n- Earlier GPT-5 models (`gpt-5`, `gpt-5-mini`, `gpt-5-nano`) use\n  `'minimal'` as the default reasoning effort for fast chat responses.\n- `gpt-5.4-pro` defaults to `'medium'`, which is its lowest supported\n  reasoning effort.\n- Values a model does not support are rounded to the nearest supported\n  level instead of being reset (e.g. `'minimal'` on `gpt-5.4-nano`\n  resolves to `'none'`, `'none'` on `gpt-5-nano` resolves to `'minimal'`,\n  and `'xhigh'` on `gpt-5.1` resolves to `'high'`).\n\n##### GPT-5 Presets and Low-Latency Chat (AITuber-style)\n\nInstead of tuning `reasoning_effort` and `verbosity` per model, you can set\n`gpt5Preset`:\n\n- `casual` – fastest responses (`reasoning_effort: 'minimal'`,\n  `verbosity: 'low'`). On models without `'minimal'` this resolves to the\n  lowest supported effort (`'none'` on the GPT-5.1/5.4/5.5/5.6 family,\n  `'medium'` on `gpt-5.4-pro`).\n- `balanced` – `reasoning_effort: 'medium'`, `verbosity: 'medium'`.\n- `expert` – `reasoning_effort: 'high'`, `verbosity: 'high'`.\n\nRecommended settings for real-time character chat (AITuber-style), where\ntime-to-first-token matters more than deep reasoning:\n\n```typescript\nconst aituberChatService = ChatServiceFactory.createChatService('openai', {\n  apiKey: process.env.OPENAI_API_KEY,\n  model: 'gpt-5.4-nano',\n  gpt5Preset: 'casual', // resolves to reasoning_effort 'none' on this model\n  responseLength: 'veryShort', // or 'short' for slightly longer replies\n});\n```\n\nCaveats:\n- Low reasoning effort trades answer quality on complex questions for\n  speed. For tool/function calling or MCP-heavy flows, prefer `balanced`\n  or higher.\n- OpenAI does not support function tools combined with `reasoning_effort`\n  on the Chat Completions API for some GPT-5.4 models. When you use tools\n  with reasoning settings, set `gpt5EndpointPreference: 'responses'`.\n\n**Meet the GPT-5 family**\n\n- `gpt-5.6` / `gpt-5.6-sol` – The GPT-5.6 flagship tier for complex professional work. `gpt-5.6` is an alias that routes to Sol.\n- `gpt-5.6-terra` – Balances GPT-5.6 intelligence and cost.\n- `gpt-5.6-luna` – GPT-5.6 tier for cost-sensitive, high-volume workloads.\n- `gpt-5.5` – Previous frontier model for complex professional work, with text and image input support and both Chat Completions and Responses API support.\n- `gpt-5.4-pro` – Highest-tier GPT-5.4 model. Use with Responses API only.\n- `gpt-5.4` – Previous GPT-5 generation model optimized for stronger coding, instruction following, and long-context agentic work.\n- `gpt-5.4-mini` – Faster GPT-5.4-class small model for coding, tool use, and multimodal workloads.\n- `gpt-5.4-nano` – Lowest-cost GPT-5.4-class model for simpler high-volume tasks and lightweight subagents.\n- `gpt-5.1` – Complex reasoning, broad world knowledge, and code-heavy or multi-step agentic workflows.\n- `gpt-5` – Previous flagship, still available for backward compatibility but superseded by GPT-5.1.\n- `gpt-5-mini` – Cost-optimized reasoning/chat model that balances speed, cost, and capability.\n- `gpt-5-nano` – High-throughput option best suited for simple instruction-following or classification runs.\n\n`gpt-5.5-pro` is not included in the supported model list because OpenAI\ndocuments it as non-streaming, while this package's standard chat flow expects\nstreaming support.\n\n### OpenAI-Compatible Support Scope\n\nRequired:\n- Non-stream responses (`stream: false`)\n- Stream responses (`stream: true`, SSE)\n- Conversation history continuity (`messages`)\n- Error handling (especially 4xx and timeout surfaces)\n\nBest effort:\n- tools/function calling\n- vision input support (runtime-validated for `openai-compatible`)\n- strict JSON mode compatibility across implementations\n\n### OpenAI-Compatible Troubleshooting\n\n- CORS: In browser environments, ensure the compatible server returns\n  `Access-Control-Allow-Origin` and `Access-Control-Allow-Headers`.\n- Authorization: This package sends `Authorization: Bearer <apiKey>` when\n  `apiKey` is provided. If omitted, no Authorization header is sent.\n  Confirm the expected token format on the server side.\n- Model name: Compatible servers often expose different model IDs.\n  Confirm the exact model name accepted by your endpoint.\n- Vision: `openai-compatible` does not pre-validate vision capability.\n  If an image request fails, confirm that both the endpoint and selected model\n  actually support image input.\n- Stream compatibility: `stream: true` assumes OpenAI-compatible SSE chunks\n  (`data: { ... }` + `data: [DONE]`). If the format differs, streaming parse\n  may fail.\n\n### Compatibility Probe (Automated)\n\nUse `examples/compat-probe` to validate compatibility automatically:\n\n```bash\nnpm -w @aituber-onair/chat run openai-compatible:probe\n```\n\nFor CI/local deterministic runs, pair it with `examples/mock-openai-server`.\n\n#### Claude (Anthropic)\n\n`claude-fable-5-1` (`MODEL_CLAUDE_5_1_FABLE`) is an explicit Messages API option with images, streaming, and automatic tool selection. Adaptive thinking is always on; effort supports `low`, `medium`, `high`, `xhigh`, and `max`. Forced tool selection is not used. Preserve the returned `assistant_message` in continuation history; changing the system prompt, tools, or history preceding signed thinking can cause API rejection. This model requires 30-day data retention. [Migration guide](https://platform.claude.com/docs/en/models/fable-5-1/migration-guide).\n\n```typescript\nconst claudeService = ChatServiceFactory.createChatService('claude', {\n  apiKey: process.env.ANTHROPIC_API_KEY,\n  model: 'claude-opus-5',\n  reasoning_effort: 'low'\n});\n```\n\n`claude-opus-5` is available as an explicit high-capability option and is not\nthe package default. Claude Opus 5 has adaptive thinking enabled by default.\nSupported Claude models accept `reasoning_effort`, which maps to Anthropic's\n`output_config.effort`. The Claude API defaults to `high` when it is omitted:\n\n- Claude Fable 5, Opus 5, Sonnet 5, Opus 4.8, and Opus 4.7:\n  `low`, `medium`, `high`, `xhigh`, or `max`.\n- Claude Opus 4.6 and Sonnet 4.6:\n  `low`, `medium`, `high`, or `max`.\n- Claude Opus 4.5: `low`, `medium`, or `high`.\n\nLower effort prioritizes latency and token efficiency, but does not guarantee\na shorter visible response. Use response-length prompting as well when concise\noutput is required.\nFor multi-turn tool calls, append the returned\n`completion.assistant_message` to history so its provider-native thinking and\ntool-use blocks are preserved.\nClaude refusals are terminal completions rather than tool errors. The returned\ncompletion preserves `finish_reason: 'refusal'` and Anthropic `stop_details`\nwhen supplied, including in streaming `processChat` callbacks.\n\n#### Google Gemini\n\n```typescript\nconst geminiService = ChatServiceFactory.createChatService('gemini', {\n  apiKey: process.env.GOOGLE_API_KEY,\n  model: 'gemini-3.1-flash-lite',\n  reasoning_effort: 'minimal'\n});\n```\n\n`gemini-3.1-flash-lite` remains the default Flash-Lite model.\n`gemini-3.5-flash-lite` is available as the latest stable, low-latency\nFlash-Lite option. `gemini-3.8-flash` is available as the newest explicit stable\nFlash option for low-latency coding, agentic, and multimodal tasks.\n`gemini-3.7-flash` and `gemini-3.6-flash` remain available for compatibility.\nDeprecated\npreview and shutdown-scheduled models such as `gemini-3.1-flash-lite-preview`,\n`gemini-3-pro-preview`, and `gemini-2.5-flash-lite-preview-06-17` remain usable\nby explicit model string for backward compatibility, but are no longer\nadvertised in the standard supported-model list for production use.\n`gemini-3.5-flash` is also available as a stable Flash model.\n\nGemini 3 models accept `reasoning_effort`, which maps to Gemini\n`thinkingConfig.thinkingLevel` while keeping `includeThoughts: false`:\n\n- Gemini 3 models default to their lowest supported effort for low-latency chat.\n- Flash / Flash-Lite models that support `minimal` expose `minimal`, `low`,\n  `medium`, and `high`, and default to `minimal`.\n- Models that do not support `minimal` expose `low`, `medium`, and `high`, and\n  default to `low`. Current instances are Gemini 3.8 Flash, Gemini 3.7 Flash,\n  and Gemini 3 Pro.\n\nThis uses the lowest supported thinking level for chat and reduces the risk of\nhidden thinking exhausting short output limits. Gemini 2.5 uses\n`thinkingBudget` instead, so `reasoning_effort` is intentionally not sent for\nthose models.\n\n#### OpenRouter\n\nThe following explicit options use OpenRouter Chat Completions without changing the provider default. Mercury 2.5 is text-only; the others support image input. This does not add file, audio, or video input support.\n\n| Model ID | Reasoning efforts (package default) |\n| --- | --- |\n| `openai/gpt-6-astra` | max, xhigh, high, medium, low (medium) |\n| `openai/gpt-6-astra-pro` | max, xhigh, high, medium, low (medium) |\n| `anthropic/claude-fable-5.1` | max, xhigh, high, medium, low (high) |\n| `deepseek/deepseek-v4.1-flash` | max, high, low, none (none) |\n| `google/gemini-3.8-flash` | high, medium, low (medium) |\n| `inclusionai/ling-3.0-flash-vl:free` | No effort selector (provider default) |\n| `inception/mercury-2.5` | high, medium, low, none (none) |\n| `nex-agi/nex-n2.5-mini:free` | high, medium, none (none) |\n| `nex-agi/nex-n2.5-pro:free` | high, medium, none (none) |\n| `qwen/qwen3.8-max-0902` | xhigh, high, medium, low, minimal (xhigh) |\n| `meta/muse-spark-1.3` | max, xhigh, high, medium, low, minimal (medium) |\n\nAlways-thinking models never receive `none`; invalid settings normalize to the defaults above. `openai/gpt-6-astra-pro` is an OpenRouter ID that selects Pro mode, not a native OpenAI model ID. Fable 5.1 omits `tool_choice`. Models ending in `:free` are subject to free-tier rate limits. [Catalog](https://openrouter.ai/api/v1/models), [API schema](https://openrouter.ai/docs/api_reference/overview).\n\n```typescript\nconst openRouterService = ChatServiceFactory.createChatService('openrouter', {\n  apiKey: process.env.OPENROUTER_API_KEY,\n  model: 'deepseek/deepseek-v4-flash-0731',\n  reasoning_effort: 'none', // Fastest chat-oriented setting\n  // Optional: Add app information for analytics\n  appName: 'Your App Name',\n  appUrl: 'https://your-app-url.com'\n});\n```\n\n**Important Notes for OpenRouter:**\n- Automatic token limits from `responseLength` are disabled for `openrouter/auto` and `openrouter/auto-beta` because a routed reasoning model can spend the entire output budget before emitting visible content. An explicitly supplied `maxTokens` is still honored.\n- All token limits remain disabled for `gpt-oss-20b:free`, `z-ai/glm-5.2`, `z-ai/glm-5.3`, and `z-ai/glm-5.3-flash`. For these models and the dynamic routers, control response length with prompt instructions (e.g., \"Please respond in 40 characters or less\").\n- Free tier has rate limits (20 requests/minute)\n- Free tier detection is based on the model ID suffix `:free` (dynamic `:free` IDs are also rate-limited)\n- `openrouter/auto-beta` is a Beta task-aware router. It chooses a model for each request and charges that routed model's rate; inspect the response `model` field or OpenRouter Activity to see the selection.\n- `openrouter/fusion` runs a multi-model panel plus a judge model; OpenRouter bills the sum of the underlying model calls and any enabled web search/fetch usage, not a single fixed model rate.\n- For `z-ai/glm-5.2`, OpenRouter reasoning also defaults to `none`.\n- `z-ai/glm-5.3` and `z-ai/glm-5.3-flash` require reasoning. The package selects the minimum supported `low` effort and excludes reasoning text for responsive chat.\n- Optional reasoning defaults to `none` for the newly curated `qwen/qwen3.8-flash`, `moonshotai/kimi-k2.6`, `anthropic/claude-sonnet-5`, and `deepseek/deepseek-v4-flash-vision-exp` models.\n- OpenRouter reasoning uses `reasoning.effort: 'none'` to disable reasoning. `exclude: true` only controls whether reasoning content is returned; it does not disable reasoning by itself.\n- DeepSeek V4 models are explicit options rather than the OpenRouter default so applications can choose a reproducible version. All default to `none` for responsive chat:\n  - `deepseek/deepseek-v4-flash-0731`: current fixed 0731 snapshot; supports `none`, `low`, `high`, and `max`.\n  - `deepseek/deepseek-v4-flash`: older unversioned 0423 snapshot; supports `none`, `high`, and `xhigh`.\n  - `deepseek/deepseek-v4-pro-0813`: fixed Pro snapshot; supports `none`, `high`, and `xhigh`.\n  - `deepseek/deepseek-v4-flash-vision-exp`: experimental image-capable model; supports `none`, `low`, `high`, and `max`.\n- Specialized coding models are explicit options rather than defaults. This includes `kwaipilot/kat-coder-air-v2.5` and `kwaipilot/kat-coder-pro-v2.5`, which are text-only.\n- `moonshotai/kimi-k3` availability depends on upstream capacity; OpenRouter may return 429 responses when capacity is constrained.\n- `x-ai/grok-4.5` has region-specific availability, including a current EU limitation. `~x-ai/grok-latest` inherits those limits when it resolves to Grok 4.5.\n- Supported models (curated list):\n  - `openrouter/auto`, `openrouter/auto-beta`\n  - `openrouter/fusion`\n  - `openai/gpt-oss-20b:free`\n  - `~openai/gpt-latest`, `~openai/gpt-mini-latest`\n  - `openai/gpt-5.6-sol`, `openai/gpt-5.6-terra`, `openai/gpt-5.6-luna`\n  - `openai/gpt-5.5-pro`, `openai/gpt-5.5`\n  - `openai/gpt-5.1-codex`, `openai/gpt-5-mini`, `openai/gpt-5-nano`\n  - `openai/gpt-4o`, `openai/gpt-4.1-mini`, `openai/gpt-4.1-nano`\n  - `~anthropic/claude-sonnet-latest`, `~anthropic/claude-haiku-latest`\n  - `anthropic/claude-fable-5`, `anthropic/claude-sonnet-5`, `anthropic/claude-opus-5`, `anthropic/claude-opus-4.8`\n  - `anthropic/claude-opus-4`, `anthropic/claude-sonnet-4`\n  - `anthropic/claude-haiku-4.5`\n  - `~google/gemini-pro-latest`, `~google/gemini-flash-latest`\n  - `google/gemini-3.7-flash`, `google/gemini-3.6-flash`, `google/gemini-3.5-flash-lite`\n  - `google/gemini-2.5-pro`, `google/gemini-2.5-flash`, `google/gemini-2.5-flash-lite-preview-09-2025`\n  - `z-ai/glm-5.3`, `z-ai/glm-5.3-flash`, `z-ai/glm-5.2`, `z-ai/glm-4.7-flash`, `z-ai/glm-4.5-air`\n  - `~x-ai/grok-latest`, `x-ai/grok-4.6`, `x-ai/grok-4.5`\n  - `deepseek/deepseek-v4-flash-0731`, `deepseek/deepseek-v4-flash`, `deepseek/deepseek-v4-pro-0813`, `deepseek/deepseek-v4-flash-vision-exp`\n  - `qwen/qwen3.8-flash`\n  - `~moonshotai/kimi-latest`, `moonshotai/kimi-k3`, `moonshotai/kimi-k2.7-code`, `moonshotai/kimi-k2.6`, `moonshotai/kimi-k2.5`\n  - `kwaipilot/kat-coder-air-v2.5`, `kwaipilot/kat-coder-pro-v2.5`\n\n**Dynamic OpenRouter free model refresh**\n\nYou can fetch currently available `:free` models and probe them before use:\n\n```typescript\nimport { refreshOpenRouterFreeModels } from '@aituber-onair/chat';\n\nconst result = await refreshOpenRouterFreeModels({\n  apiKey: process.env.OPENROUTER_API_KEY || '',\n  concurrency: 2, // default: 2\n  timeoutMs: 12000, // default: 12000\n  maxCandidates: 1, // default: 1\n  maxWorking: 10, // default: 10\n});\n\nconsole.log(result.working); // e.g. ['openai/gpt-oss-20b:free']\nconsole.log(result.failed); // [{ id, reason }, ...]\nconsole.log(result.fetchedAt); // Date.now() timestamp\n```\n\nNotes:\n- Models are fetched from `https://openrouter.ai/api/v1/models`\n- Candidates are filtered by model ID suffix `:free`\n- `maxCandidates` means \"maximum number of candidates to probe\" (e.g., `10` probes up to 10 candidates, not until 10 working models are found)\n- Probe uses OpenRouter chat completions with a minimal one-shot request (`stream: false`)\n- Works in both browser and Node runtimes (uses `fetch`)\n\n#### Z.ai (GLM)\n\n```typescript\nconst zaiService = ChatServiceFactory.createChatService('zai', {\n  apiKey: process.env.ZAI_API_KEY,\n  model: 'glm-5.3',\n  reasoning_effort: 'low', // Package default: minimum supported thinking\n  responseLength: 'short',\n  visionModel: 'glm-5.3-flash', // Optional: vision-capable model\n  responseFormat: { type: 'json_object' } // Optional JSON mode\n});\n```\n\nNotes:\n- Z.ai uses OpenAI-compatible Chat Completions.\n- Supported text models include `glm-5.3`, `glm-5.2`, `glm-5.1`, `glm-5`, `glm-5-turbo`, `glm-4.7`, `glm-4.7-FlashX`, `glm-4.7-Flash`, and `glm-4.6`.\n- Supported vision models: `glm-5.3-flash`, `glm-5v-turbo`, `glm-4.6V`, `glm-4.6V-FlashX`, `glm-4.6V-Flash`.\n- GLM-5.3 and GLM-5.3 Flash always use thinking and accept only `low`, `high`, or `max`. The package defaults to `low`, keeps thinking enabled even if `thinking.type: 'disabled'` is requested, and clears prior-turn thinking by default for chat latency and cost.\n- GLM-5.2 exposes `reasoning_effort: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max'`. The package defaults to `none` and disables thinking for low-latency chat.\n- Z.ai currently applies only three effective tiers: `none`/`minimal` become `none`, `low`/`medium`/`high` become `high`, and `xhigh`/`max` become `max`. The package normalizes these values before sending them.\n- Explicit legacy `thinking` remains available when `reasoning_effort` is omitted. `reasoning_effort` takes precedence when both are supplied.\n\n#### xAI (Grok)\n\n```typescript\nconst xaiService = ChatServiceFactory.createChatService('xai', {\n  apiKey: process.env.XAI_API_KEY,\n  model: 'grok-4.6',\n  reasoning_effort: 'low', // Optional: low, medium, high, xhigh\n  visionModel: 'grok-4.6', // Optional: use a vision-capable xAI model\n});\n```\n\nNotes:\n- xAI uses OpenAI-compatible Chat Completions.\n- Supported models: `grok-4.6`, `grok-4.5`, `grok-4.3`, `grok-4.20-0309-reasoning`, `grok-4.20-0309-non-reasoning`.\n- `grok-4.3` is the package default with `reasoning_effort: 'none'`. Retired Grok 4.1 Fast constants remain exported for source compatibility but are no longer advertised.\n- `reasoning_effort` is sent only for models that support it. `grok-4.6` supports `low`, `medium`, `high`, and `xhigh`; `grok-4.5` supports `low`, `medium`, and `high`. Both default to `low` for chat-style responses. `grok-4.3` supports `none`, `low`, `medium`, and `high` and defaults to `none`.\n- Supported xAI models can be used with vision and tool/function calling. Grok 4.6 vision support is enabled so image chat can be validated directly in the React basic sample.\n\n#### Kimi (Moonshot)\n\n```typescript\nconst kimiService = ChatServiceFactory.createChatService('kimi', {\n  apiKey: process.env.MOONSHOT_API_KEY,\n  model: 'kimi-k3',\n  // Optional: override endpoint or baseUrl\n  // endpoint: 'https://api.moonshot.ai/v1/chat/completions',\n  // baseUrl: 'https://api.moonshot.ai/v1',\n  reasoning_effort: 'low'\n});\n```\n\nNotes:\n- Kimi uses OpenAI-compatible Chat Completions.\n- Supported models: `kimi-k3`, `kimi-k2.7-code`, `kimi-k2.7-code-highspeed`, `kimi-k2.6`, `kimi-k2.5`\n- `kimi-k2.6` remains the default model for chat-oriented usage.\n- Kimi K3 is an explicit reasoning model. It accepts `reasoning_effort: 'low' | 'high' | 'max'`, defaults to `max`, always reasons, and does not accept the K2.x `thinking` option. `none`, `minimal`, and `medium` are not supported.\n- Kimi K3 uses `max_completion_tokens` for configured response limits.\n- For Kimi K3 multi-turn and tool-call flows, append the returned `completion.assistant_message` to history so `reasoning_content` and `tool_calls` are preserved.\n- Kimi K2.7 Code models are coding-oriented and require thinking mode, so they keep `thinking` enabled even when tools are used.\n- Explicitly setting `thinking: { type: 'disabled' }` with Kimi K2.7 Code models throws before sending the request.\n- For older Kimi models, when tools are enabled, `thinking` is forced to `{ type: 'disabled' }`.\n\nSelf-hosted example:\n\n```typescript\nconst kimiService = ChatServiceFactory.createChatService('kimi', {\n  apiKey: process.env.MOONSHOT_API_KEY,\n  baseUrl: 'http://localhost:8000/v1',\n  thinking: { type: 'disabled' }\n});\n```\n\nNotes for self-hosted:\n- Self-hosted endpoints use `chat_template_kwargs` for thinking controls.\n\n#### DeepSeek\n\n`deepseek-flash` (`MODEL_DEEPSEEK_FLASH`) is the official ID for DeepSeek V4.1 Flash. It supports images and streaming through Chat Completions, with `none` (package default), `low`, `high`, and `max` reasoning. The existing package restriction still requires `none` when using tools. Legacy Flash IDs are compatibility aliases routed to V4.1 by DeepSeek. [API guide](https://api-docs.deepseek.com/).\n\n```typescript\nconst deepSeekService = ChatServiceFactory.createChatService('deepseek', {\n  apiKey: process.env.DEEPSEEK_API_KEY,\n  model: 'deepseek-v4-flash',\n  reasoning_effort: 'none', // Default: disable thinking for responsive chat\n});\n```\n\nNotes:\n- DeepSeek uses OpenAI-compatible Chat Completions at `https://api.deepseek.com/chat/completions`.\n- Recommended text models: `deepseek-v4-flash` (default) and `deepseek-v4-pro`. The experimental `deepseek-v4-flash-vision-exp` model is available explicitly for image input.\n- Legacy aliases `deepseek-chat` and `deepseek-reasoner` remain exported for explicit compatibility, but DeepSeek marks them deprecated and scheduled for removal on 2026-07-24.\n- You can still use DeepSeek through `openai-compatible` by providing the full endpoint and model manually, but the first-class `deepseek` provider supplies the endpoint and default model for you.\n- `deepseek-v4-flash` accepts `reasoning_effort: 'none' | 'low' | 'high' | 'max'`. The package defaults to `none`, mapped to `thinking: { type: 'disabled' }`, for responsive chat. Other levels enable thinking and are sent as DeepSeek `reasoning_effort`.\n- `deepseek-v4-pro` exposes `none`, `high`, and `max`. DeepSeek currently maps a requested `low` to `high`, so the package normalizes it explicitly.\n- `deepseek-v4-flash-vision-exp` uses the same Chat Completions image format and defaults to `none` thinking for responsive vision chat.\n- Thinking with tool calling is intentionally rejected for now because DeepSeek requires `reasoning_content` replay across tool turns and does not accept the normal `tool_choice` request shape in thinking mode. Tool calling works with the default `none` setting.\n\n#### Mistral\n\n```typescript\nconst mistralService = ChatServiceFactory.createChatService('mistral', {\n  apiKey: process.env.MISTRAL_API_KEY,\n  model: 'mistral-small-latest',\n});\n\nawait mistralService.processChat(\n  [{ role: 'user', content: 'Give me one concise streaming reply.' }],\n  (partial) => process.stdout.write(partial),\n  async (complete) => console.log('\\nDone:', complete),\n);\n```\n\nNotes:\n- Mistral uses Chat Completions at `https://api.mistral.ai/v1/chat/completions`.\n- Default model: `mistral-small-latest`, chosen for the sample-friendly balance of low cost, strong general chat quality, vision support, and adjustable reasoning support.\n- Supported models: `mistral-small-latest`, `ministral-3b-2512`, `ministral-8b-2512`, `ministral-14b-2512`, `mistral-medium-3-5`, `mistral-large-latest`, `mistral-large-2512`, `mistral-small-2603`.\n- Retired `mistral-medium-2508` remains exported only for source compatibility.\n- Ministral 3 models support text, vision, streaming, and function calling through the same Chat Completions endpoint.\n- `reasoning_effort` is supported as `'none' | 'high'` and is only sent for `mistral-small-latest` and `mistral-medium-3-5`, matching Mistral's adjustable reasoning docs. It is omitted for other models.\n\nReasoning example:\n\n```typescript\nconst mistralReasoningService = ChatServiceFactory.createChatService(\n  'mistral',\n  {\n    apiKey: process.env.MISTRAL_API_KEY,\n    model: 'mistral-medium-3-5',\n    reasoning_effort: 'high',\n  },\n);\n```\n\n#### Sakana AI\n\n```typescript\nconst sakanaService = ChatServiceFactory.createChatService('sakana', {\n  apiKey: process.env.SAKANA_API_KEY,\n  model: 'sakana-namazu',\n  thinking: { type: 'disabled' }, // Package default for Namazu\n});\n```\n\nNotes:\n- Sakana AI Fugu uses OpenAI-compatible Chat Completions at `https://api.sakana.ai/v1/chat/completions`.\n- Supported models: `fugu` (default), `fugu-ultra-v1.1`, and the Japanese-focused `sakana-namazu`. The `fugu-ultra` alias and former dated ID remain exported for compatibility.\n- Sakana Namazu supports image input through the same Chat Completions endpoint. Its thinking is disabled by default through `chat_template_kwargs` for responsive chat and can be enabled with `thinking: { type: 'enabled' }`.\n- Sakana recommends `max_completion_tokens` for new Chat Completions integrations, but also accepts legacy `max_tokens`. This provider keeps `max_tokens` to match existing OpenAI-compatible provider behavior.\n- Sakana recommends the Responses API for best performance, but this provider uses Chat Completions because it matches the package's OpenAI-compatible chat path.\n- Direct browser usage may fail with CORS unless Sakana enables CORS for your origin. Use Node.js, a backend/serverless proxy, or `examples/node-basic/sakana-example.js` instead of calling Sakana directly from browser-only apps.\n\n#### PLaMo\n\n```typescript\nconst plamoService = ChatServiceFactory.createChatService('plamo', {\n  apiKey: process.env.PLAMO_API_KEY,\n  model: 'plamo-3.0-prime',\n});\n```\n\nNotes:\n- PLaMo uses OpenAI-compatible Chat Completions at `https://api.platform.preferredai.jp/v1/chat/completions`.\n- Supported model: `plamo-3.0-prime` (default).\n- `plamo-2.2-prime` remains exported for source compatibility, but is no longer advertised because PLaMo documents its 2026-09-30 retirement and replacement by `plamo-3.0-prime`.\n- `reasoning_effort` can be set to `none` or `medium` for reasoning-capable PLaMo models.\n- Vision is not advertised as supported by this provider.\n- PLaMo can also be used through `openai-compatible` by manually providing the full endpoint and model.\n\n#### Gemini Nano (Chrome Built-in AI)\n\n```typescript\nconst geminiNanoService = ChatServiceFactory.createChatService('gemini-nano', {\n  responseLength: 'short',\n  initialPrompts: [\n    {\n      role: 'system',\n      content: 'You are a cheerful character who speaks naturally.'\n    },\n    { role: 'user', content: 'How are you feeling today?' },\n    { role: 'assistant', content: 'I feel great and ready to chat!' },\n    { role: 'user', content: 'Are you ready?' },\n    { role: 'assistant', content: 'Yes, we can start anytime!' }\n  ]\n});\n```\n\nNotes:\n- No API key required — uses Chrome's built-in LanguageModel API (Prompt API).\n- System instructions, configured examples, and the most recent conversation\n  history are passed through `initialPrompts` with their roles preserved.\n- If configured `initialPrompts` contain a system message, it is normalized to\n  the first entry. Keep few-shot examples short because they consume the\n  on-device model's context window.\n- Gemini Nano uses concrete sentence-count guidance in addition to the soft\n  token budget: `veryShort` up to 1 sentence, `short` up to 2, `medium` up to\n  3, `long` up to 5, and `veryLong` up to 10. `deep` keeps its approximately\n  5000-token guidance without a sentence-count limit. Output length is still\n  best effort.\n- Up to the most recent 20 user/assistant messages are included as structured\n  history.\n- Web pages require **Chrome 148+** on a supported desktop device. The Prompt\n  API is enabled by default, so no Chrome flags are required. Chrome extensions\n  have supported the Prompt API since Chrome 138.\n- The model runs entirely on-device; no network requests are made for inference.\n- Non-streaming only — responses are returned as a single complete text.\n- Vision is not supported.\n- See the\n  [browser-only Gemini Nano customer-support example](./examples/gemini-nano-customer-support-bot/)\n  for EN/JA language selection and frontend-only model preparation.\n- The initial model download requires a user action and may take a few minutes.\n\n##### Tip: improve response-length consistency with examples\n\nSetting `responseLength` automatically adds Gemini Nano-specific sentence-count,\nformatting, and soft token-budget instructions. You can reinforce those\ninstructions by also passing two or three short user/assistant examples through\n`initialPrompts`:\n\n```typescript\nimport {\n  ChatServiceFactory,\n  type GeminiNanoInitialPrompt\n} from '@aituber-onair/chat';\n\nconst veryShortExamples: GeminiNanoInitialPrompt[] = [\n  { role: 'user', content: 'How are you feeling today?' },\n  { role: 'assistant', content: 'I feel great and ready to chat!' },\n  { role: 'user', content: 'What food do you like?' },\n  { role: 'assistant', content: 'Salmon sushi is my favorite!' }\n];\n\nconst service = ChatServiceFactory.createChatService('gemini-nano', {\n  responseLength: 'veryShort',\n  initialPrompts: veryShortExamples\n});\n```\n\nThe examples are optional; the package applies the length instruction even\nwhen `initialPrompts` is omitted. Examples help the on-device model learn the\ndesired response size, speaking style, reaction level, and tempo more\nconsistently.\n\n- Match every assistant example to the selected preset. For `veryShort`, use\n  one sentence; for `short`, use no more than two.\n- Write examples in the target character's voice. Hardcoded generic examples\n  are not added by the package because they could change the character's\n  personality.\n- Do not reuse one-sentence examples for `medium` or longer responses when you\n  want visibly longer answers; those examples can bias the model toward short\n  output.\n- Keep the set small because examples share the on-device context window with\n  the system prompt and conversation history.\n- Recreate the chat service when `responseLength` or `initialPrompts` changes.\n  The React basic example does this automatically and applies its short\n  examples only to `veryShort` and `short`.\n- These controls improve consistency but do not provide a strict output limit.\n  Chrome's LanguageModel API currently has no max-output-token option, so\n  Gemini Nano may occasionally exceed the requested sentence count.\n\n### Vision Chat\n\nFor built-in providers with curated model lists, the library pre-validates\nvision support. For `openai-compatible`, vision support is reported as\n`'unknown'` unless your application adds its own endpoint-specific knowledge.\nIn that case, image requests are still allowed and any incompatibility is\nsurfaced as a runtime error from the target endpoint.\n\n```typescript\nconst visionMessage = {\n  role: 'user',\n  content: [\n    { type: 'text', text: 'What do you see in this image?' },\n    {\n      type: 'image_url',\n      image_url: {\n        url: 'data:image/jpeg;base64,...', // or https:// URL\n        detail: 'low' // 'low', 'high', or 'auto'\n      }\n    }\n  ]\n};\n\nawait chatService.processVisionChat(\n  [visionMessage],\n  (partial) => console.log(partial),\n  async (complete) => console.log(complete)\n);\n```\n\nYou can inspect the pre-validation status from `ChatServiceFactory`:\n\n```typescript\nconst level = ChatServiceFactory.getVisionSupportLevelForModel(\n  'openai-compatible',\n  'your-local-model',\n);\n\nconsole.log(level); // 'unknown'\n```\n\n### Tool/Function Calling\n\n```typescript\nimport { ToolDefinition } from '@aituber-onair/chat';\n\nconst tools: ToolDefinition[] = [{\n  name: 'get_weather',\n  description: 'Get the current weather for a location',\n  parameters: {\n    type: 'object',\n    properties: {\n      location: { type: 'string', description: 'City name' }\n    },\n    required: ['location']\n  }\n}];\n\n// Tool calling is handled automatically by the chat service\n// Configure tool handlers when creating the service\n```\n\nIf your application executes Tools outside ChatService, use the backend helper\nto append provider-compatible assistant and Tool-result messages. It preserves\nprovider-native continuation data for providers such as OpenAI and Claude.\n\n```typescript\nimport { buildToolContinuationMessages } from '@aituber-onair/chat/backend';\n\nconst nextMessages = buildToolContinuationMessages({\n  provider: chatService.provider,\n  messages,\n  completion,\n  toolResults,\n});\n```\n\n### Response Length Control\n\nBase preset token targets are:\n- `veryShort`: 40\n- `short`: 100\n- `medium`: 200\n- `long`: 300\n- `veryLong`: 1000\n- `deep`: 5000\n\nFor the OpenAI GPT-5 family (`gpt-5`, `gpt-5-mini`, `gpt-5-nano`,\n`gpt-5.1`, `gpt-5.4`, `gpt-5.5`, `gpt-5.6`, `gpt-5.6-sol`,\n`gpt-5.6-terra`, `gpt-5.6-luna`, `gpt-5.4-mini`, `gpt-5.4-nano`,\n`gpt-5.4-pro`),\nthese values are treated as base presets. The library may raise the actual\n`max_completion_tokens` or `max_output_tokens` to reduce premature truncation,\ndepending on the selected model and `reasoning_effort`.\n\nIf you need an exact token limit, use `maxTokens`.\n\n```typescript\n// Using preset response lengths\nconst service = ChatServiceFactory.createChatService('openai', {\n  apiKey: 'your-key',\n  responseLength: 'medium' // 'veryShort', 'short', 'medium', 'long', 'veryLong', 'deep'\n});\n\n// Using custom token limits\nconst service = ChatServiceFactory.createChatService('openai', {\n  apiKey: 'your-key',\n  maxTokens: 500 // Direct token limit\n});\n```\n\n### Model Context Protocol (MCP)\n\nThe chat package supports MCP (Model Context Protocol) servers across all providers, with different implementation approaches:\n\n#### Provider-Specific MCP Implementation\n\n**OpenAI & Claude**: Direct MCP Integration\n- Uses provider's native MCP support (Responses API for OpenAI)\n- Server-to-server communication (no CORS issues)\n- Direct connection to MCP servers\n\n**Gemini**: Function Calling Integration\n- MCP tools are registered as Gemini function declarations\n- ToolExecutor handles MCP server communication\n- Requires CORS configuration in browser environments\n\n#### Basic Usage\n\n```typescript\n// MCP servers work with all providers (OpenAI, Claude, Gemini)\nconst mcpServers = [{\n  type: 'url',\n  url: 'http://localhost:3000',\n  name: 'local-server',\n  authorization_token: 'optional-token'\n}];\n\n// OpenAI/Claude - direct MCP integration\nconst openaiService = ChatServiceFactory.createChatService('openai', {\n  apiKey: 'your-key',\n  mcpServers // Direct integration via Responses API\n});\n\n// Gemini - MCP via function calling\nconst geminiService = ChatServiceFactory.createChatService('gemini', {\n  apiKey: 'your-key',\n  mcpServers // Integrated as function declarations\n});\n\n// MCP tools are automatically available and handled by ToolExecutor\n```\n\n#### Gemini-Specific CORS Configuration\n\nWhen using Gemini with MCP in browser environments, you need to configure a proxy to avoid CORS issues:\n\n**Vite Development Setup** (`vite.config.ts`):\n```typescript\nexport default defineConfig({\n  server: {\n    proxy: {\n      '/api/mcp': {\n        target: 'https://mcp.deepwiki.com',\n        changeOrigin: true,\n        rewrite: (path) => path.replace(/^\\/api\\/mcp/, ''),\n      }\n    }\n  }\n})\n```\n\n**Dynamic MCP URL Configuration**:\n```typescript\n// Provider-specific MCP server configuration\nconst getMcpServers = (provider: string): MCPServerConfig[] => {\n  const baseUrl = provider === 'gemini' \n    ? '/api/mcp/sse'  // Proxy URL for Gemini (browser)\n    : 'https://mcp.deepwiki.com/sse';  // Direct URL for OpenAI/Claude\n\n  return [{\n    type: 'url',\n    url: baseUrl,\n    name: 'deepwiki',\n  }];\n};\n\n// Use in chat service creation\nconst mcpServers = getMcpServers(chatProvider);\nconst chatService = ChatServiceFactory.createChatService(chatProvider, {\n  apiKey: 'your-api-key',\n  mcpServers\n});\n```\n\n#### Error Handling & Timeouts\n\nThe Gemini MCP implementation includes robust error handling:\n- 5-second timeout for MCP schema fetching\n- Automatic fallback to basic search tools if MCP servers are unavailable\n- Graceful degradation when MCP initialization fails\n\n### Emotion Detection\n\n```typescript\nimport { textToScreenplay } from '@aituber-onair/chat';\n\nconst text = \"[happy] I'm so glad to see you!\";\nconst screenplay = textToScreenplay(text);\nconsole.log(screenplay); // { emotion: 'happy', text: \"I'm so glad to see you!\" }\n```\n\n## API Reference\n\n### ChatService Interface\n\n```typescript\ninterface ChatService {\n  getModel(): string;\n  getVisionModel(): string;\n  \n  processChat(\n    messages: Message[],\n    onPartialResponse: (text: string) => void,\n    onCompleteResponse: (text: string) => Promise<void>\n  ): Promise<void>;\n  \n  processVisionChat(\n    messages: MessageWithVision[],\n    onPartialResponse: (text: string) => void,\n    onCompleteResponse: (text: string) => Promise<void>\n  ): Promise<void>;\n  \n  chatOnce(\n    messages: Message[],\n    stream: boolean,\n    onPartialResponse: (text: string) => void,\n    maxTokens?: number\n  ): Promise<ToolChatCompletion>;\n  \n  visionChatOnce(\n    messages: MessageWithVision[],\n    stream: boolean,\n    onPartialResponse: (text: string) => void,\n    maxTokens?: number\n  ): Promise<ToolChatCompletion>;\n}\n```\n\n### Types\n\n```typescript\ninterface Message {\n  role: 'system' | 'user' | 'assistant' | 'tool';\n  content: string;\n  timestamp?: number;\n}\n\ninterface MessageWithVision {\n  role: 'system' | 'user' | 'assistant' | 'tool';\n  content: string | VisionBlock[];\n}\n\ntype ChatResponseLength = 'veryShort' | 'short' | 'medium' | 'long' | 'veryLong' | 'deep';\ntype VisionSupportLevel = 'supported' | 'unsupported' | 'unknown';\n```\n\n### Vision Support Discovery\n\n```typescript\nconst providerLevel = ChatServiceFactory.getVisionSupportLevel(\n  'openai-compatible',\n);\nconst modelLevel = ChatServiceFactory.getVisionSupportLevelForModel(\n  'openai-compatible',\n  'your-local-model',\n);\n\nconsole.log(providerLevel); // 'unknown'\nconsole.log(modelLevel); // 'unknown'\n```\n\nSemantics:\n- `supported`: Known to support vision before sending the request\n- `unsupported`: Known to reject vision before sending the request\n- `unknown`: Cannot be pre-validated, but vision requests may still succeed\n\n### Provider Capability Discovery\n\nUI and agent runtimes can inspect provider features before creating a chat\nservice:\n\n```typescript\nconst capabilities = ChatServiceFactory.getProviderCapabilities(\n  'openai',\n  'gpt-5.4-mini',\n);\n\nif (capabilities?.jsonMode) {\n  // Show a JSON mode toggle or pass responseFormat safely.\n}\n\nif (!capabilities?.mcp) {\n  // Disable MCP server settings for this provider.\n}\n```\n\n`getProviderCapabilities(provider, model?)` returns machine-readable metadata\nsuch as `models`, `defaultModel`, `vision`, `tools`, `mcp`, `jsonMode`,\n`responseLength`, and supported `reasoningEffort` values. Use\n`getAllProviderCapabilities()` to populate provider pickers or dashboards.\n\nThe capability object is static planning metadata. It does not include API keys,\nendpoints, base URLs, MCP server definitions, or other user configuration. This\nhelps UI surfaces hide unsupported controls before execution, and lets agents\nchoose whether to use tools, MCP, vision, JSON mode, or reasoning settings\nwithout hard-coding provider-specific rules.\n\n## Available Providers\n\nCurrently, the following AI providers are built-in:\n\n- **OpenAI**: GPT-6 Astra (`gpt-6-astra`, Responses API); Supports models like GPT-5.6 (Sol/Terra/Luna), GPT-5.5, GPT-5.4 Pro, GPT-5.4, GPT-5.4 Mini, GPT-5.4 Nano, GPT-5.1, GPT-5 (Nano/Mini/Standard), GPT-4.1 (including mini and nano), GPT-4, GPT-4o-mini, O3-mini, o1, o1-mini\n- **OpenAI-Compatible**: Supports arbitrary local/self-hosted model IDs via OpenAI-compatible endpoints. Vision capability is treated as `unknown` unless your app knows the endpoint-specific model catalog.\n- **Gemini**: Supports recommended models like Gemini 3.8 Flash, Gemini 3.7 Flash, Gemini 3.6 Flash, Gemini 3.5 Flash, Gemini 3.5 Flash-Lite, Gemini 3.1 Flash-Lite, Gemini 3.1 Pro Preview, Gemini 3 Flash Preview, Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.5 Flash Lite, Gemma 4 31B IT, and Gemma 4 26B A4B IT. Gemini 3 models default to their lowest supported thinking level for chat-style responses. Gemini 3.8 Flash, Gemini 3.7 Flash, and Gemini 3 Pro use low because they do not support minimal; other Gemini 3 Flash models use minimal. Deprecated lifecycle models such as Gemini 3.1 Flash-Lite Preview, Gemini 3 Pro Preview, and Gemini 2.5 Flash Lite Preview remain exported for explicit use.\n- **Claude**: Claude Fable 5.1 (`claude-fable-5-1`); Supports current Claude API model IDs including Claude Fable 5, Claude Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.6, Claude Sonnet 4.5, and Claude Haiku 4.5. Adjustable `reasoning_effort` is sent as `output_config.effort` only for models that support it; refusal metadata is preserved as a terminal completion.\n- **OpenRouter**: GPT-6 Astra/Pro, Claude Fable 5.1, DeepSeek V4.1 Flash, Gemini 3.8 Flash, Ling 3.0 Flash VL, Mercury 2.5, Nex N2.5 Mini/Pro, Qwen3.8 Max, Muse Spark 1.3; Supports a curated OpenRouter model list (OpenAI/Claude/Gemini/Z.ai/xAI/Kimi/DeepSeek/Qwen/Kwaipilot), including GLM-5.3, Qwen3.8 Flash, DeepSeek V4 Flash Vision Exp, Claude Sonnet 5/Opus 4.8, and Kimi K2.6. See the OpenRouter section for model IDs.\n- **Z.ai**: Supports GLM-5.3/GLM-5.2/GLM-5.1/GLM-5/GLM-5-Turbo and GLM-4.7/4.6 text models, plus GLM-5.3-Flash/GLM-5V-Turbo/GLM-4.6V vision models. GLM-5.3 always thinks and defaults to `low`; GLM-5.2 defaults to `none`.\n- **xAI**: Supports Grok 4.6, Grok 4.5, Grok 4.3, and Grok 4.20 Reasoning/Non-Reasoning with vision. Grok 4.3 is the low-latency default with `reasoning_effort: 'none'`.\n- **Kimi**: Supports Kimi K3 (`kimi-k3`, `low` / `high` / `max` reasoning with `max` as the default), Kimi K2.7 Code (`kimi-k2.7-code`), Kimi K2.7 Code HighSpeed (`kimi-k2.7-code-highspeed`), Kimi K2.6 (`kimi-k2.6`, default), and Kimi K2.5 (`kimi-k2.5`) with vision support\n- **DeepSeek**: DeepSeek V4.1 Flash (`deepseek-flash`); Supports DeepSeek V4 Flash (`deepseek-v4-flash`), V4 Pro (`deepseek-v4-pro`), and the explicit experimental vision model (`deepseek-v4-flash-vision-exp`) via OpenAI-compatible Chat Completions. Thinking defaults to disabled for low-latency chat.\n- **Mistral**: Supports the Ministral 3 family (`ministral-3b-2512`, `ministral-8b-2512`, `ministral-14b-2512`) and current Mistral generalist models, with streaming and vision support. Adjustable `reasoning_effort` is only sent for supported models.\n- **Sakana AI**: Supports Fugu (`fugu`), Fugu Ultra (`fugu-ultra-v1.1`), and vision-capable Sakana Namazu (`sakana-namazu`) via OpenAI-compatible Chat Completions. Namazu thinking defaults to disabled for responsive chat.\n- **PLaMo**: Supports PLaMo 3.0 Prime (`plamo-3.0-prime`, default) via OpenAI-compatible Chat Completions; the retiring 2.2 constant remains exported for compatibility.\n- **Gemini Nano**: Chrome built-in AI (LanguageModel API). Runs on-device with no API key required. Web pages require Chrome 148+ on a supported desktop device; no Chrome flags are required. Non-streaming, no vision support.\n\n## License\n\nMIT\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n","readmeFilename":"README.md"}