{"_id":"@ank1015/llm-core","_rev":"9-2747c6fc4379298cd4cf21a93d8c6cc5","name":"@ank1015/llm-core","dist-tags":{"latest":"0.0.9"},"versions":{"0.0.1":{"name":"@ank1015/llm-core","version":"0.0.1","keywords":["llm","sdk","ai"],"license":"MIT","_id":"@ank1015/llm-core@0.0.1","maintainers":[{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"}],"dist":{"shasum":"f0c01b07ca9d34f4c31e532bd05c1c66b57e3f8f","tarball":"https://registry.npmjs.org/@ank1015/llm-core/-/llm-core-0.0.1.tgz","fileCount":278,"integrity":"sha512-TDA9UuBtj/Vd97DwJ2w0bnlZuUHfGUdBZWVobBjMA95E22bxeKch/Vn49OxaT9TlxxI9kB+gp9aUMRG6bIcDrA==","signatures":[{"sig":"MEYCIQDTxvg/zXrcLEXegw+6BYE/DLdMZrPlUHyzdUY9Xetz+wIhAOe9FK4cvZdOy2tiWYfYQyVzJVx1xeFKL3dwKSkqeKoJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1106700},"main":"./dist/index.js","type":"module","_from":"file:ank1015-llm-core-0.0.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"echo 'No linter configured yet'","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"},"_resolved":"/private/var/folders/1n/t7lbn2t179zg_xjbmn62ypmr0000gn/T/8de2cbc5fe70b1e1dd4951c608b2e309/ank1015-llm-core-0.0.1.tgz","_integrity":"sha512-TDA9UuBtj/Vd97DwJ2w0bnlZuUHfGUdBZWVobBjMA95E22bxeKch/Vn49OxaT9TlxxI9kB+gp9aUMRG6bIcDrA==","_npmVersion":"11.6.2","description":"Core SDK for LLM interactions","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ajv":"^8.17.1","uuid":"^13.0.0","openai":"^6.17.0","ajv-formats":"^3.0.1","partial-json":"^0.1.7","@google/genai":"^1.39.0","@anthropic-ai/sdk":"^0.72.1","@sinclair/typebox":"^0.34.48","@ank1015/llm-types":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/llm-core_0.0.1_1772789878177_0.38809329165042206","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@ank1015/llm-core","version":"0.0.2","keywords":["llm","sdk","ai","openai","anthropic","google","streaming","agents","typescript"],"license":"MIT","_id":"@ank1015/llm-core@0.0.2","maintainers":[{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"}],"homepage":"https://github.com/ank1015/llm/tree/main/packages/core","bugs":{"url":"https://github.com/ank1015/llm/issues"},"dist":{"shasum":"79aa4d5de1b39eef01b1e286199267857de7cee8","tarball":"https://registry.npmjs.org/@ank1015/llm-core/-/llm-core-0.0.2.tgz","fileCount":272,"integrity":"sha512-/XknTgHUPKCrNIh7sfxrHr1G3cCuk/r/65RcmLhxE2ckWHRxTIzHwz7ATR+dOk2yWkJ5WPCLbCJQUODUcGzfvw==","signatures":[{"sig":"MEUCIQClJSn9TNmn7x0eV1tu6fl1RLFdm4jEr6dyDqjAOrKMewIgSwYsxctZ0vZHy+afWYgZ5Hr6eL5hvCjmK5rVwoMvBVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1075801},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d615b832f580e83358bdf56b9c7c89f4dbf630ad","scripts":{"dev":"tsc --watch","lint":"eslint src tests scripts vitest.config.ts vitest.setup.ts","test":"pnpm run test:unit && pnpm run test:integration","build":"rm -rf dist *.tsbuildinfo && tsc","clean":"rm -rf dist coverage *.tsbuildinfo","prepack":"pnpm run build","test:unit":"vitest run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run tests/unit --coverage","test:integration":"node ./scripts/run-integration-tests.mjs"},"_npmUser":{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"},"repository":{"url":"git+https://github.com/ank1015/llm.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Stateless multi-provider LLM runtime with normalized streaming events and preserved native responses","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ajv":"^8.17.1","uuid":"^13.0.0","openai":"^6.27.0","ajv-formats":"^3.0.1","partial-json":"^0.1.7","@google/genai":"^1.44.0","@anthropic-ai/sdk":"^0.78.0","@sinclair/typebox":"^0.34.48","@ank1015/llm-types":"workspace:^"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/llm-core_0.0.2_1773528020666_0.9496065980306316","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@ank1015/llm-core","version":"0.0.3","keywords":["llm","sdk","ai","openai","anthropic","google","streaming","agents","typescript"],"license":"MIT","_id":"@ank1015/llm-core@0.0.3","maintainers":[{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"}],"homepage":"https://github.com/ank1015/llm/tree/main/packages/core","bugs":{"url":"https://github.com/ank1015/llm/issues"},"dist":{"shasum":"6462dc463bf09f01bb78f5716db1388363b22452","tarball":"https://registry.npmjs.org/@ank1015/llm-core/-/llm-core-0.0.3.tgz","fileCount":272,"integrity":"sha512-i2vaznBAlHDA2v/ppkz51pcapAAH261pMmlpGx2sGRUVFK1jxtOZGO2UOF6A2GZITTd/viGm+m4nFe3TUwmZKA==","signatures":[{"sig":"MEUCIBVNFD6hY5Fo99XzTip/UpI48UgjGBZoDNrrvQgtNTPOAiEA1QMMD2RZPxedTdkRJUwplAd5M0gWVxs5ZT2Onx6Ak6o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1082215},"main":"./dist/index.js","type":"module","_from":"file:ank1015-llm-core-0.0.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint src tests scripts vitest.config.ts vitest.setup.ts","test":"pnpm run test:unit && pnpm run test:integration","build":"rm -rf dist *.tsbuildinfo && tsc","clean":"rm -rf dist coverage *.tsbuildinfo","test:unit":"vitest run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run tests/unit --coverage","test:integration":"node ./scripts/run-integration-tests.mjs"},"_npmUser":{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"},"_resolved":"/private/var/folders/1n/t7lbn2t179zg_xjbmn62ypmr0000gn/T/6dc5b31c0864c1a5c5b8ba6286447cb4/ank1015-llm-core-0.0.3.tgz","_integrity":"sha512-i2vaznBAlHDA2v/ppkz51pcapAAH261pMmlpGx2sGRUVFK1jxtOZGO2UOF6A2GZITTd/viGm+m4nFe3TUwmZKA==","repository":{"url":"git+https://github.com/ank1015/llm.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Stateless multi-provider LLM runtime with normalized streaming events and preserved native responses","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ajv":"^8.17.1","uuid":"^13.0.0","openai":"^6.27.0","ajv-formats":"^3.0.1","partial-json":"^0.1.7","@google/genai":"^1.44.0","@anthropic-ai/sdk":"^0.78.0","@sinclair/typebox":"^0.34.48","@ank1015/llm-types":"^0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/llm-core_0.0.3_1774468165383_0.9602856558524202","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@ank1015/llm-core","version":"0.0.4","keywords":["llm","sdk","ai","openai","anthropic","google","streaming","agents","typescript"],"license":"MIT","_id":"@ank1015/llm-core@0.0.4","maintainers":[{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"}],"homepage":"https://github.com/ank1015/llm/tree/main/packages/core","bugs":{"url":"https://github.com/ank1015/llm/issues"},"dist":{"shasum":"f4ed90f8fec758f3e7c310f92db79adf5994d1f1","tarball":"https://registry.npmjs.org/@ank1015/llm-core/-/llm-core-0.0.4.tgz","fileCount":272,"integrity":"sha512-NWXyAbuBm7Uw7WYD5LHmUqdiRxNhuErNv1eNClgHLDGFPdFBUXvCt8xtyf1oWw4Xm0D5FceAFN+udpd7GM/KYg==","signatures":[{"sig":"MEUCIDcV6X3AX36LXvWvvZCH3T+z4RU+zw0oXJy0FGQ3GaJbAiEAg41ZSIvunqDB24J32J92aiCubPcNbna4Bnmpk5XM5GI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1082487},"main":"./dist/index.js","type":"module","_from":"file:ank1015-llm-core-0.0.4.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint src tests scripts vitest.config.ts vitest.setup.ts","test":"pnpm run test:unit && pnpm run test:integration","build":"rm -rf dist *.tsbuildinfo && tsc","clean":"rm -rf dist coverage *.tsbuildinfo","test:unit":"vitest run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run tests/unit --coverage","test:integration":"node ./scripts/run-integration-tests.mjs"},"_npmUser":{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"},"_resolved":"/private/var/folders/1n/t7lbn2t179zg_xjbmn62ypmr0000gn/T/6da72439def0a87d3d4e9e28a322e43c/ank1015-llm-core-0.0.4.tgz","_integrity":"sha512-NWXyAbuBm7Uw7WYD5LHmUqdiRxNhuErNv1eNClgHLDGFPdFBUXvCt8xtyf1oWw4Xm0D5FceAFN+udpd7GM/KYg==","repository":{"url":"git+https://github.com/ank1015/llm.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Stateless multi-provider LLM runtime with normalized streaming events and preserved native responses","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ajv":"^8.17.1","uuid":"^13.0.0","openai":"^6.27.0","ajv-formats":"^3.0.1","partial-json":"^0.1.7","@google/genai":"^1.44.0","@anthropic-ai/sdk":"^0.78.0","@sinclair/typebox":"^0.34.48","@ank1015/llm-types":"^0.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/llm-core_0.0.4_1774536128271_0.6510155322924833","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@ank1015/llm-core","version":"0.0.5","keywords":["llm","sdk","ai","openai","anthropic","google","streaming","agents","typescript"],"license":"MIT","_id":"@ank1015/llm-core@0.0.5","maintainers":[{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"}],"homepage":"https://github.com/ank1015/llm/tree/main/packages/core","bugs":{"url":"https://github.com/ank1015/llm/issues"},"dist":{"shasum":"7a2b1bc35fd40151e995990a50e016d71550059f","tarball":"https://registry.npmjs.org/@ank1015/llm-core/-/llm-core-0.0.5.tgz","fileCount":374,"integrity":"sha512-1t5VALe+wuY+lxAF52CDDQlAxgxhbx0nw7M5++Oa2qZrxPty8Q0GyuscFTM/66tMu3h8w8Gxc2NXQ4SehMZKdA==","signatures":[{"sig":"MEUCICEk0YzIthFymcIXIhQoLOyjLRWbfDdGmQ2Cv2euDedXAiEAhrIERW0Ysg0bk1igDS3vW+u6du7aGQXeRTmqsEoPmts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1207047},"main":"./dist/index.js","type":"module","_from":"file:ank1015-llm-core-0.0.5.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint src tests vitest.config.ts vitest.setup.ts","test":"pnpm run test:unit && pnpm run test:integration","build":"node ../../scripts/remove-paths.mjs dist --tsbuildinfo && tsc","clean":"node ../../scripts/remove-paths.mjs dist coverage --tsbuildinfo","test:unit":"vitest run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest","release:check":"pnpm run build && pnpm run typecheck && pnpm run lint && pnpm run test:unit && pnpm run test:coverage","test:coverage":"vitest run tests/unit --coverage","test:integration":"vitest run tests/integration"},"_npmUser":{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"},"_resolved":"/private/var/folders/1n/t7lbn2t179zg_xjbmn62ypmr0000gn/T/ae8478810438dfb81414d6a119a890fa/ank1015-llm-core-0.0.5.tgz","_integrity":"sha512-1t5VALe+wuY+lxAF52CDDQlAxgxhbx0nw7M5++Oa2qZrxPty8Q0GyuscFTM/66tMu3h8w8Gxc2NXQ4SehMZKdA==","repository":{"url":"git+https://github.com/ank1015/llm.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Stateless multi-provider LLM runtime with normalized streaming events and preserved native responses","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ajv":"^8.17.1","uuid":"^13.0.0","openai":"^6.27.0","ajv-formats":"^3.0.1","partial-json":"^0.1.7","@google/genai":"^1.44.0","@anthropic-ai/sdk":"^0.78.0","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@vitest/coverage-v8":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/llm-core_0.0.5_1775148390238_0.960911659838378","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@ank1015/llm-core","version":"0.0.6","keywords":["llm","sdk","ai","openai","anthropic","google","streaming","agents","typescript"],"license":"MIT","_id":"@ank1015/llm-core@0.0.6","maintainers":[{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"}],"homepage":"https://github.com/ank1015/llm/tree/main/packages/core","bugs":{"url":"https://github.com/ank1015/llm/issues"},"dist":{"shasum":"6f443daebc164e8a8f14de6521dc3dd597afacc4","tarball":"https://registry.npmjs.org/@ank1015/llm-core/-/llm-core-0.0.6.tgz","fileCount":543,"integrity":"sha512-u79PFk2gNLpdF6Ik2veKRjddGW89khgY33loAm+2wOuV5JdY8pjbxxgBDdgxgUntADbdZnM7AsQ8tUsQ89sXUA==","signatures":[{"sig":"MEYCIQCzaz8IiivomBbeg26SDYGU+v1x3Gi9nnLZDJNxgD0YggIhAJCAKTZ4EQkNtniVjlfAkM877Ev5YYLf1ZoMKePnurvq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1403654},"main":"./dist/index.js","type":"module","_from":"file:ank1015-llm-core-0.0.6.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint src tests vitest.config.ts vitest.setup.ts","test":"pnpm run test:unit && pnpm run test:integration","build":"node ../../scripts/remove-paths.mjs dist --tsbuildinfo && tsc","clean":"node ../../scripts/remove-paths.mjs dist coverage --tsbuildinfo","test:unit":"vitest run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest","release:check":"pnpm run build && pnpm run typecheck && pnpm run lint && pnpm run test:unit && pnpm run test:coverage","test:coverage":"vitest run tests/unit --coverage","test:integration":"vitest run tests/integration"},"_npmUser":{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"},"_resolved":"/private/var/folders/1n/t7lbn2t179zg_xjbmn62ypmr0000gn/T/d9664a14d4deb9f610deed6fa59719ce/ank1015-llm-core-0.0.6.tgz","_integrity":"sha512-u79PFk2gNLpdF6Ik2veKRjddGW89khgY33loAm+2wOuV5JdY8pjbxxgBDdgxgUntADbdZnM7AsQ8tUsQ89sXUA==","repository":{"url":"git+https://github.com/ank1015/llm.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Stateless multi-provider LLM runtime with normalized streaming events and preserved native responses","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ajv":"^8.17.1","uuid":"^13.0.0","openai":"^6.27.0","ajv-formats":"^3.0.1","partial-json":"^0.1.7","@google/genai":"^1.44.0","@anthropic-ai/sdk":"^0.78.0","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@vitest/coverage-v8":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/llm-core_0.0.6_1776012989570_0.7774640983445908","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@ank1015/llm-core","version":"0.0.7","keywords":["llm","sdk","ai","openai","anthropic","google","streaming","agents","typescript"],"license":"MIT","_id":"@ank1015/llm-core@0.0.7","maintainers":[{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"}],"homepage":"https://github.com/ank1015/llm/tree/main/packages/core","bugs":{"url":"https://github.com/ank1015/llm/issues"},"dist":{"shasum":"1709c793ecfd6050e7c89bb0c381561705d410f1","tarball":"https://registry.npmjs.org/@ank1015/llm-core/-/llm-core-0.0.7.tgz","fileCount":543,"integrity":"sha512-bm5wP4V6B6qd/Y0boI8ynL+JURqIVNaah6xk9iPfooYv12UoNQlow3F57664hHb7ZnY3K8PkG7yFB4PuoAXLyQ==","signatures":[{"sig":"MEUCIGKqLhUu+ZJzjdwEMiQ/unKZNlX/1vgrDerTIWAsbhLsAiEAjw4PGxdbfdMiaVqkmE3Wq2UUQOC8756kIfvoCYceC2g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1409103},"main":"./dist/index.js","type":"module","_from":"file:/tmp/llm-runtime-packs/ank1015-llm-core-0.0.7.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint src tests vitest.config.ts vitest.setup.ts","test":"pnpm run test:unit && pnpm run test:integration","build":"node ../../scripts/remove-paths.mjs dist --tsbuildinfo && tsc","clean":"node ../../scripts/remove-paths.mjs dist coverage --tsbuildinfo","test:unit":"vitest run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest","release:check":"pnpm run build && pnpm run typecheck && pnpm run lint && pnpm run test:unit && pnpm run test:coverage","test:coverage":"vitest run tests/unit --coverage","test:integration":"vitest run tests/integration"},"_npmUser":{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"},"_resolved":"/tmp/llm-runtime-packs/ank1015-llm-core-0.0.7.tgz","_integrity":"sha512-bm5wP4V6B6qd/Y0boI8ynL+JURqIVNaah6xk9iPfooYv12UoNQlow3F57664hHb7ZnY3K8PkG7yFB4PuoAXLyQ==","repository":{"url":"git+https://github.com/ank1015/llm.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Stateless multi-provider LLM runtime with normalized streaming events and preserved native responses","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ajv":"^8.17.1","uuid":"^13.0.0","openai":"^6.27.0","ajv-formats":"^3.0.1","partial-json":"^0.1.7","@google/genai":"^1.44.0","@anthropic-ai/sdk":"^0.78.0","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@vitest/coverage-v8":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/llm-core_0.0.7_1776280555854_0.36556776941444014","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@ank1015/llm-core","version":"0.0.8","keywords":["llm","sdk","ai","openai","anthropic","google","streaming","agents","typescript"],"license":"MIT","_id":"@ank1015/llm-core@0.0.8","maintainers":[{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"}],"homepage":"https://github.com/ank1015/llm/tree/main/packages/core","bugs":{"url":"https://github.com/ank1015/llm/issues"},"dist":{"shasum":"fba6844d19742fc5e7710211ed30da388485edfc","tarball":"https://registry.npmjs.org/@ank1015/llm-core/-/llm-core-0.0.8.tgz","fileCount":543,"integrity":"sha512-IO93Lwgz2LxXx2NwBuWvOuQNbqUbLWPk1YiHWHrcOKRHkWlmR8v7jV7iwRKMhmODrHFqV9o2yLxkv9HqzogouQ==","signatures":[{"sig":"MEQCIHzcLktWQL6Cf9YjI2XjJe1VQMiw8fkCmCfV7BLDwzegAiBvNlIEHyadB65SqHKER7PhIgwAHY6fdHA6sWnsLekRDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1410098},"main":"./dist/index.js","type":"module","_from":"file:ank1015-llm-core-0.0.8.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","lint":"eslint src tests vitest.config.ts vitest.setup.ts","test":"pnpm run test:unit && pnpm run test:integration","build":"node ../../scripts/remove-paths.mjs dist --tsbuildinfo && tsc","clean":"node ../../scripts/remove-paths.mjs dist coverage --tsbuildinfo","test:unit":"vitest run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest","release:check":"pnpm run build && pnpm run typecheck && pnpm run lint && pnpm run test:unit && pnpm run test:coverage","test:coverage":"vitest run tests/unit --coverage","test:integration":"vitest run tests/integration"},"_npmUser":{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"},"_resolved":"/private/var/folders/1n/t7lbn2t179zg_xjbmn62ypmr0000gn/T/b85cb6cf2165701e4e51906847806c63/ank1015-llm-core-0.0.8.tgz","_integrity":"sha512-IO93Lwgz2LxXx2NwBuWvOuQNbqUbLWPk1YiHWHrcOKRHkWlmR8v7jV7iwRKMhmODrHFqV9o2yLxkv9HqzogouQ==","repository":{"url":"git+https://github.com/ank1015/llm.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Stateless multi-provider LLM runtime with normalized streaming events and preserved native responses","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ajv":"^8.17.1","uuid":"^13.0.0","openai":"^6.27.0","ajv-formats":"^3.0.1","partial-json":"^0.1.7","@google/genai":"^1.44.0","@anthropic-ai/sdk":"^0.78.0","@sinclair/typebox":"^0.34.48"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","@vitest/coverage-v8":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/llm-core_0.0.8_1776331114944_0.39877367700956645","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@ank1015/llm-core","version":"0.0.9","description":"Stateless multi-provider LLM runtime with normalized streaming events and preserved native responses","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"devDependencies":{"@vitest/coverage-v8":"^2.1.0","vitest":"^2.1.0"},"keywords":["llm","sdk","ai","openai","anthropic","google","streaming","agents","typescript"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ank1015/llm.git","directory":"packages/core"},"homepage":"https://github.com/ank1015/llm/tree/main/packages/core","bugs":{"url":"https://github.com/ank1015/llm/issues"},"publishConfig":{"access":"public"},"dependencies":{"@anthropic-ai/sdk":"^0.78.0","@aws-sdk/client-bedrock-runtime":"^3.1038.0","@aws-sdk/credential-providers":"^3.1038.0","@google/genai":"^1.44.0","@sinclair/typebox":"^0.34.48","ajv":"^8.17.1","ajv-formats":"^3.0.1","openai":"^6.27.0","partial-json":"^0.1.7","uuid":"^13.0.0"},"scripts":{"build":"node ../../scripts/remove-paths.mjs dist --tsbuildinfo && tsc","dev":"tsc --watch","test":"pnpm run test:unit && pnpm run test:integration","test:unit":"vitest run tests/unit","test:integration":"vitest run tests/integration","test:coverage":"vitest run tests/unit --coverage","test:watch":"vitest","typecheck":"tsc --noEmit","lint":"eslint src tests vitest.config.ts vitest.setup.ts","release:check":"pnpm run build && pnpm run typecheck && pnpm run lint && pnpm run test:unit && pnpm run test:coverage","clean":"node ../../scripts/remove-paths.mjs dist coverage --tsbuildinfo"},"_id":"@ank1015/llm-core@0.0.9","_integrity":"sha512-Vzt05P199V354jpDuGlQ5l2j9IuswZVjek4eo310VmNbupX7VSd2DjGDfq1xzEJAFSXRswTiWhz8aXev4WcUlg==","_resolved":"/private/var/folders/1n/t7lbn2t179zg_xjbmn62ypmr0000gn/T/e122bc5fa32a566dfe20c20f73aa73df/ank1015-llm-core-0.0.9.tgz","_from":"file:ank1015-llm-core-0.0.9.tgz","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-Vzt05P199V354jpDuGlQ5l2j9IuswZVjek4eo310VmNbupX7VSd2DjGDfq1xzEJAFSXRswTiWhz8aXev4WcUlg==","shasum":"00fb13d496016f4cbd90a681483e523475ae1cbf","tarball":"https://registry.npmjs.org/@ank1015/llm-core/-/llm-core-0.0.9.tgz","fileCount":609,"unpackedSize":1564501,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCOipDRxxQzWltaQBh8uP0q0LFpzvf6qWti8Hmp9sFFdgIgUb9yVXOUMF5RFxDPkFWS21MTYkNNUg495iQgAWr5wW8="}]},"_npmUser":{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"},"directories":{},"maintainers":[{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/llm-core_0.0.9_1778004571493_0.44995266926732724"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-06T09:37:58.068Z","modified":"2026-05-05T18:09:31.832Z","0.0.1":"2026-03-06T09:37:58.409Z","0.0.2":"2026-03-14T22:40:20.820Z","0.0.3":"2026-03-25T19:49:25.548Z","0.0.4":"2026-03-26T14:42:08.416Z","0.0.5":"2026-04-02T16:46:30.438Z","0.0.6":"2026-04-12T16:56:29.766Z","0.0.7":"2026-04-15T19:15:56.020Z","0.0.8":"2026-04-16T09:18:35.176Z","0.0.9":"2026-05-05T18:09:31.708Z"},"bugs":{"url":"https://github.com/ank1015/llm/issues"},"license":"MIT","homepage":"https://github.com/ank1015/llm/tree/main/packages/core","keywords":["llm","sdk","ai","openai","anthropic","google","streaming","agents","typescript"],"repository":{"type":"git","url":"git+https://github.com/ank1015/llm.git","directory":"packages/core"},"description":"Stateless multi-provider LLM runtime with normalized streaming events and preserved native responses","maintainers":[{"name":"ananya150","email":"ananyakhandelwal60@gmail.com"}],"readme":"# @ank1015/llm-core\n\nStateless multi-provider runtime for LLM chat, image generation, music generation, video generation, preserved native provider responses, and a lightweight agent loop.\n\n## What You Get\n\n- A single `stream()` entry point for built-in providers\n- `complete()` built on top of the same streaming path\n- A dedicated `generateImage()` entry point for built-in image providers\n- A dedicated `generateMusic()` entry point for built-in music providers\n- A dedicated `generateVideo()` entry point for built-in video providers\n- Typed model catalogs and helpers like `getModel()`, `getModels()`, and `calculateCost()`\n- Typed image model helpers like `getImageModel()`, `getImageModels()`, `getImageProviders()`, and `calculateImageCost()`\n- Typed music model helpers like `getMusicModel()`, `getMusicModels()`, `getMusicProviders()`, and `calculateMusicCost()`\n- Typed video model helpers like `getVideoModel()`, `getVideoModels()`, `getVideoProviders()`, and `calculateVideoCost()`\n- A normalized assistant message format with text, reasoning, tool-call, and usage blocks\n- A small stateless agent engine with tool execution, retries, hooks, and adapter helpers\n\n## Installation\n\n```bash\npnpm add @ank1015/llm-core @sinclair/typebox\n```\n\n## Supported Providers\n\n- OpenAI\n- Azure OpenAI\n- AWS Bedrock\n- Codex\n- Google\n- DeepSeek\n- Anthropic\n- Claude Code\n- Z.AI\n- Kimi\n- MiniMax\n- Cerebras\n- OpenRouter\n\nProvider auth notes and integration-test env vars are documented in [docs/providers.md](./docs/providers.md).\n\n## Supported Image Providers\n\n- OpenAI Images API: `gpt-image-1.5`\n- Azure OpenAI Images API: `gpt-image-2`\n- Google Gemini native image generation: `gemini-3.1-flash-image-preview`, `gemini-3-pro-image-preview`\n\nImage-provider notes and the image runtime surface are documented in [docs/images.md](./docs/images.md).\n\n## Supported Music Providers\n\n- Google Lyria: `lyria-3-clip-preview`, `lyria-3-pro-preview`\n\nMusic-provider notes and the music runtime surface are documented in [docs/music.md](./docs/music.md).\n\n## Supported Video Providers\n\n- Google Veo: `veo-3.1-generate-preview`, `veo-3.1-fast-generate-preview`, `veo-3.1-lite-generate-preview`\n\nVideo-provider notes and the video runtime surface are documented in [docs/videos.md](./docs/videos.md).\n\n## Quick Start\n\n```ts\nimport { complete, getModel } from '@ank1015/llm-core';\n\nconst model = getModel('openai', 'gpt-5.4');\n\nif (!model) {\n  throw new Error('Model not found');\n}\n\nconst result = await complete(\n  model,\n  {\n    systemPrompt: 'You are a concise assistant.',\n    messages: [\n      {\n        role: 'user',\n        id: 'user-1',\n        content: [{ type: 'text', content: 'Explain event sourcing in one paragraph.' }],\n      },\n    ],\n  },\n  { apiKey: process.env.OPENAI_API_KEY! },\n  'msg-1'\n);\n\nconsole.log(result.stopReason);\nconsole.log(result.usage.totalTokens);\nconsole.log(result.content);\n```\n\n## Streaming\n\n`stream()` returns an async event stream with normalized lifecycle events and a `result()`/`drain()` helper.\n\n```ts\nimport { getModel, stream } from '@ank1015/llm-core';\n\nconst model = getModel('google', 'gemini-2.5-flash');\n\nif (!model) {\n  throw new Error('Model not found');\n}\n\nconst assistantStream = stream(\n  model,\n  {\n    messages: [\n      {\n        role: 'user',\n        id: 'user-1',\n        content: [{ type: 'text', content: 'List three practical uses of Web Streams.' }],\n      },\n    ],\n  },\n  { apiKey: process.env.GEMINI_API_KEY! },\n  'msg-2'\n);\n\nfor await (const event of assistantStream) {\n  if (event.type === 'text_delta') {\n    process.stdout.write(event.delta);\n  }\n}\n\nconst finalMessage = await assistantStream.result();\nconsole.log(finalMessage.usage.cost.total);\n```\n\nThe normalized event model includes:\n\n- `start`\n- `text_start`, `text_delta`, `text_end`\n- `thinking_start`, `thinking_delta`, `thinking_end`\n- `toolcall_start`, `toolcall_delta`, `toolcall_end`\n- `done`\n- `error`\n\nSee the canonical message and event contracts in [src/types/message.ts](./src/types/message.ts).\n\n## Model Catalog\n\nThe package root pre-registers built-in providers and exports model helpers:\n\n```ts\nimport { calculateCost, getModel, getModels, getProviders } from '@ank1015/llm-core';\n\nconst providers = getProviders();\nconst openaiModels = getModels('openai');\nconst model = getModel('anthropic', 'claude-sonnet-4');\n\nif (model) {\n  const cost = calculateCost(model, {\n    input: 1000,\n    output: 250,\n    cacheRead: 0,\n    cacheWrite: 0,\n    totalTokens: 1250,\n    cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n  });\n\n  console.log(providers.length, openaiModels.length, cost.total);\n}\n```\n\n## Image Generation\n\n`generateImage()` is a separate non-streaming runtime for image providers. It returns normalized `content`, an `images` convenience array, normalized image usage with computed `usage.cost`, and the preserved provider-native response.\n\n```ts\nimport { generateImage, getImageModel } from '@ank1015/llm-core';\n\nconst model = getImageModel('openai', 'gpt-image-1.5');\n\nif (!model) {\n  throw new Error('Image model not found');\n}\n\nconst result = await generateImage(\n  model,\n  {\n    prompt: 'Create a studio product shot of a silver robot watering a bonsai tree.',\n  },\n  {\n    apiKey: process.env.OPENAI_API_KEY!,\n    background: 'transparent',\n    quality: 'high',\n  },\n  'img-1'\n);\n\nconsole.log(result.images[0]?.mimeType);\nconsole.log(result.usage.totalTokens);\nconsole.log(result.usage.cost.total);\nconsole.log(result.response);\n```\n\nAzure OpenAI image generation uses the same `generateImage()` surface with Azure endpoint/API-version options. Google image generation also uses this surface, but may return both text and image blocks in `result.content`.\n\nImage usage comes from the provider-native response. Image cost is derived locally from the built-in image model pricing with `calculateImageCost()`.\n\n## Music Generation\n\n`generateMusic()` is a separate non-streaming runtime for music providers. It returns normalized `content`, a `tracks` convenience array, normalized music usage with request-based `usage.cost`, and the preserved provider-native response.\n\n```ts\nimport { generateMusic, getMusicModel } from '@ank1015/llm-core';\n\nconst model = getMusicModel('google', 'lyria-3-pro-preview');\n\nif (!model) {\n  throw new Error('Music model not found');\n}\n\nconst result = await generateMusic(\n  model,\n  {\n    prompt: 'An atmospheric ambient track with soft piano, distant choir, and a slow build.',\n  },\n  {\n    apiKey: process.env.GEMINI_API_KEY!,\n    responseMimeType: 'audio/wav',\n  },\n  'music-1'\n);\n\nconsole.log(result.tracks[0]?.mimeType);\nconsole.log(result.usage.totalTokens);\nconsole.log(result.usage.cost.total);\nconsole.log(result.response);\n```\n\nGoogle Lyria uses `generateContent()` and may return lyrics or structural notes as text blocks alongside the generated audio track. Music cost is derived locally from the built-in per-request model pricing with `calculateMusicCost()`.\n\n## Video Generation\n\n`generateVideo()` is a separate non-streaming runtime for video providers. It waits for long-running provider operations to complete, then returns normalized `videos`, the preserved operation, the preserved provider-native response, and normalized video usage with estimated `usage.cost` when model pricing is available.\n\n```ts\nimport { generateVideo, getVideoModel } from '@ank1015/llm-core';\n\nconst model = getVideoModel('google', 'veo-3.1-generate-preview');\n\nif (!model) {\n  throw new Error('Video model not found');\n}\n\nconst result = await generateVideo(\n  model,\n  {\n    prompt: 'A slow cinematic drone reveal of a misty rainforest waterfall at sunrise.',\n  },\n  {\n    apiKey: process.env.GEMINI_API_KEY!,\n    aspectRatio: '16:9',\n    durationSeconds: 4,\n    pollIntervalMs: 5000,\n  },\n  'video-1'\n);\n\nconsole.log(result.videos[0]?.uri);\nconsole.log(result.operation.done);\nconsole.log(result.usage.cost?.total);\nconsole.log(result.response);\n```\n\nGoogle Veo does not currently expose provider-native usage metadata for this runtime, so core estimates `usage.cost` from the built-in per-second model pricing plus the resolved request settings like `durationSeconds`, `resolution`, and `numberOfVideos`.\n\n## Tool Calling\n\nTools are defined with TypeBox schemas and passed through `Context.tools`.\n\n```ts\nimport { Type } from '@sinclair/typebox';\nimport { complete, getModel } from '@ank1015/llm-core';\n\nconst model = getModel('openai', 'gpt-5.4');\n\nif (!model) {\n  throw new Error('Model not found');\n}\n\nconst result = await complete(\n  model,\n  {\n    messages: [\n      {\n        role: 'user',\n        id: 'user-1',\n        content: [{ type: 'text', content: 'Call get_weather for Tokyo.' }],\n      },\n    ],\n    tools: [\n      {\n        name: 'get_weather',\n        description: 'Get the current weather for a location.',\n        parameters: Type.Object({\n          location: Type.String(),\n        }),\n      },\n    ],\n  },\n  { apiKey: process.env.OPENAI_API_KEY! },\n  'msg-3'\n);\n\nconst toolCall = result.content.find((block) => block.type === 'toolCall');\nconsole.log(toolCall);\n```\n\n## File Inputs\n\nUser messages and tool results can include base64-encoded files. Core's integration suite covers PDF-grounded flows for OpenAI, Google, Anthropic, and Codex.\n\n```ts\nimport { complete, getModel } from '@ank1015/llm-core';\nimport fs from 'node:fs';\n\nconst model = getModel('openai', 'gpt-5.4');\n\nif (!model) {\n  throw new Error('Model not found');\n}\n\nconst pdfBase64 = fs.readFileSync('./paper.pdf').toString('base64');\n\nconst result = await complete(\n  model,\n  {\n    messages: [\n      {\n        role: 'user',\n        id: 'user-1',\n        content: [\n          {\n            type: 'file',\n            data: pdfBase64,\n            mimeType: 'application/pdf',\n            filename: 'paper.pdf',\n          },\n          {\n            type: 'text',\n            content: 'Read the PDF and summarize the main idea in two sentences.',\n          },\n        ],\n      },\n    ],\n  },\n  { apiKey: process.env.OPENAI_API_KEY! },\n  'msg-4'\n);\n```\n\n## Agent Engine\n\nThe root export also includes a stateless agent engine, helper builders, and the default streaming-backed model invoker.\n\n```ts\nimport { Type } from '@sinclair/typebox';\nimport { buildUserMessage, defaultModelInvoker, getModel, runAgent } from '@ank1015/llm-core';\n\nconst model = getModel('anthropic', 'claude-haiku-4-5');\n\nif (!model) {\n  throw new Error('Model not found');\n}\n\nconst result = await runAgent(\n  {\n    provider: {\n      model,\n      providerOptions: {\n        apiKey: process.env.ANTHROPIC_API_KEY!,\n      },\n    },\n    modelInvoker: defaultModelInvoker,\n    systemPrompt: 'You are a careful research assistant.',\n    tools: [\n      {\n        name: 'get_weather',\n        description: 'Return weather for a city.',\n        parameters: Type.Object({\n          city: Type.String(),\n        }),\n        async execute({ params }) {\n          return {\n            content: [{ type: 'text', content: `Weather for ${params.city}: sunny` }],\n          };\n        },\n      },\n    ],\n  },\n  {\n    messages: [buildUserMessage('Use the weather tool for Tokyo and then answer.')],\n    totalCost: 0,\n    totalTokens: 0,\n    turns: 0,\n  }\n);\n\nconsole.log(result.state.messages);\n```\n\n## Advanced Provider Registration\n\nThe package root exports `registerProvider()` for advanced integrations that need to add a provider to the runtime registry.\n\n```ts\nimport { registerProvider } from '@ank1015/llm-core';\n\nregisterProvider('my-provider', {\n  stream: myProviderStream,\n  getMockNativeMessage: () => ({}),\n});\n```\n\n## Validation\n\nCore now ships with a release-safe validation command:\n\n```bash\npnpm --filter @ank1015/llm-core release:check\n```\n\nThat runs:\n\n- build\n- typecheck\n- lint\n- unit tests\n- coverage\n\nLive provider integration tests remain available through:\n\n```bash\npnpm --filter @ank1015/llm-core test:integration\n```\n\nThe full release checklist lives in [docs/testing-and-release.md](./docs/testing-and-release.md).\n","readmeFilename":"README.md"}