{"_id":"@unified-llm/core","_rev":"26-a66eb6d3313c88d17f3d79f020624c60","name":"@unified-llm/core","dist-tags":{"latest":"0.6.9"},"versions":{"0.1.0":{"name":"@unified-llm/core","version":"0.1.0","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","Assistant","OpenAI","AI Enbod","AI Enbodi Framework","unified-llm"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.1.0","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"e015f5f4bbc3be443d2fc5689c74e3fda0381c31","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.1.0.tgz","fileCount":111,"integrity":"sha512-7w0uQeemmBGibbSi6D/mqbjPkRSKx29IDpAKo5GpTOF+Tr5c1PlM6lpogianujjpfvXEh6hW8TQEFCc8IWaPJQ==","signatures":[{"sig":"MEUCIQDc4ZBEuWvJK8C5Hr9JiAVg7IkLUgQMbw4rr01edWvnYgIgdUtfFqiDKSVdxSrm4Ceeaqb7P6caOccaTP6ndJZ6pc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":400088},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"7cd6b20dc9a9e09f9dfbc77585e5b1ace1e47f7b","scripts":{"test":"jest","build":"tsc","test:gemini":"jest __test__/geminiAssistant.test.ts","prepublishOnly":"npm run build","test:anthropic":"jest __test__/anthropicAssistant.test.ts","test:persistence":"jest __test__/persistence-*.test.ts","test:function-calling":"jest __test__/assistant-function-calling.test.ts","test:persistence-enabled":"jest __test__/persistence-enabled.test.ts","test:persistence-disabled":"jest __test__/persistence-disabled.test.ts"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"11.3.0","description":"Unified LLM interface.","directories":{},"_nodeVersion":"24.1.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","drizzle-orm":"^0.44.2","better-sqlite3":"^11.10.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","drizzle-kit":"^0.31.1","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@types/better-sqlite3":"^7.6.13","@next/eslint-plugin-next":"^14.2.14"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.0_1749546587957_0.3729121241385509","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@unified-llm/core","version":"0.2.0","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","Assistant","OpenAI","AI Enbod","AI Enbodi Framework","unified-llm"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.2.0","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"116caa03f3934e236bed5c5c49d69b4f4a5698e1","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.2.0.tgz","fileCount":87,"integrity":"sha512-cqNJIiw4Vi2qIsPz1BVsRGpHRYVVQtXu6vcPqLiDMir94utxfeT0WH2ojJOY5dRwdD0OL+XK4tMj8tv4IHfbHA==","signatures":[{"sig":"MEYCIQDBxX9SIwvWCmLPw6nFmnKazCIquzuCBpomWpYroYlMEgIhAMuvWBHJJu7IrlyeqvPOTNhzzRG+9SKjWb+N0e31H6TH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415665},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"51fb4c3ac118639c4ab322727f0ba27873e49ed7","scripts":{"test":"jest","build":"tsc","test:gemini":"jest __test__/GeminiProvider.test.ts","prepublishOnly":"npm run build","test:anthropic":"jest __test__/AnthropicProvider.test.ts","test:persistence":"jest __test__/persistence-*.test.ts","test:function-calling":"jest __test__/assistant-function-calling.test.ts","test:persistence-enabled":"jest __test__/persistence-enabled.test.ts","test:persistence-disabled":"jest __test__/persistence-disabled.test.ts"},"_npmUser":{"name":"rhyizm","actor":{"name":"rhyizm","type":"user","email":"rhyizm@gmail.com"},"email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.2","description":"Unified LLM interface.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","drizzle-orm":"^0.44.2","better-sqlite3":"^11.10.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","drizzle-kit":"^0.31.1","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@types/better-sqlite3":"^7.6.13","@next/eslint-plugin-next":"^14.2.14"},"_npmOperationalInternal":{"tmp":"tmp/core_0.2.0_1750645065264_0.930543460395999","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@unified-llm/core","version":"0.2.1","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","Assistant","OpenAI","AI Enbod","AI Enbodi Framework","unified-llm"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.2.1","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"cc137b19f99b2a3aae68401c7738b9f6d879d68f","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.2.1.tgz","fileCount":90,"integrity":"sha512-vZiUIKtqaA6l+zXk+kXQfkynJufQoxFVyCxRTQUYBkTwF6dUXZbba4YgdLnGRftNEQVuHr1PdXMZgnmwqNWEDg==","signatures":[{"sig":"MEQCIAuO+o40B2xwp5T8ktRWgfiuPmGeoD7BMIdu1JoZmZOQAiAZ7Y+6QmxdK9HP8fgmU5YKHVv0de19I7V1liwv6XwPqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":427474},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"262dfd5163a8f11901b812e850087b160f4843b2","scripts":{"test":"jest","build":"tsc","test:gemini":"jest __test__/GeminiProvider.test.ts","prepublishOnly":"npm run build","test:anthropic":"jest __test__/AnthropicProvider.test.ts","test:persistence":"jest __test__/persistence-*.test.ts","test:function-calling":"jest __test__/assistant-function-calling.test.ts","test:persistence-enabled":"jest __test__/persistence-enabled.test.ts","test:persistence-disabled":"jest __test__/persistence-disabled.test.ts"},"_npmUser":{"name":"rhyizm","actor":{"name":"rhyizm","type":"user","email":"rhyizm@gmail.com"},"email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.2","description":"Unified LLM interface.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","drizzle-orm":"^0.44.2","better-sqlite3":"^11.10.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","drizzle-kit":"^0.31.1","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@types/better-sqlite3":"^7.6.13","@next/eslint-plugin-next":"^14.2.14"},"_npmOperationalInternal":{"tmp":"tmp/core_0.2.1_1750666625778_0.5253285545871036","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@unified-llm/core","version":"0.2.2","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","Assistant","OpenAI","AI Enbod","AI Enbodi Framework","unified-llm"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.2.2","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"a387f8fdc869de0dad0c4cd0037372a5ca53f1f9","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.2.2.tgz","fileCount":114,"integrity":"sha512-UtuIc/yBOnbJxpvBULDeo1Y+w48ZoiwbPT3sbUnqnB4DolPl+d/Au4ScJOX74aa0BJm4pwSnDq4JTpIyZFzHkQ==","signatures":[{"sig":"MEQCIByrcdi5aw9Wcdo0WTSxVTLxd5UhEAhXtvoDTT/2CEYlAiBCdBAdUDZ+6EIGzMQu4AOcYjwFrNDiWoS5CdEPwOYtuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":475554},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"a0037ff7ae827e22a4afc693f4e1095e239460de","scripts":{"test":"jest","build":"tsc","test:gemini":"jest __test__/GeminiProvider.test.ts","prepublishOnly":"npm run build","test:anthropic":"jest __test__/AnthropicProvider.test.ts","test:persistence":"jest __test__/persistence-*.test.ts","test:function-calling":"jest __test__/assistant-function-calling.test.ts","test:persistence-enabled":"jest __test__/persistence-enabled.test.ts","test:persistence-disabled":"jest __test__/persistence-disabled.test.ts"},"_npmUser":{"name":"rhyizm","actor":{"name":"rhyizm","type":"user","email":"rhyizm@gmail.com"},"email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.2","description":"Unified LLM interface.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","drizzle-orm":"^0.44.2","better-sqlite3":"^11.10.0","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","drizzle-kit":"^0.31.1","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@types/better-sqlite3":"^7.6.13","@next/eslint-plugin-next":"^14.2.14"},"_npmOperationalInternal":{"tmp":"tmp/core_0.2.2_1750759756657_0.6555026083822548","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@unified-llm/core","version":"0.3.0","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.3.0","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"134f5fd2588302f9e5aade4358c7e57860e6bf1a","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.3.0.tgz","fileCount":99,"integrity":"sha512-3FF69hsfm2ci+QOKYDQbdAfxPegniwZFHu1zfAxhFjL2KV32k2IcMG+kjBsPY7kRyuXNvGrHtlsnAmKTIDNH5A==","signatures":[{"sig":"MEYCIQCraSdiJosrkzhc7KMQVo5KsOQKpUN1Ag+UDUZ0tq5bDgIhAIoH1sa0DQ4BviDHmshzEvC+FDn/zpm+CrsrWqucc/mO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":394432},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"ad182fcfc0631fc794eaf56031026da578e300dd","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"jest","build":"tsc","lint:fix":"eslint . --ext .ts,.tsx --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","actor":{"name":"rhyizm","type":"user","email":"rhyizm@gmail.com"},"email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.2","description":"Unified LLM interface.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","drizzle-orm":"^0.44.2","@libsql/client":"^0.15.9","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","drizzle-kit":"^0.31.1","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@types/better-sqlite3":"^7.6.13","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.3.0_1751331890218_0.5839859690799376","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@unified-llm/core","version":"0.3.1","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.3.1","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"9965272a3b01684ea75752d604e7d2b7488ba7b2","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.3.1.tgz","fileCount":99,"integrity":"sha512-6o/aqSzjU2NRK+n+H8W+/lKd0RmSr3D3val+oQ7LMggITxlezehPiD4LceTYzu2lCcM2NQnjo0FJFe4GByAWYA==","signatures":[{"sig":"MEYCIQD2RSQ9qjOXvnA2LzayPntf4sVmjBIKDH1M/Q0cWW84lAIhAOuUlyUXteQ2dyTbuHEj2ZWhxiK7MZGmLpiyPVSB9iAg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":394452},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"5d06f5e442a5189b12ba3d8cfb8b8b66cb8eed2a","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"jest","build":"tsc","lint:fix":"eslint . --ext .ts,.tsx --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","actor":{"name":"rhyizm","type":"user","email":"rhyizm@gmail.com"},"email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.2","description":"Unified LLM interface.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","drizzle-orm":"^0.44.2","@libsql/client":"^0.15.9","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","drizzle-kit":"^0.31.1","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@types/better-sqlite3":"^7.6.13","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.3.1_1751357725040_0.5293753387177174","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@unified-llm/core","version":"0.3.2","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.3.2","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"06533e2b24ee4dd6468435956195fbb5d5adecb7","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.3.2.tgz","fileCount":99,"integrity":"sha512-0z73atoIwtlXxC2Fm0Wh0efhkY6XnvvoTV2oY3Thd3i4Wdgf/gKd2WqPZ0F8Cu97o0n5oMA6syo/iI9SaSH2dQ==","signatures":[{"sig":"MEUCIA/NM5IqX5YNM2696MxB7MIQXnE7cu7KI91GbyjfHPhjAiEA95B0h7Ucd0x8k1QSoL/XkYlRgDPnzB8J6qJCNeEF1OY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":398112},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"153aa519d746fa4c5aa245d23c4bbc472287136a","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"jest","build":"tsc","lint:fix":"eslint . --ext .ts,.tsx --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","actor":{"name":"rhyizm","type":"user","email":"rhyizm@gmail.com"},"email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.2","description":"Unified LLM interface.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","drizzle-orm":"^0.44.2","@libsql/client":"^0.15.9","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","drizzle-kit":"^0.31.1","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@types/better-sqlite3":"^7.6.13","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.3.2_1751425959141_0.991051393498066","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@unified-llm/core","version":"0.4.0","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.4.0","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"bdb3ec3fc06562db486512cc94912a28e56811a4","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.4.0.tgz","fileCount":99,"integrity":"sha512-NaHxsfAls6oPcJhftjtH9KrMitlENOo6Hstpv/zAcx6zR2Od6IigzT6/80hKIiDbO0larl/peyltdZmjLUa0bA==","signatures":[{"sig":"MEYCIQC3YuRThfNDSHktRd3I8ccySY8TBhMGJIonIgApm0K/TQIhAIOSzJhZR9rEWpQG74k+WsriqTh9XJkND2i9vBrf1QQP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":349082},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"878ff962434e0bc34f81c8554713752813179bf3","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"jest","build":"tsc","lint:fix":"eslint . --ext .ts,.tsx --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","actor":{"name":"rhyizm","type":"user","email":"rhyizm@gmail.com"},"email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.2","description":"Unified LLM interface (in-memory).","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.0_1752108730498_0.5414664122183315","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@unified-llm/core","version":"0.4.1","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.4.1","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"8651ca045b8a23e20d7f174865cdde3bd49e490c","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.4.1.tgz","fileCount":99,"integrity":"sha512-EFvpZyHDIKXzATUB8CeRytKEjok7briYeyDHfFL+o/5QPOOBDWfha+yCqGFnY2sOT3gEx8hp/NUD0oEI9Z0odg==","signatures":[{"sig":"MEYCIQD45/IAdQDBvlB4JlOK2qIC9f33/eneTThiTOCZQ9lFewIhALjISmhMhBoapjWGc9P0IQUcSp0VZBxEnMVfdDS0zmtY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":379875},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"224fe8c19d0e386f49cf90b6d3535893a818d58d","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"jest","build":"tsc","lint:fix":"eslint . --ext .ts,.tsx --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","actor":{"name":"rhyizm","type":"user","email":"rhyizm@gmail.com"},"email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.2","description":"Unified LLM interface (in-memory).","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.1_1752149569851_0.7439082594231463","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@unified-llm/core","version":"0.4.2","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.4.2","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"76605d5bf5164f6376181a745d0e6bc7fc7af74c","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.4.2.tgz","fileCount":102,"integrity":"sha512-gL61YbtF5O6qfhU1fHYtC8wElx5k7CxECjQRvZjaT5XaA5dOTcefYuZJ3DUdmjx/wJan9epPlHyuni17beDoTQ==","signatures":[{"sig":"MEQCIAOqr65qs8lUToeoSXf6pRr/e4zvvpC7NDzq5xyCjBpmAiBDAzKdrZ4fX/KGZ5x9OCHsEUQEVMmW9ebAWbyGf1mW7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":404415},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"}},"gitHead":"d5c15e631cf45d584f416e85bade3f605415354f","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","lint:fix":"eslint . --ext .ts,.tsx --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.2","description":"Unified LLM interface (in-memory).","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.2_1753060550235_0.7320510114168999","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@unified-llm/core","version":"0.4.3","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.4.3","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"c4c49f2665dd051eca1a75332e4e7f9411d9a352","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.4.3.tgz","fileCount":102,"integrity":"sha512-/TAKMAgt79XN9xVW/GDxXaiHPh8g40NKp2Y/w0DYA7YA1drfQa55TAc+CYaJ89cTbzkUEERO/bAG9t1FqkBkFA==","signatures":[{"sig":"MEUCIQCKxnsQdK3Vecfl7SL2dFGjFu6UFD9wpEQXV0SzJ6O5SQIgF82J108G9WgIxH/eFPdaJFti3lBjrIb58yk6aAJ4HlY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":404499},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"}},"gitHead":"d05e37d8b990855196f5e00fd6e3511452133313","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","lint:fix":"eslint . --ext .ts,.tsx --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.2","description":"Unified LLM interface (in-memory).","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"typesVersions":{"*":{"tools":["dist/tools/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.3_1753061117391_0.4218512523620863","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@unified-llm/core","version":"0.5.0","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.5.0","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"836aad85a416eb3640659f2e37d60d76da8ddbd5","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.5.0.tgz","fileCount":102,"integrity":"sha512-wCdw7QIjEFNTTc13dj+X9dFtZcKv/atsZqkSzMgcRGBh/zrc4407HCJhh1K96XAcZmlWltYrCddx+dAGHoyWmA==","signatures":[{"sig":"MEQCIAz1m80zN5hyq3H0ZV1MxouIUVuXXfvYmqOG7oKKBvCgAiBTJhCCBFwCvadvtDQxdzfT+iDpNZyHC1mMx8qJrATzMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":404322},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"}},"gitHead":"2396949548d56b3e9543519737a0ac266e8f8aa5","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","lint:fix":"eslint . --ext .ts,.tsx --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.2","description":"Unified LLM interface (in-memory).","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"typesVersions":{"*":{"tools":["dist/tools/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.0_1754198647499_0.04652908941302125","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@unified-llm/core","version":"0.5.1","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.5.1","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"1b3b306f17523d997f8e559cb50a05b783a9583c","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.5.1.tgz","fileCount":87,"integrity":"sha512-YxuP4LQTaYQBhiGYMJVsjG/gPEDUPlFa34lI1LOjjA6QLhC/aZjr2Rb4XAD9f2WjVxaTe26GgjwHR5Jtgys6Ig==","signatures":[{"sig":"MEUCIQDKhwoX3gduMnkRenTYfHV0eAjhct2S+OTvy/sZGmAbsAIgDYwMa8MW25/0oN9kkElk0j4KGIO3pGdkyM9ChEIyufg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283821},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"}},"gitHead":"91870d6ed454c0a9661fe61b1b35cdc23c12a479","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","script":"tsx","lint:fix":"eslint . --ext .ts,.tsx --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.3","description":"Unified LLM interface (in-memory).","directories":{},"_nodeVersion":"22.18.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^4.78.1","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"typesVersions":{"*":{"tools":["dist/tools/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.1_1754919940603_0.3675257106251828","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@unified-llm/core","version":"0.5.2","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.5.2","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"b16a562353f8253307a96d8532b3ce09bf057ca3","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.5.2.tgz","fileCount":126,"integrity":"sha512-c5a1ijGRuskiPpcYAAjBpjHiQUJSlzBSw0H2ERHASeen/0VC14gxvJLNXeXIn+VlzlHb+QC0euw0CKGiMuNMWA==","signatures":[{"sig":"MEYCIQCG2hwrTZsfAnMmRfiSBAYN8aGj+IvTx0L16lIm/z5vUwIhAPlSK3hpf9JiVaLmhsW1lSIlgu18cJSYXl8KeL1ir0Ik","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":463910},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"}},"gitHead":"d49a89e60241247b911818d084fe41215b44594e","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","build":"tsc","script":"tsx","lint:fix":"eslint . --ext .ts,.tsx --fix","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.3","description":"Unified LLM interface (in-memory).","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^5.19.1","@openai/agents":"^0.1.0","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"typesVersions":{"*":{"tools":["dist/tools/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.0","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.2_1757065689391_0.36179296888427914","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@unified-llm/core","version":"0.6.0","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.6.0","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"592a3f675df7f6addac971c512ba541ef2cb9c04","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.6.0.tgz","fileCount":126,"integrity":"sha512-CGtTuQHawDsKtTP1PCPpGn2kPzUQR5h/z99BqQRRPkRCTArECByi7eX4GJEjqsI7zXSVdLjCEnBPM3qAjc6teA==","signatures":[{"sig":"MEUCIQCHowvWJy0BhRrKVeaHO13iahAsGhT9zBf1NsbgGWKJowIgaRuEiDoPHC+WeLU0UbCsGYLnBHVC+ILL7NAC1NCOezA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":486627},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"}},"gitHead":"2e553b3c21e6a3b67e229bdfa7cda8cd7ed828d9","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"vitest","build":"tsc","script":"tsx","test:ui":"vitest --ui","lint:fix":"eslint . --ext .ts,.tsx --fix","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.3","description":"Unified LLM interface (in-memory).","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^5.19.1","@openai/agents":"^0.1.0","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"typesVersions":{"*":{"tools":["dist/tools/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.0","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^9.35.0","vitest":"^3.2.4","ts-jest":"^29.1.3","ts-node":"^10.9.2","@vitest/ui":"^3.2.4","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.0_1758003309180_0.41695438334139134","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@unified-llm/core","version":"0.6.1","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.6.1","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"3d4f64ad3fbb3c816ab20dc311790bab84f9281c","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.6.1.tgz","fileCount":126,"integrity":"sha512-WML3hkIUaQXW7WB+448MR6Dbj7Yt8Gsc2bzV32zDZtaEBL8lellrpqPx4k3Oer5JhBZrIbGmC0vRCVGmVKED/A==","signatures":[{"sig":"MEYCIQDgZMzrMcMYERKtlqITWsW4mVVc1yYg6VvWBBUmda/dhQIhAP0YQRU1nVKHoO//BguiLKSlDPNraGWFu9VbnKHvHkrY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":487238},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"}},"gitHead":"281a1a067d6ab8a184633c7581216eba8c80cdea","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"vitest","build":"tsc","script":"tsx","test:ui":"vitest --ui","lint:fix":"eslint . --ext .ts,.tsx --fix","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.3","description":"Unified LLM interface (in-memory).","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^5.19.1","@openai/agents":"^0.1.0","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"typesVersions":{"*":{"tools":["dist/tools/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.0","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^9.35.0","vitest":"^3.2.4","ts-jest":"^29.1.3","ts-node":"^10.9.2","@vitest/ui":"^3.2.4","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.1_1758081847367_0.45464779823078394","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@unified-llm/core","version":"0.6.2","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.6.2","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"99231fc68ca21c5063f1a051ad34f0dab36382cd","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.6.2.tgz","fileCount":126,"integrity":"sha512-eBUJxxCe5hxvSuXhLGJDsf8QZb9G2UE0t9IbyuX2AbYBmA7z36a0tnpPrH0zo0WbsYqsusWGB2yb0zA3N/ed3A==","signatures":[{"sig":"MEYCIQC0jq6tXvGQM9n4z/4qi9b9LXohcROfpAYL1pIuEL8J5gIhAJH/OsA3ZyiuKjrcJ1aeBRD2ltykbhZLjO48L7WcuXcP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":482300},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"}},"gitHead":"09d6f365ddb108e80af42f8e190aa6a82eb541a8","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"vitest","build":"tsc","script":"tsx","test:ui":"vitest --ui","lint:fix":"eslint . --ext .ts,.tsx --fix","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.3","description":"Unified LLM interface (in-memory).","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^5.19.1","@openai/agents":"^0.1.0","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"typesVersions":{"*":{"tools":["dist/tools/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.0","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^9.35.0","vitest":"^3.2.4","ts-jest":"^29.1.3","ts-node":"^10.9.2","@vitest/ui":"^3.2.4","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.2_1758091168812_0.5640794761186929","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@unified-llm/core","version":"0.6.3","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.6.3","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"880406422f1402b81c44f1ea02b42677b2edaed4","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.6.3.tgz","fileCount":126,"integrity":"sha512-V3qUL523s/yLwfzYqUdYfOznuS441N1Xa/Ukyqyd35IXnsRs3NGatkgMlyD6bjeDSka4wLbq0DSE6RMORLdDYA==","signatures":[{"sig":"MEUCIHhy/IeVqE2ayr1LlMzWZHBVNVP2ABhjAfX2PHGf8tDeAiEA6jKU2yH0UfrdTXcQRCkPCGJYYdDaZcJf6x5sn4NrDJM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":492020},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js"}},"gitHead":"8ec23b0d01934fcffab1b41a49980e7a1b80d407","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"vitest","build":"tsc","script":"tsx","test:ui":"vitest --ui","lint:fix":"eslint . --ext .ts,.tsx --fix","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.3","description":"Unified LLM interface (in-memory).","directories":{},"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^5.19.1","@openai/agents":"^0.1.0","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"typesVersions":{"*":{"tools":["dist/tools/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.0","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^9.35.0","vitest":"^3.2.4","ts-jest":"^29.1.3","ts-node":"^10.9.2","@vitest/ui":"^3.2.4","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.3_1758093898637_0.39939656478963403","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@unified-llm/core","version":"0.6.4","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.6.4","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"3f17ba6b5db5a69d9255169bea474523b68e229d","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.6.4.tgz","fileCount":256,"integrity":"sha512-VYz3gT7Doz6Q2065VkPHF8enR/Q3nUxfU0/bq1Wy5A+UCnetj9KkqEG6RP0k/kxoKqebCa1s+FGqhcZaxS75+g==","signatures":[{"sig":"MEUCIEhvV2ywxoAzyEvlV39r8JoqxZu3H7Mbh3B2eMwPh29bAiEAryhquWsM107fw5Qc+GquykpaqUmS+t6BvHwnFRKOFTw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":864008},"main":"./dist/cjs/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/cjs/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js","default":"./dist/tools/index.js","require":"./dist/cjs/tools/index.js"}},"gitHead":"686ebc647fda3a88de3d8705d025a5f87cf17eae","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"vitest","build":"npm run clean && npm run build:esm && npm run build:cjs","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","script":"tsx","test:ui":"vitest --ui","lint:fix":"eslint . --ext .ts,.tsx --fix","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/write-cjs-package.mjs","build:esm":"tsc -p tsconfig.esm.json","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"10.9.4","description":"Unified LLM interface (in-memory).","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^5.19.1","@openai/agents":"^0.1.0","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.0","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^9.35.0","vitest":"^3.2.4","ts-jest":"^29.1.3","ts-node":"^10.9.2","@vitest/ui":"^3.2.4","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.4_1767710490543_0.12340081985623641","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@unified-llm/core","version":"0.6.5","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.6.5","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"3dd82c4b3e31d8244e806737d07a0615d960ce68","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.6.5.tgz","fileCount":316,"integrity":"sha512-7iyjTjXWdrWvEIWIm4gJ1NpdpIkN0gWuWUZ7fW+QyP3rYBJ1rDQ/JdZHScAFhrlBQlOn7TNCMQ6XkYxTjum7Iw==","signatures":[{"sig":"MEUCIQCY642DetKCJymAooQjRG4zE8/EJMedDv95x9Pa6wF6QQIgDgxGVLQyeJw9pEEPAZZaowiaYHpR8JqgfIZLejMDhgY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1064227},"main":"./dist/cjs/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/cjs/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js","default":"./dist/tools/index.js","require":"./dist/cjs/tools/index.js"}},"gitHead":"3072486d880a62f3acd99f0c589d823a4cf82f51","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"vitest","build":"npm run clean && npm run build:esm && npm run build:cjs","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","script":"tsx","test:ui":"vitest --ui","lint:fix":"eslint . --ext .ts,.tsx --fix","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/write-cjs-package.mjs","build:esm":"tsc -p tsconfig.esm.json","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"11.7.0","description":"Unified LLM interface (in-memory).","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^5.19.1","@openai/agents":"^0.1.0","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1","@modelcontextprotocol/sdk":"^1.17.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.0","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^9.35.0","vitest":"^3.2.4","ts-jest":"^29.1.3","ts-node":"^10.9.2","@vitest/ui":"^3.2.4","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.5_1769094373402_0.7611780009528601","host":"s3://npm-registry-packages-npm-production"}},"0.6.6":{"name":"@unified-llm/core","version":"0.6.6","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.6.6","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"1bc30e7e259dfb879a2b707d1733f8319cf3d1c4","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.6.6.tgz","fileCount":322,"integrity":"sha512-e3p/4n9lDfOBjTWjr5SzE6B9ac/UhCbDb4bYmO+x9pjMlw+Rv8cSMVZlQvTOPpdDRZ79rTXiCt7+kNnkNn2Fcg==","signatures":[{"sig":"MEYCIQCQwx7cPqkxHjfE5/qwGS8s8mCIvLW7mL6gnheEWZ2g0AIhAIrrzMaHXpzTl8rC6r6V/7KjNuInbGWtXbBlXPq+w37m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1073851},"main":"./dist/cjs/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/cjs/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js","default":"./dist/tools/index.js","require":"./dist/cjs/tools/index.js"}},"gitHead":"d779f54b37cebe6d5e4c2dd2c20f217104e4393e","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"vitest","build":"npm run clean && npm run build:esm && npm run build:cjs","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","script":"tsx","test:ui":"vitest --ui","lint:fix":"eslint . --ext .ts,.tsx --fix","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/write-cjs-package.mjs","build:esm":"tsc -p tsconfig.esm.json","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"11.7.0","description":"Unified LLM interface (in-memory).","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^5.19.1","@openai/agents":"^0.1.0","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1","@modelcontextprotocol/sdk":"^1.17.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.0","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^9.35.0","vitest":"^3.2.4","ts-jest":"^29.1.3","ts-node":"^10.9.2","@vitest/ui":"^3.2.4","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.6_1769579135617_0.587161119526113","host":"s3://npm-registry-packages-npm-production"}},"0.6.7":{"name":"@unified-llm/core","version":"0.6.7","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.6.7","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"7fb46832033fe6dc8611acd55d6a1874f3a9bca5","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.6.7.tgz","fileCount":334,"integrity":"sha512-A+HT9gGDHGpFcEg0lOlgrliiyHDp1vMvG82lud74VrwSp+5x/AdCmIS4RY71zKjPopOfZiVBVLKbgCT91nQU5Q==","signatures":[{"sig":"MEQCIGta+BU8VeUlTS6CiFNuveN5iiosk/5/FRPoGUO97hlpAiB3si35zZxkcL2RfshEw+5arrYib0b1aTVr/Scc2OCAew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1079410},"main":"./dist/cjs/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/cjs/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js","default":"./dist/tools/index.js","require":"./dist/cjs/tools/index.js"}},"gitHead":"0a80cc418612416d1200b14156092cb11a1e6fac","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"vitest","build":"npm run clean && npm run build:esm && npm run build:cjs","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","script":"tsx","test:ui":"vitest --ui","lint:fix":"eslint . --ext .ts,.tsx --fix","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/write-cjs-package.mjs","build:esm":"tsc -p tsconfig.esm.json","test:gemini":"vitest tests/unit/gemini-agent.test.ts tests/e2e/gemini-agent-real.test.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:responses":"vitest tests/unit/responses-agent.test.ts tests/e2e/responses-agent-real.test.ts"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"11.7.0","description":"Unified LLM interface (in-memory).","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^5.19.1","@openai/agents":"^0.1.0","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1","@modelcontextprotocol/sdk":"^1.17.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.0","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^9.35.0","vitest":"^3.2.4","ts-jest":"^29.1.3","ts-node":"^10.9.2","@vitest/ui":"^3.2.4","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.7_1769693004977_0.809653054602212","host":"s3://npm-registry-packages-npm-production"}},"0.6.8":{"name":"@unified-llm/core","version":"0.6.8","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","_id":"@unified-llm/core@0.6.8","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"dist":{"shasum":"95c70c234026cb83c14d9db9674866398cf66661","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.6.8.tgz","fileCount":334,"integrity":"sha512-M/717laM8pFFZlACQjJIjo+OvRIgrjYTbOLhyxZXe1CADYAbqLCz/rYWFt/L9urkuGDqw2shkZm7yWDAbbItfQ==","signatures":[{"sig":"MEQCIDmLAUQA6UKoz4j4gTOGthaNiMG26gnMVfpc1SQ7Ez4jAiAY00GlKZ45EsFVjL+cD19W7sQxNXiTm44rCAiQU8MXOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1079068},"main":"./dist/cjs/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/cjs/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js","default":"./dist/tools/index.js","require":"./dist/cjs/tools/index.js"}},"gitHead":"bb59e2f2c004c61ae67d5d62b0783dc57ce59ece","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"vitest","build":"npm run clean && npm run build:esm && npm run build:cjs","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","script":"tsx","test:ui":"vitest --ui","lint:fix":"eslint . --ext .ts,.tsx --fix","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/write-cjs-package.mjs","build:esm":"tsc -p tsconfig.esm.json","test:gemini":"vitest tests/unit/gemini-agent.test.ts tests/e2e/gemini-agent-real.test.ts","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:responses":"vitest tests/unit/responses-agent.test.ts tests/e2e/responses-agent-real.test.ts"},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"repository":{"url":"git+https://github.com/rhyizm/unified-llm.git","type":"git"},"_npmVersion":"11.7.0","description":"Unified LLM interface (in-memory).","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.7","uuid":"^11.0.5","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^5.19.1","@openai/agents":"^0.1.0","@azure/core-auth":"^1.9.0","@anthropic-ai/sdk":"^0.53.0","@google/generative-ai":"^0.24.1","@modelcontextprotocol/sdk":"^1.17.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.0","devDependencies":{"tsx":"^4.20.3","jest":"^29.7.0","eslint":"^9.35.0","vitest":"^3.2.4","ts-jest":"^29.1.3","ts-node":"^10.9.2","@vitest/ui":"^3.2.4","dotenv-cli":"^8.0.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/debug":"^4.1.12","eslint-plugin-jest":"^28.5.0","@next/eslint-plugin-next":"^14.2.14","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.8_1769693657208_0.22827618430727403","host":"s3://npm-registry-packages-npm-production"}},"0.6.9":{"name":"@unified-llm/core","version":"0.6.9","description":"Unified LLM interface (in-memory).","type":"module","main":"./dist/cjs/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/cjs/index.js","default":"./dist/index.js"},"./tools":{"types":"./dist/tools/index.d.ts","import":"./dist/tools/index.js","require":"./dist/cjs/tools/index.js","default":"./dist/tools/index.js"}},"sideEffects":false,"scripts":{"clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","build":"npm run clean && npm run build:esm && npm run build:cjs","build:esm":"tsc -p tsconfig.esm.json","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/write-cjs-package.mjs","lint":"eslint . --ext .ts,.tsx","lint:fix":"eslint . --ext .ts,.tsx --fix","prepublishOnly":"npm run build","test":"vitest","test:ui":"vitest --ui","test:coverage":"vitest run --coverage","test:mcp":"vitest tests/e2e/claude-agent-real.test.ts tests/e2e/gemini-agent-real.test.ts tests/e2e/responses-agent-real.test.ts tests/e2e/mcp-http-smoke.test.ts","test:mcp:local":"vitest tests/e2e/claude-agent-real.test.ts tests/e2e/gemini-agent-real.test.ts tests/e2e/responses-agent-real.test.ts","test:mcp:http":"vitest tests/e2e/mcp-http-smoke.test.ts","test:responses":"vitest tests/unit/responses-agent.test.ts tests/e2e/responses-agent-real.test.ts","test:gemini":"vitest tests/unit/gemini-agent.test.ts tests/e2e/gemini-agent-real.test.ts","test:claude":"vitest tests/unit/claude-agent.test.ts tests/e2e/claude-agent-real.test.ts","script":"tsx"},"keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"author":{"name":"rhyizm"},"license":"MIT","devDependencies":{"@next/eslint-plugin-next":"^14.2.14","@playwright/mcp":"^0.0.68","@types/debug":"^4.1.12","@types/jest":"^29.5.12","@types/node":"^20.12.12","@typescript-eslint/eslint-plugin":"^8.35.0","@typescript-eslint/parser":"^8.35.0","@vitest/ui":"^3.2.4","dotenv-cli":"^8.0.0","eslint":"^9.35.0","eslint-plugin-jest":"^28.5.0","jest":"^29.7.0","ts-jest":"^29.1.3","ts-node":"^10.9.2","tsx":"^4.20.3","typescript":"^5.4.5","vitest":"^3.2.4"},"dependencies":{"@anthropic-ai/sdk":"^0.53.0","@azure/core-auth":"^1.9.0","@google/generative-ai":"^0.24.1","@modelcontextprotocol/sdk":"^1.17.5","@openai/agents":"^0.1.0","debug":"^4.4.0","dotenv":"^16.4.7","openai":"^5.19.1","uuid":"^11.0.5","zod":"^3.25.7"},"packageManager":"pnpm@10.15.0","repository":{"type":"git","url":"git+https://github.com/rhyizm/unified-llm.git"},"homepage":"https://github.com/rhyizm/unified-llm#readme","bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"publishConfig":{"access":"public"},"engines":{"node":">=18.0.0"},"gitHead":"7476037233b20dd5401db4b4579e1fb34cf69d42","_id":"@unified-llm/core@0.6.9","_nodeVersion":"22.19.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-qWE1mcOM3aMRDLdms8wlQTkvtrpCQehuPGW3FYj0wA+oxlZ0TcoT5lTQocQtFqzEMKUgasfb7FrFfvGUixgTrw==","shasum":"f6430c162353f5579d52a8ac8609b38fc88ab494","tarball":"https://registry.npmjs.org/@unified-llm/core/-/core-0.6.9.tgz","fileCount":346,"unpackedSize":1154639,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFeFGDAXxVJsxcUmdd8hNCMkgu/l9XGEvzGujjzCtfAxAiBP3STC0eYcpLBHE9iwlyYL8XnXycOAN9nEsikjeX2rDw=="}]},"_npmUser":{"name":"rhyizm","email":"rhyizm@gmail.com"},"directories":{},"maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_0.6.9_1771158775084_0.12570084816578997"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-10T09:09:47.861Z","modified":"2026-02-15T12:32:55.413Z","0.1.0":"2025-06-10T09:09:48.142Z","0.2.0":"2025-06-23T02:17:45.468Z","0.2.1":"2025-06-23T08:17:05.978Z","0.2.2":"2025-06-24T10:09:16.834Z","0.2.3":"2025-07-01T00:58:20.455Z","0.3.0":"2025-07-01T01:04:50.410Z","0.3.1":"2025-07-01T08:15:25.205Z","0.3.2":"2025-07-02T03:12:39.325Z","0.4.0":"2025-07-10T00:52:10.686Z","0.4.1":"2025-07-10T12:12:50.042Z","0.4.2":"2025-07-21T01:15:50.481Z","0.4.3":"2025-07-21T01:25:17.605Z","0.5.0":"2025-08-03T05:24:07.729Z","0.5.1":"2025-08-11T13:45:40.813Z","0.5.2":"2025-09-05T09:48:09.582Z","0.6.0":"2025-09-16T06:15:09.377Z","0.6.1":"2025-09-17T04:04:07.578Z","0.6.2":"2025-09-17T06:39:29.000Z","0.6.3":"2025-09-17T07:24:58.824Z","0.6.4":"2026-01-06T14:41:30.725Z","0.6.5":"2026-01-22T15:06:13.576Z","0.6.6":"2026-01-28T05:45:35.783Z","0.6.7":"2026-01-29T13:23:25.177Z","0.6.8":"2026-01-29T13:34:17.446Z","0.6.9":"2026-02-15T12:32:55.287Z"},"bugs":{"url":"https://github.com/rhyizm/unified-llm/issues"},"author":{"name":"rhyizm"},"license":"MIT","homepage":"https://github.com/rhyizm/unified-llm#readme","keywords":["LLM","AI","Unified LLM","unified-llm","Large Language Model","AI Agent","Agent","OpenAI","Gemini","Claude","DeepSeek","Azure OpenAI"],"repository":{"type":"git","url":"git+https://github.com/rhyizm/unified-llm.git"},"description":"Unified LLM interface (in-memory).","maintainers":[{"name":"rhyizm","email":"rhyizm@gmail.com"}],"readme":"# @unified-llm/core\n\n[![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![npm version](https://badge.fury.io/js/%40unified-llm%2Fcore.svg)](https://badge.fury.io/js/%40unified-llm%2Fcore)\n\nA simple way to manipulate multiple LLMs (OpenAI, Anthropic, Google Gemini, DeepSeek, Azure OpenAI, Ollama) with unified interface. \n\nWhy this matters:\n- One interface for many LLMs: swap providers without changing app code.\n- Event-based streaming API: start → text_delta* → stop → error.\n- Same field for display: use `response.text` for both chat and stream.\n- Clean streaming with tools: providers execute tool calls mid-stream; you only receive text.\n- Power when you need it: access provider-native payloads via `rawResponse` on the final chunk.\n\n## Features\n\n- 🤖 **Multi-Provider Support** - OpenAI, Anthropic Claude, Google Gemini, DeepSeek, Azure OpenAI, Ollama\n- ⚡ **Event‑Based Streaming API** - Unified `start/text_delta/stop/error` events across providers\n- 🔧 **Function Calling** - Execute local functions and integrate external tools\n- 📊 **Structured Output** - Guaranteed JSON schema compliance across all providers\n- 💬 **Conversation Persistence** - SQLite-based chat history and thread management\n- 🏠 **Local LLM Support** - Run models locally with Ollama's OpenAI-compatible API\n\n## Installation\n\n```bash\nnpm install @unified-llm/core\n```\n\n## Simplest way to chat with multiple LLMs\n\nOne tiny interface, many providers. Change only the `provider` and `model`.\n\n```typescript\nimport { LLMClient } from '@unified-llm/core';\n\nconst providers = [\n  { provider: 'openai',   model: 'gpt-4o-mini',            apiKey: process.env.OPENAI_API_KEY },\n  { provider: 'anthropic',model: 'claude-3-haiku-20240307', apiKey: process.env.ANTHROPIC_API_KEY },\n  { provider: 'google',   model: 'gemini-2.5-flash',        apiKey: process.env.GOOGLE_API_KEY },\n  { provider: 'deepseek', model: 'deepseek-chat',           apiKey: process.env.DEEPSEEK_API_KEY },\n  // Azure and Ollama have dedicated sections below\n];\n\nfor (const cfg of providers.filter(p => p.apiKey)) {\n  const client = new LLMClient(cfg as any);\n  const res = await client.chat({\n    messages: [{ role: 'user', content: 'Give me one fun fact.' }]\n  });\n  console.log(cfg.provider, '→', res.text);\n}\n```\n\n## Streaming Responses\n\nStreaming now uses an event-based streaming API across providers. Instead of provider-specific chunk shapes, you receive structured events with an `eventType` and optional `delta`. This replaces the legacy streaming example and is not backward compatible. See docs/streaming-unification.md for the full spec.\n\n### Basic Streaming Example\n\n```typescript\nimport { LLMClient } from '@unified-llm/core';\n\nconst client = new LLMClient({\n  provider: 'openai',\n  model: 'gpt-4o-mini',\n  apiKey: process.env.OPENAI_API_KEY,\n  systemPrompt: 'You are a helpful assistant that answers questions in Japanese.',\n});\n\nconst stream = await client.stream({\n  messages: [\n    {\n      id: '1',\n      role: 'user',\n      content: 'What are some recommended tourist spots in Osaka?',\n      createdAt: new Date()\n    },\n  ],\n});\n\nlet acc = '';\nfor await (const ev of stream) {\n  switch (ev.eventType) {\n    case 'start':\n      // initialize UI state if needed\n      break;\n    case 'text_delta':\n      // ev.delta?.text is the incremental piece; ev.text is the accumulator\n      process.stdout.write(ev.delta?.text ?? '');\n      acc = ev.text;\n      break;\n    case 'stop':\n      console.log('\\nComplete response:', ev.text);\n      // ev.rawResponse contains provider-native final response (or stream data)\n      break;\n    case 'error':\n      console.error('Stream error:', ev.delta);\n      break;\n  }\n}\n```\n\n## Function Calling\n\nThe `defineTool` helper provides type safety for tool definitions, automatically inferring argument and return types from the handler function:\n\n```typescript\nimport { LLMClient } from '@unified-llm/core';\nimport { defineTool } from '@unified-llm/core/tools';\nimport fs from 'fs/promises';\n\n// Let AI read and analyze any file\nconst readFile = defineTool({\n  type: 'function',\n  function: {\n    name: 'readFile',\n    description: 'Read any text file',\n    parameters: {\n      type: 'object',\n      properties: {\n        filename: { type: 'string', description: 'Name of file to read' }\n      },\n      required: ['filename']\n    }\n  },\n  handler: async (args: { filename: string }) => {\n    const content = await fs.readFile(args.filename, 'utf8');\n    return content;\n  }\n});\n\nconst client = new LLMClient({\n  provider: 'openai',\n  model: 'gpt-4o-mini',\n  apiKey: process.env.OPENAI_API_KEY,\n  tools: [readFile]\n});\n\n// Create a sample log file for demo\nawait fs.writeFile('app.log', `\n[ERROR] 2024-01-15 Database connection timeout\n[WARN]  2024-01-15 Memory usage at 89%\n[ERROR] 2024-01-15 Failed to authenticate user rhyizm\n[ERROR] 2024-01-15 Database connection timeout\n[INFO]  2024-01-15 Server restarted\n`);\n\n// Ask AI to analyze the log file\nconst response = await client.chat({\n  messages: [{\n    role: 'user',\n    content: \"Read app.log and tell me what's wrong with my application\",\n    createdAt: new Date()\n  }]\n});\n\nconsole.log(response.message.content);\n// AI will read the actual file and give you insights about the errors!\n```\n\n### Using tools from an MCP server\n\nYou can pull tools from an MCP server and pass them directly to `LLMClient` as function-calling tools. The MCP tool `inputSchema` maps cleanly to OpenAI/Responses function parameters.\n\n```typescript\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamable-http.js';\nimport { LLMClient } from '@unified-llm/core';\n\nconst MCP_SERVER_URL = process.env.MCP_SERVER_URL!; // e.g. http://localhost:3000\n\nasync function main() {\n  // Connect to MCP server (Streamable HTTP example)\n  const transport = new StreamableHTTPClientTransport(new URL('/mcp', MCP_SERVER_URL));\n  const mcpClient = new Client(\n    { name: 'local-mcp-responses-client', version: '1.0.0' },\n    { capabilities: {} }\n  );\n  await mcpClient.connect(transport);\n\n  // Fetch tools from MCP and adapt to function-calling tools\n  const toolsList = await mcpClient.listTools();\n  const tools = toolsList.tools.map((tool) => ({\n    type: 'function' as const,\n    function: {\n      name: tool.name,\n      description: tool.description,\n      parameters: tool.inputSchema,\n    },\n  }));\n\n  const client = new LLMClient({\n    provider: 'openai',\n    model: 'gpt-4o-mini',\n    apiKey: process.env.OPENAI_API_KEY,\n    tools,\n  });\n\n  const res = await client.chat({\n    messages: [{\n      role: 'user',\n      content: 'Use available tools to help me',\n      createdAt: new Date(),\n    }],\n  });\n\n  console.log(res.message.content);\n}\n\nmain().catch(console.error);\n```\n\n### Streaming with Function Calls\n\nDuring streaming, tool calls are handled provider-side for you. When a model requests tool input mid-stream, the provider accumulates the tool call, executes your registered tool handlers, and continues streaming the final assistant text. You only observe text events: `start → text_delta* → stop`.\n\n```typescript\nimport { LLMClient } from '@unified-llm/core';\nimport { defineTool } from '@unified-llm/core/tools';\n\nconst getWeather = defineTool({\n  type: 'function',\n  function: {\n    name: 'getWeather',\n    description: 'Get 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  handler: async (args: { location: string }) => {\n    return `Weather in ${args.location}: Sunny, 27°C`;\n  }\n});\n\nconst client = new LLMClient({\n  provider: 'openai',\n  model: 'gpt-4o-mini',\n  apiKey: process.env.OPENAI_API_KEY,\n  tools: [getWeather]\n});\n\nconst stream = await client.stream({\n  messages: [{\n    id: '1',\n    role: 'user',\n    content: \"What's the weather like in Tokyo?\",\n    createdAt: new Date()\n  }]\n});\n\nfor await (const ev of stream) {\n  if (ev.eventType === 'text_delta') {\n    process.stdout.write(ev.delta?.text ?? '');\n  }\n  if (ev.eventType === 'stop') {\n    console.log('\\nFinal text:', ev.text);\n  }\n}\n```\n\n## Structured Output\n\nStructured Output ensures that AI responses follow a specific JSON schema format across all supported providers. This is particularly useful for applications that need to parse and process AI responses programmatically.\n\n### Basic Structured Output\n\n```typescript\nimport { LLMClient, ResponseFormat } from '@unified-llm/core';\n\n// Define the expected response structure\nconst weatherFormat = new ResponseFormat({\n  name: 'weather_info',\n  description: 'Weather information for a location',\n  schema: {\n    type: 'object',\n    properties: {\n      location: { type: 'string' },\n      temperature: { type: 'number' },\n      condition: { type: 'string' },\n      humidity: { type: 'number' }\n    },\n    required: ['location', 'temperature', 'condition']\n  }\n});\n\nconst client = new LLMClient({\n  provider: 'openai',\n  model: 'gpt-4o-2024-08-06', // Structured output requires specific models\n  apiKey: process.env.OPENAI_API_KEY\n});\n\nconst response = await client.chat({\n  messages: [{\n    role: 'user',\n    content: 'What is the weather like in Tokyo today?'\n  }],\n  generationConfig: {\n    responseFormat: weatherFormat\n  }\n});\n\n// Response will be guaranteed to follow the schema\nconsole.log(JSON.parse(response.message.content[0].text));\n// Output: { \"location\": \"Tokyo\", \"temperature\": 25, \"condition\": \"Sunny\", \"humidity\": 60 }\n```\n\n### Multi-Provider Structured Output\n\nThe same `ResponseFormat` works across all providers with automatic conversion:\n\n```typescript\n// Works with OpenAI (uses json_schema format internally)\nconst openaiClient = new LLMClient({\n  provider: 'openai',\n  model: 'gpt-4o-2024-08-06',\n  apiKey: process.env.OPENAI_API_KEY\n});\n\n// Works with Google Gemini (uses responseSchema format internally)\nconst geminiClient = new LLMClient({\n  provider: 'google',\n  model: 'gemini-1.5-pro',\n  apiKey: process.env.GOOGLE_API_KEY\n});\n\n// Works with Anthropic (uses prompt engineering internally)\nconst claudeClient = new LLMClient({\n  provider: 'anthropic',\n  model: 'claude-3-5-sonnet-latest',\n  apiKey: process.env.ANTHROPIC_API_KEY\n});\n\nconst userInfoFormat = new ResponseFormat({\n  name: 'user_profile',\n  schema: {\n    type: 'object',\n    properties: {\n      name: { type: 'string' },\n      age: { type: 'number' },\n      email: { type: 'string' },\n      interests: {\n        type: 'array',\n        items: { type: 'string' }\n      }\n    },\n    required: ['name', 'age', 'email']\n  }\n});\n\nconst request = {\n  messages: [{ role: 'user', content: 'Create a sample user profile' }],\n  generationConfig: { responseFormat: userInfoFormat }\n};\n\n// All three will return structured JSON in the same format\nconst openaiResponse = await openaiClient.chat(request);\nconst geminiResponse = await geminiClient.chat(request);\nconst claudeResponse = await claudeClient.chat(request);\n```\n\n### Pre-built Response Format Templates\n\nThe library provides convenient templates for common structured output patterns:\n\n```typescript\nimport { ResponseFormats } from '@unified-llm/core';\n\n// Key-value extraction\nconst contactFormat = ResponseFormats.keyValue(['name', 'email', 'phone']);\n\nconst contactResponse = await client.chat({\n  messages: [{\n    role: 'user',\n    content: 'Extract contact info: John Doe, john@example.com, 555-1234'\n  }],\n  generationConfig: { responseFormat: contactFormat }\n});\n\n// Classification with confidence scores\nconst sentimentFormat = ResponseFormats.classification(['positive', 'negative', 'neutral']);\n\nconst sentimentResponse = await client.chat({\n  messages: [{\n    role: 'user',\n    content: 'Analyze sentiment: \"I absolutely love this new feature!\"'\n  }],\n  generationConfig: { responseFormat: sentimentFormat }\n});\n// Returns: { \"category\": \"positive\", \"confidence\": 0.95 }\n\n// List responses\nconst taskFormat = ResponseFormats.list({\n  type: 'object',\n  properties: {\n    task: { type: 'string' },\n    priority: { type: 'string', enum: ['high', 'medium', 'low'] },\n    deadline: { type: 'string' }\n  }\n});\n\nconst taskResponse = await client.chat({\n  messages: [{\n    role: 'user',\n    content: 'Create a task list for launching a mobile app'\n  }],\n  generationConfig: { responseFormat: taskFormat }\n});\n// Returns: { \"items\": [{ \"task\": \"Design UI\", \"priority\": \"high\", \"deadline\": \"2024-02-01\" }, ...] }\n```\n\n### Complex Nested Schemas\n\n```typescript\nconst productReviewFormat = new ResponseFormat({\n  name: 'product_review',\n  schema: {\n    type: 'object',\n    properties: {\n      rating: { type: 'number', minimum: 1, maximum: 5 },\n      summary: { type: 'string' },\n      pros: {\n        type: 'array',\n        items: { type: 'string' }\n      },\n      cons: {\n        type: 'array',\n        items: { type: 'string' }\n      },\n      recommendation: {\n        type: 'object',\n        properties: {\n          wouldRecommend: { type: 'boolean' },\n          targetAudience: { type: 'string' },\n          alternatives: {\n            type: 'array',\n            items: { type: 'string' }\n          }\n        }\n      }\n    },\n    required: ['rating', 'summary', 'pros', 'cons', 'recommendation']\n  }\n});\n\nconst reviewResponse = await client.chat({\n  messages: [{\n    role: 'user',\n    content: 'Review this smartphone: iPhone 15 Pro - great camera, expensive, good battery life'\n  }],\n  generationConfig: { responseFormat: productReviewFormat }\n});\n```\n\n### Provider-Specific Notes\n\n- **OpenAI**: Supports native structured outputs with `gpt-4o-2024-08-06` and newer models\n- **Google Gemini**: Uses `responseMimeType: 'application/json'` with `responseSchema`\n- **Anthropic**: Uses prompt engineering to request JSON format responses\n- **DeepSeek**: Similar to OpenAI, supports JSON mode\n\nThe `ResponseFormat` class automatically handles the conversion to each provider's specific format, ensuring consistent behavior across all supported LLMs.\n\n## Multi-Provider Example\n\n```typescript\nimport { LLMClient } from '@unified-llm/core';\n\n// Create LLM clients for different providers\nconst gpt = new LLMClient({\n  provider: 'openai',\n  model: 'gpt-4o-mini',\n  apiKey: process.env.OPENAI_API_KEY,\n  systemPrompt: 'You are a helpful assistant that answers concisely.'\n});\n\nconst claude = new LLMClient({\n  provider: 'anthropic', \n  model: 'claude-3-haiku-20240307',\n  apiKey: process.env.ANTHROPIC_API_KEY,\n  systemPrompt: 'You are a thoughtful assistant that provides detailed explanations.'\n});\n\nconst gemini = new LLMClient({\n  provider: 'google',\n  model: 'gemini-2.0-flash',\n  apiKey: process.env.GOOGLE_API_KEY,\n  systemPrompt: 'You are a creative assistant that thinks outside the box.'\n});\n\nconst deepseek = new LLMClient({\n  provider: 'deepseek',\n  model: 'deepseek-chat',\n  apiKey: process.env.DEEPSEEK_API_KEY,\n  systemPrompt: 'You are a technical assistant specialized in coding.'\n});\n\n// Use the unified chat interface\nconst request = {\n  messages: [{\n    id: '1',\n    role: 'user',\n    content: 'What are your thoughts on AI?',\n    createdAt: new Date()\n  }]\n};\n\n// Each provider will respond according to their system prompt\nconst gptResponse = await gpt.chat(request);\nconst claudeResponse = await claude.chat(request);\nconst geminiResponse = await gemini.chat(request);\nconst deepseekResponse = await deepseek.chat(request);\n```\n\n### Multi-Provider Streaming\n\nStreaming works consistently across all supported providers using the unified event model:\n\n```typescript\nconst providers = [\n  { name: 'OpenAI', provider: 'openai', model: 'gpt-4o-mini' },\n  { name: 'Claude', provider: 'anthropic', model: 'claude-3-haiku-20240307' },\n  { name: 'Gemini', provider: 'google', model: 'gemini-2.0-flash' },\n  { name: 'DeepSeek', provider: 'deepseek', model: 'deepseek-chat' }\n];\n\nfor (const config of providers) {\n  const client = new LLMClient({\n    provider: config.provider as any,\n    model: config.model,\n    apiKey: process.env[`${config.provider.toUpperCase()}_API_KEY`]\n  });\n\n  console.log(`\\n--- ${config.name} Response ---`);\n  const stream = await client.stream({\n    messages: [{\n      id: '1',\n      role: 'user',\n      content: 'Tell me a short story about AI.',\n      createdAt: new Date()\n    }]\n  });\n\n  for await (const ev of stream) {\n    if (ev.eventType === 'text_delta') {\n      process.stdout.write(ev.delta?.text ?? '');\n    }\n  }\n}\n```\n\n## Unified Response Format\n\nAll providers return responses in a consistent format, making it easy to switch between different LLMs:\n\n### Chat Response Format\n\n```typescript\n{\n  id: \"chatcmpl-Blub8EgOvVaP7c3lxzmVF4TJpVCun\",\n  model: \"gpt-4o-mini\",\n  provider: \"openai\",\n  message: {\n    id: \"msg_1750758679093_r9hqdhfzh\",\n    role: \"assistant\",\n    content: [\n      {\n        type: \"text\",\n        text: \"The author of this project is rhyizm.\"\n      }\n    ],\n    createdAt: \"2025-06-24T09:51:19.093Z\"\n  },\n  usage: {\n    inputTokens: 72,\n    outputTokens: 10,\n    totalTokens: 82\n  },\n  finish_reason: \"stop\",\n  createdAt: \"2025-06-24T09:51:18.000Z\",\n  rawResponse: {\n    /* Original response from the provider (as returned by OpenAI, Anthropic, Google, DeepSeek, etc.) */\n  }\n}\n```\n\n### Stream Response Format\n\nEach streaming event mirrors `UnifiedChatResponse` with a few additions:\n\n```typescript\n{\n  id: \"chatcmpl-example\",\n  model: \"gpt-4o-mini\", \n  provider: \"openai\",\n  message: {\n    id: \"msg_example\",\n    role: \"assistant\",\n    content: [\n      {\n        type: \"text\",\n        text: \"Chunk of text...\"\n      }\n    ],\n    createdAt: \"2025-01-01T00:00:00.000Z\"\n  },\n  // createdAt is optional in streaming events\n  eventType: \"text_delta\", // one of: start | text_delta | stop | error\n  outputIndex: 0,\n  delta: { type: \"text\", text: \"Chunk of text...\" }\n}\n\nOn the final `stop` event:\n- `finish_reason` may be present (e.g., \"stop\", \"length\").\n- `usage` may be present when available.\n- `rawResponse` contains the provider-native final result. For streaming providers that don’t return a single object, it contains native stream data (e.g., an array of SSE chunks). For Gemini, it includes both `{ stream, response }`.\n```\n\nKey benefits:\n- **Consistent structure** across all providers (OpenAI, Anthropic, Google, DeepSeek, Azure)\n- **Event-based streaming** with `eventType` and `delta` for incremental text\n- **Unified usage tracking** when the provider reports it\n- **Provider identification** to know which service generated the response\n- **Raw response access** on the final chunk for provider-specific features\n\n## Persistent LLM Client Configuration\n\n```typescript\nimport { LLMClient } from '@unified-llm/core';\n\n// Save LLM client configuration\nconst savedClientId = await LLMClient.save({\n  name: 'My AI Assistant',\n  provider: 'openai',\n  model: 'gpt-4o-mini',\n  systemPrompt: 'You are a helpful coding assistant.',\n  tags: ['development', 'coding'],\n  isActive: true\n});\n\n// Load saved LLM client\nconst client = await LLMClient.fromSaved(\n  savedClientId,\n  process.env.OPENAI_API_KEY\n);\n\n// List all saved LLM clients\nconst clients = await LLMClient.list({\n  provider: 'openai',\n  includeInactive: false\n});\n```\n\n## Azure OpenAI Example\n\nAzure OpenAI requires a different initialization pattern compared to other providers:\n\n```typescript\nimport { AzureOpenAIProvider } from '@unified-llm/core/providers/azure';\n\n// Azure OpenAI uses a different constructor pattern\n// First parameter: Azure-specific configuration\n// Second parameter: Base options (apiKey, tools, etc.)\nconst azureOpenAI = new AzureOpenAIProvider(\n  {\n    endpoint: process.env.AZURE_OPENAI_ENDPOINT!,        // Azure resource endpoint\n    deployment: process.env.AZURE_OPENAI_DEPLOYMENT!,   // Model deployment name\n    apiVersion: '2024-10-21',  // Optional, defaults to 'preview'\n    useV1: true                // Use /openai/v1 endpoint format\n  },\n  {\n    apiKey: process.env.AZURE_OPENAI_KEY!,\n    tools: []  // Optional tools\n  }\n);\n\n// Compare with standard LLMClient initialization:\n// const client = new LLMClient({\n//   provider: 'openai',\n//   model: 'gpt-4o-mini',\n//   apiKey: process.env.OPENAI_API_KEY\n// });\n\n// Use it like any other provider\nconst response = await azureOpenAI.chat({\n  messages: [{\n    id: '1',\n    role: 'user',\n    content: 'Hello from Azure!',\n    createdAt: new Date()\n  }]\n});\n```\n\n## Ollama & OpenAI-Compatible APIs\n\n### Ollama (Local LLM) Example\n\nOllama provides an OpenAI-compatible API, allowing you to run large language models locally. You can use either `provider: 'ollama'`.\n\n### Prerequisites\n\n1. Install Ollama from [ollama.ai](https://ollama.ai)\n2. Pull a model: `ollama pull llama3` (or any other model)\n3. Start Ollama server (usually runs automatically at `http://localhost:11434`)\n\n### Basic Usage\n\n```typescript\nimport { LLMClient } from '@unified-llm/core';\n\n// Ollama configuration - no API key required\nconst ollama = new LLMClient({\n  provider: 'ollama',\n  model: 'llama3',  // or 'mistral', 'codellama', etc.\n  baseURL: 'http://localhost:11434/v1',  // Optional - this is the default\n  systemPrompt: 'You are a helpful assistant running locally.'\n});\n\n// Use it just like any other provider\nconst response = await ollama.chat({\n  messages: [{\n    id: '1',\n    role: 'user',\n    content: 'Explain quantum computing in simple terms.',\n    createdAt: new Date()\n  }]\n});\n\nconsole.log(response.message.content);\n```\n\n### Remote Ollama Server\n\nIf you're running Ollama on a different machine or port:\n\n```typescript\nconst remoteOllama = new LLMClient({\n  provider: 'ollama',\n  model: 'llama3',\n  baseURL: 'http://your-server:11434/v1'  // Replace with your server address\n});\n```\n\n### Available Models\n\nPopular models you can use with Ollama:\n- `llama3` - Meta's Llama 3\n- `mistral` - Mistral AI's models\n- `codellama` - Code-focused Llama variant\n- `phi` - Microsoft's Phi models\n- `gemma` - Google's Gemma models\n- `mixtral` - Mixture of experts model\n\nCheck available models with: `ollama list`\n\n### Why Use Ollama Provider?\n\nWhile Ollama is OpenAI-compatible and could work with `provider: 'openai'`, using `provider: 'ollama'` offers:\n- **Clearer intent** - Makes it obvious you're using a local model\n- **No API key required** - Ollama doesn't need authentication\n- **Future compatibility** - If we add Ollama-specific features, your code won't need changes\n\n### Running Examples\n\nYou can run TypeScript examples directly with tsx:\n\n```bash\n# Add tsx to your project\nnpm install --save-dev tsx\n\n# Run the example\nnpx tsx example.ts\n```\n\nExample file (`example.ts`):\n```typescript\nimport { LLMClient } from '@unified-llm/core';\n\nasync function runOllamaExample() {\n  const ollamaClient = new LLMClient({\n    provider: 'ollama',\n    model: 'llama3',\n    baseURL: 'http://localhost:11434/v1'\n  });\n\n  const response = await ollamaClient.chat({\n    messages: [{\n      id: '1',\n      role: 'user',\n      content: 'Hello, introduce yourself in Japanese.',\n      createdAt: new Date()\n    }]\n  });\n\n  console.log('Ollama Response:', JSON.stringify(response, null, 2));\n}\n\nrunOllamaExample().catch(console.error);\n```\n\n## Environment Variables\n\n```env\nOPENAI_API_KEY=your-openai-key\nANTHROPIC_API_KEY=your-anthropic-key\nGOOGLE_API_KEY=your-google-key\nDEEPSEEK_API_KEY=your-deepseek-key\nAZURE_OPENAI_KEY=your-azure-key  # For Azure OpenAI\nAZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com  # For Azure OpenAI\nAZURE_OPENAI_DEPLOYMENT=your-deployment-name  # For Azure OpenAI\nUNIFIED_LLM_DB_PATH=./chat-history.db  # Optional custom DB path\n```\n\n## Supported Providers\n\n| Provider | Models | Features |\n|----------|---------|----------|\n| **OpenAI** | GPT-4o, GPT-4o-mini, GPT-4, GPT-3.5 | Function calling, streaming, vision, structured output |\n| **Anthropic** | Claude 3.5 (Sonnet), Claude 3 (Opus, Sonnet, Haiku) | Tool use, streaming, long context, structured output |\n| **Google** | Gemini 2.0 Flash, Gemini 1.5 Pro/Flash | Function calling, multimodal, structured output |\n| **DeepSeek** | DeepSeek-Chat, DeepSeek-Coder | Function calling, streaming, code generation, structured output |\n| **Azure OpenAI** | GPT-4o, GPT-4, GPT-3.5 (via Azure deployments) | Function calling, streaming, structured output |\n| **Ollama** | Llama 3, Mistral, CodeLlama, Phi, Gemma, Mixtral, etc. | Local execution, OpenAI-compatible API, no API key required |\n\n## API Methods\n\n### Core Methods\n\n```typescript\n// Main chat method - returns complete response\nawait client.chat(request: UnifiedChatRequest)\n\n// Streaming responses (returns async generator)\nfor await (const chunk of client.stream(request)) {\n  console.log(chunk);\n}\n```\n\n**Note:** Persistence methods are experimental; there is a possibility that they may be removed or moved to a separate package in the future.\n\n### Persistence Methods\n\n```typescript\n// Save LLM client configuration\nawait LLMClient.save(config: LLMClientConfig)\n\n// Load saved LLM client\nawait LLMClient.fromSaved(id: string, apiKey?: string)\n\n// Get saved configuration\nawait LLMClient.getConfig(id: string)\n\n// List saved LLM clients\nawait LLMClient.list(options?: { provider?: string, includeInactive?: boolean })\n\n// Update configuration\nawait LLMClient.update(id: string, updates: Partial<LLMClientConfig>)\n\n// Soft delete LLM client\nawait LLMClient.delete(id: string)\n```\n\n## Requirements\n\n- Node.js 20 or higher\n- TypeScript 5.4.5 or higher (for development)\n\n## License\n\nMIT - see [LICENSE](https://github.com/rhyizm/unified-llm/blob/main/LICENSE) for details.\n\n## Links\n\n- 🏠 [Homepage](https://github.com/rhyizm/unified-llm)\n- 🐛 [Report Issues](https://github.com/rhyizm/unified-llm/issues)\n- 💬 [Discussions](https://github.com/rhyizm/unified-llm/discussions)\n","readmeFilename":"README.md"}