{"_id":"@bandofai/unido-core","_rev":"15-a12f828c0a75893410ab75ff3d50480c","name":"@bandofai/unido-core","dist-tags":{"latest":"0.19.1"},"versions":{"0.1.0":{"name":"@bandofai/unido-core","version":"0.1.0","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.0","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"0efefb7be00e4f27b40341187f8785dd177e87af","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.0.tgz","fileCount":25,"integrity":"sha512-Q4WRflbr+RXMzpVSBlbOb+UUF5em6Gy/JdPZ89hSKTssfK9I0Dbzu1OcY1aJoN5hRXXuwO5Cj0cSXA/kbBZEZQ==","signatures":[{"sig":"MEYCIQDaivKwJyBqdImvyeFjeaPDKDq6rHIxQoY23Yjxu0qvWQIhAKY2ASG7CyCNO+nb4yazcEcvYih2u5ytpTJ7FvZRpDXN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62154},"main":"./dist/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"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"gitHead":"fc70fecea3fe9f232c9255e154ec44c0874efd29","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.0_1760379954120_0.5252733686015596","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bandofai/unido-core","version":"0.1.1","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.1","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"4748c2e3a5b0696af9c147a23fe2f32f09a08140","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.1.tgz","fileCount":25,"integrity":"sha512-hRK9QLA5LAUbQFwkM/yvJ3cOSfVN/JBXIp8BWanC/Vn3ZP2hvbQAi6f3SKFhHlk/4u3nhw3l3KXg/oKgxwUBpg==","signatures":[{"sig":"MEYCIQD28cTMy13fosWqOI+u1WdFCZmfJ5BB5LyqkTVkkCnmlAIhAPMf1jD2MVnWrnsMxdHHN3Nrcn6n/5D/908BzeDABp3U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62428},"main":"./dist/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"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"gitHead":"e5643232deb4c8ce6501f9638643ff1a3cea508f","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.1_1760381312945_0.9620683420604288","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@bandofai/unido-core","version":"0.1.3","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.3","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"37d1883f87a25cde4ba460cacffc002b77ea1435","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.3.tgz","fileCount":26,"integrity":"sha512-4sTf6pCwZ6Be/Mt1dsAc60K5wH9Nj6XuG+57poYQkhcCibaXWpm/3iE6H5/IXqiW+J1E8/n3XHhv7SH0PLikGg==","signatures":[{"sig":"MEUCIQDpHjoLco61Cbp0VN9+RpqXlxL9X9XhzUV54C8ERiq7bgIgT0z1X9PsFFEn91sKqAhJCrbKd7TXPzWlHdcs7U/sCFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72949},"main":"./dist/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"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"gitHead":"0cb329baaa74ab598413dba5e447c126f8b4c590","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.3_1760474282436_0.9221583704417995","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@bandofai/unido-core","version":"0.1.4","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.4","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"2201ee296d786066ff1d768a1142d17e32b8872d","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.4.tgz","fileCount":26,"integrity":"sha512-t4IkZEHt2JVG5ncX3RfUqGrDm+3Wdrv+RBb/glxm7Tgbu7KytjqBWqS+0H4xZG6wIUIcvq7y4yH9xmDq61u5Kw==","signatures":[{"sig":"MEUCIESuYhB0CVbc78yypKy0WRMf8LYQvEHvme4HmEuzplaQAiEAl+hcLR+t7D5fl+0ftOhgW0nTOBVnSlrPbnxcVRtpz0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72989},"main":"./dist/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"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"gitHead":"0ccf34549ae1abe2925dba85914ad83bda079cc2","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.4_1760551910258_0.6535285257012247","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@bandofai/unido-core","version":"0.1.6","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.6","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"7fc689a0c9c83813b4d957a99b86507cc67d1285","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.6.tgz","fileCount":26,"integrity":"sha512-NOvPejZj/mrye56T/Mwhopv9F2+l9Hj9jDo5x3Q/w7Y652C1lRNPbK3RsaVHZCVibjn4LniXxLXgAUyP7csC6A==","signatures":[{"sig":"MEQCIErVldykQfi85vTdoP6oTgxlL1vqgS4cDy48Ro+WX1NiAiBcNZ1qnJvS4Vvlr57pXjCgLhA+/eVt7WF/Rcph6cNeZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72989},"main":"./dist/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"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"gitHead":"8ae0ea055b8f3171be50a641d28981c37c9cdb5e","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.6_1760622398798_0.1336740118208919","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@bandofai/unido-core","version":"0.1.7","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.7","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"351416be2e31700c954f7a2ed41a777219d859e4","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.7.tgz","fileCount":26,"integrity":"sha512-F/HogvEXeGcR25vq35HC81Bo5GW1FSLWWgNeILz5v2ewdbO8F83b1U/PGTGwnpU6DR08Ak8IYwPLpgJ9K/hecw==","signatures":[{"sig":"MEUCIQDhItZWbMSG+t83uPs5OHc/daFvAQz2sriSQBcGaa2oygIgOHXpQ+SeynSIDxmXkeyiVNUyrowY0pQ1cl1pzt6yyxo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72989},"main":"./dist/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"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"gitHead":"1051e988b0f59b9bfd164a4c95ad936b7b8bac7a","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.7_1760623135984_0.8014852395254326","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@bandofai/unido-core","version":"0.1.8","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.8","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"de5207aefde3de0f281090d45c5c4d58fadb6690","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.8.tgz","fileCount":26,"integrity":"sha512-227XMYm0O2jYaHpMt1pM+wIP0bqq2kQSDTnHVOe9ToB2dB0zcivLskayMYO50m6pQ2VfFxLViOt+cz+8wCA57A==","signatures":[{"sig":"MEUCIQDlRHqVETvqG0c2ai3a2xlVlDYZz0f/t5EFRJT+yZe9mQIgZ23a5TkbxrQyXuxSIdsQpJXFEGU7nE+kBnVvezFSdHU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72989},"main":"./dist/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"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"gitHead":"5f5340b6f6079c70114ace0b2810a6406c3ea9dd","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.8_1760624893262_0.8496161103550055","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@bandofai/unido-core","version":"0.1.9","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.9","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"db6326353e76a4079a54afb369537fa248b9d4e6","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.9.tgz","fileCount":26,"integrity":"sha512-EKLn8xk2Fjof3/UA8832wxuO2Ej/i4n5q8rMjj7rntfQ/2taPkC0B+VWEqG1bThUnmbUlj3nBsZJX6HZJzplsg==","signatures":[{"sig":"MEUCIG5korKbxpc/Li16/YaXN9rkVJssvXjRLrYDQym0wZ12AiEAof196X6/pOf0HKjIDf4mMKRc5eSBWx8XGbS3iMLHHCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79068},"main":"./dist/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"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"gitHead":"50ac5d13066258a14435476db3c158ad50d868ad","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.9_1761676402403_0.6296830041987003","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@bandofai/unido-core","version":"0.1.10","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.10","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"6c9e02cbffd3cf7e9d5f1b6ff6252e47002f8ce5","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.10.tgz","fileCount":26,"integrity":"sha512-sDZsNta044itiJJtXiOmK4va4CvhZoThq/+/ETV8jrOzU4OqPfBji8mYVmF0m8lPVEBkHSALrLNXNjgBs6Lv1w==","signatures":[{"sig":"MEQCIEi5b4tOY1J6nDv4ZXWxYCnYTP/YK+86O5g22Qr7+2IaAiAJOTQ3k03ZUraMGoborRFEpixAusPAAFeSYUUHQniEZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80629},"main":"./dist/index.js","type":"module","_from":"file:bandofai-unido-core-0.1.10.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"_resolved":"/private/var/folders/1v/n7bpr6hx7v5fqpt4pbxx55j00000gp/T/320d5f591c54ee314333a5e46ac7093c/bandofai-unido-core-0.1.10.tgz","_integrity":"sha512-sDZsNta044itiJJtXiOmK4va4CvhZoThq/+/ETV8jrOzU4OqPfBji8mYVmF0m8lPVEBkHSALrLNXNjgBs6Lv1w==","deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.10_1761690948427_0.14026610556340247","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@bandofai/unido-core","version":"0.1.11","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.11","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"e1a9493b10fe3a6dbdc5e863a9355ad3ac830e77","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.11.tgz","fileCount":26,"integrity":"sha512-GRIdFMtRrBMm2CPDqGwFrLmbabcVWDW6A43iY5YiB2WQIJM5jIY5kwK9LkQtOS/YUWKtUmpdRprI5KIt+3mwyA==","signatures":[{"sig":"MEUCIQDsQkcdkviu0Fg6D5K1eDNSNsDAOWPDlePH9s1T7sGiBQIgBscrAoNP5/l/wpeS2xN1d22hl68MWDLGHIvuTQyO4CA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80670},"main":"./dist/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"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"gitHead":"1a135a5eedae32b065a57394755165e8459f896c","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.11_1761691736324_0.10183199514202612","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@bandofai/unido-core","version":"0.1.12","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.12","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"bc60c6da4c819e0741ac876e0051244d2eeebb20","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.12.tgz","fileCount":26,"integrity":"sha512-N7GHMp8zE3vrwMBtM2vj+9yfg+bqcv1q6I5PWbqoSE4K0YE0gxn3nvaZGLKa0nq0KMuqKr2rIRNkb3uQCU+BoA==","signatures":[{"sig":"MEQCIExOnivb06nP/0ryl9IqbWDlNtT5DxPnpvHLUTFnbOd4AiBXCm835xwUUuug5+Nr0Ydr7l4JIawGueqADsc+rNwPwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80629},"main":"./dist/index.js","type":"module","_from":"file:bandofai-unido-core-0.1.12.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"_resolved":"/private/var/folders/1v/n7bpr6hx7v5fqpt4pbxx55j00000gp/T/613a3ea3ebd72fa3eeaeac345a8d8562/bandofai-unido-core-0.1.12.tgz","_integrity":"sha512-N7GHMp8zE3vrwMBtM2vj+9yfg+bqcv1q6I5PWbqoSE4K0YE0gxn3nvaZGLKa0nq0KMuqKr2rIRNkb3uQCU+BoA==","deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.12_1761729963563_0.6593086518643065","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@bandofai/unido-core","version":"0.1.13","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.1.13","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"a5ea971bab18c768a9d31f892634140fd3835069","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.1.13.tgz","fileCount":26,"integrity":"sha512-czAmnnf3s6senD4f9zSPJz9hKiAo0dR3ASlTiuksyNOYVLukjLNrcSBMBim8HK2sn38ioGYkmcdiWI+3D90tYQ==","signatures":[{"sig":"MEUCIQCgZxXmn4KxYSnB7CQrBZlpuXKfi9/que71XK6qYMPfPwIgIiS/atxCbOOVpIl6CrPb2Arnov0fSBiQksa5lie2fDA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80629},"main":"./dist/index.js","type":"module","_from":"file:bandofai-unido-core-0.1.13.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"_resolved":"/private/var/folders/1v/n7bpr6hx7v5fqpt4pbxx55j00000gp/T/ade8c6fe3774b8eb6f851d0bd8324a43/bandofai-unido-core-0.1.13.tgz","_integrity":"sha512-czAmnnf3s6senD4f9zSPJz9hKiAo0dR3ASlTiuksyNOYVLukjLNrcSBMBim8HK2sn38ioGYkmcdiWI+3D90tYQ==","deprecated":"This package has been deprecated and is no longer maintained.","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.1.13_1763397240502_0.5217979479589392","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@bandofai/unido-core","version":"0.19.0","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","_id":"@bandofai/unido-core@0.19.0","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"homepage":"https://github.com/bandofai/unido#readme","bugs":{"url":"https://github.com/bandofai/unido/issues"},"dist":{"shasum":"88b1c920800ad58f5353914968f040296d7fd09e","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.19.0.tgz","fileCount":34,"integrity":"sha512-LPOJsJEugL6Q81br7sVmhh5H7rpvVo3Z/HIbGNBSILUXlK8UDNgTRgL9sCPK/YqamnGYFreFZb5ujrrlhPzB4Q==","signatures":[{"sig":"MEQCIFsy9qS++3BNZJaOiqSy15od1vDZbP2K6MHc/bDgCQEsAiBONDOwZ5+AnX5Eh2YFsxEyuZlieYmhiC7DJjOMGBZs+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103886},"main":"./dist/index.js","type":"module","_from":"file:bandofai-unido-core-0.19.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./errors.js":{"types":"./dist/errors.d.ts","import":"./dist/errors.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"},"./oauth-validation.js":{"types":"./dist/oauth-validation.d.ts","import":"./dist/oauth-validation.js"}},"scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","clean":"rm -rf dist && find src -type f \\( -name '*.js' -o -name '*.js.map' -o -name '*.d.ts' -o -name '*.d.ts.map' \\) ! -name '*.test.*' -delete 2>/dev/null || true","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"_resolved":"/private/var/folders/1v/n7bpr6hx7v5fqpt4pbxx55j00000gp/T/c501bf042f15cae28ae9d2a202b718c3/bandofai-unido-core-0.19.0.tgz","_integrity":"sha512-LPOJsJEugL6Q81br7sVmhh5H7rpvVo3Z/HIbGNBSILUXlK8UDNgTRgL9sCPK/YqamnGYFreFZb5ujrrlhPzB4Q==","repository":{"url":"git+https://github.com/bandofai/unido.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.0","description":"Unido Core - Provider-agnostic framework for building AI applications","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^3.24.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.7.3","@types/node":"^22.18.9"},"_npmOperationalInternal":{"tmp":"tmp/unido-core_0.19.0_1766264425176_0.2912729682190478","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"@bandofai/unido-core","version":"0.19.1","description":"Unido Core - Provider-agnostic framework for building AI applications","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./app.js":{"types":"./dist/app.d.ts","import":"./dist/app.js"},"./tool.js":{"types":"./dist/tool.d.ts","import":"./dist/tool.js"},"./schema.js":{"types":"./dist/schema.d.ts","import":"./dist/schema.js"},"./component.js":{"types":"./dist/component.d.ts","import":"./dist/component.js"},"./types.js":{"types":"./dist/types.d.ts","import":"./dist/types.js"},"./errors.js":{"types":"./dist/errors.d.ts","import":"./dist/errors.js"},"./oauth-validation.js":{"types":"./dist/oauth-validation.d.ts","import":"./dist/oauth-validation.js"}},"repository":{"type":"git","url":"git+https://github.com/bandofai/unido.git","directory":"packages/core"},"bugs":{"url":"https://github.com/bandofai/unido/issues"},"homepage":"https://github.com/bandofai/unido#readme","author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"dependencies":{"zod":"^3.24.1"},"devDependencies":{"@types/node":"^22.18.9","typescript":"^5.7.3","vitest":"^2.1.8"},"engines":{"node":">=18.0.0"},"scripts":{"build":"tsc","dev":"tsc --watch","type-check":"tsc --noEmit","clean":"rm -rf dist && find src -type f \\( -name '*.js' -o -name '*.js.map' -o -name '*.d.ts' -o -name '*.d.ts.map' \\) ! -name '*.test.*' -delete 2>/dev/null || true","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_id":"@bandofai/unido-core@0.19.1","_integrity":"sha512-rf7pY0Ce8LgSG1hz+ZMAV4PDmKRDhK4jRLisp4UPS3J/68w6ehBIMfxi4QRu1xyPcVUjhcS0rXoy128JBskYxQ==","_resolved":"/private/var/folders/1v/n7bpr6hx7v5fqpt4pbxx55j00000gp/T/970a45d58cecd71ab5f5b66da724e221/bandofai-unido-core-0.19.1.tgz","_from":"file:bandofai-unido-core-0.19.1.tgz","_nodeVersion":"24.8.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-rf7pY0Ce8LgSG1hz+ZMAV4PDmKRDhK4jRLisp4UPS3J/68w6ehBIMfxi4QRu1xyPcVUjhcS0rXoy128JBskYxQ==","shasum":"6da3c51b93a86500ec133d848f9e19a65493db46","tarball":"https://registry.npmjs.org/@bandofai/unido-core/-/unido-core-0.19.1.tgz","fileCount":34,"unpackedSize":103886,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCu8xtgouz1m0J9Km8p0h6vgNz67jCHGcbyMgK8HnSOGgIhAPOroiHpkHVwNSCChHiZRlcEjSDoBQOVKysa8We0PLyW"}]},"_npmUser":{"name":"bandofai","email":"it@bandofai.com"},"directories":{},"maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/unido-core_0.19.1_1766267389480_0.31611296626923724"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-13T18:25:54.026Z","modified":"2025-12-20T21:49:49.823Z","0.1.0":"2025-10-13T18:25:54.302Z","0.1.1":"2025-10-13T18:48:33.155Z","0.1.3":"2025-10-14T20:38:02.646Z","0.1.4":"2025-10-15T18:11:50.450Z","0.1.6":"2025-10-16T13:46:39.000Z","0.1.7":"2025-10-16T13:58:56.270Z","0.1.8":"2025-10-16T14:28:13.461Z","0.1.9":"2025-10-28T18:33:22.614Z","0.1.10":"2025-10-28T22:35:48.626Z","0.1.11":"2025-10-28T22:48:56.530Z","0.1.12":"2025-10-29T09:26:03.757Z","0.1.13":"2025-11-17T16:34:00.676Z","0.19.0":"2025-12-20T21:00:25.316Z","0.19.1":"2025-12-20T21:49:49.632Z"},"bugs":{"url":"https://github.com/bandofai/unido/issues"},"author":{"name":"Tomas Kavka","email":"iam@tomaskavka.cz"},"license":"MIT","homepage":"https://github.com/bandofai/unido#readme","keywords":["unido","ai","openai","chatgpt","framework","tools","mcp"],"repository":{"type":"git","url":"git+https://github.com/bandofai/unido.git","directory":"packages/core"},"description":"Unido Core - Provider-agnostic framework for building AI applications","maintainers":[{"name":"bandofai","email":"it@bandofai.com"}],"readme":"# @bandofai/unido-core\n\n**Core framework for building universal AI applications.**\n\n[![npm version](https://img.shields.io/npm/v/@bandofai/unido-core)](https://www.npmjs.com/package/@bandofai/unido-core)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n\nThe heart of the Unido framework. This package provides the universal API for defining AI tools that work across multiple platforms.\n\n---\n\n## Installation\n\n```bash\npnpm add @bandofai/unido-core zod\n\n# Also install a provider adapter\npnpm add @bandofai/unido-provider-openai\n```\n\n---\n\n## Quick Example\n\n```typescript\nimport { createApp, textResponse } from '@bandofai/unido-core';\nimport { openAI } from '@bandofai/unido-provider-openai';\nimport { z } from 'zod';\n\nconst app = createApp({\n  name: 'my-app',\n  version: '1.0.0',\n  providers: {\n    openai: openAI({ port: 3000 })\n  }\n});\n\napp.tool('greet', {\n  title: 'Greet User',\n  description: 'Greet a user by name',\n  input: z.object({\n    name: z.string().describe('User\\'s name')\n  }),\n  handler: async ({ name }) => {\n    return textResponse(`Hello, ${name}!`);\n  }\n});\n\nawait app.listen();\n```\n\n---\n\n## API Reference\n\n### `createApp(config)`\n\nCreates a new Unido application instance.\n\n**Parameters:**\n\n```typescript\n{\n  name: string;          // Application name\n  version: string;       // Semantic version\n  providers: {\n    [key: string]: ProviderConfig;\n  }\n}\n```\n\n**Returns:** `Unido` - Application instance\n\n**Example:**\n\n```typescript\nconst app = createApp({\n  name: 'weather-app',\n  version: '1.0.0',\n  providers: {\n    openai: openAI({ port: 3000 })\n  }\n});\n```\n\n---\n\n### `app.tool(name, definition)`\n\nRegisters a new tool that AI assistants can call.\n\n**Parameters:**\n\n- `name: string` - Tool identifier (lowercase, underscores allowed)\n- `definition: ToolDefinition`\n  ```typescript\n  {\n    title?: string;                     // Human-readable name\n    description: string;                // What the tool does\n    input: z.ZodType;                   // Zod schema for parameters\n    handler: (params) => Promise<Response>;  // Your logic\n  }\n  ```\n\n**Returns:** `void`\n\n**Example:**\n\n```typescript\napp.tool('calculate', {\n  title: 'Calculator',\n  description: 'Perform arithmetic operations',\n  input: z.object({\n    operation: z.enum(['add', 'subtract', 'multiply', 'divide']),\n    a: z.number(),\n    b: z.number()\n  }),\n  handler: async ({ operation, a, b }) => {\n    let result: number;\n    switch (operation) {\n      case 'add': result = a + b; break;\n      case 'subtract': result = a - b; break;\n      case 'multiply': result = a * b; break;\n      case 'divide': result = a / b; break;\n    }\n    return textResponse(`Result: ${result}`);\n  }\n});\n```\n\n---\n\n### `app.listen()`\n\nStarts all configured providers and begins listening for requests.\n\n**Returns:** `Promise<void>`\n\n**Example:**\n\n```typescript\nawait app.listen();\nconsole.log('Server running!');\n```\n\n---\n\n### `app.close()`\n\nGracefully shuts down all providers.\n\n**Returns:** `Promise<void>`\n\n**Example:**\n\n```typescript\nprocess.on('SIGINT', async () => {\n  await app.close();\n  process.exit(0);\n});\n```\n\n---\n\n## Response Helpers\n\n### `textResponse(text)`\n\nCreates a simple text response.\n\n**Parameters:**\n- `text: string` - The text to return\n\n**Returns:** `UniversalResponse`\n\n**Example:**\n\n```typescript\nreturn textResponse('Operation completed successfully!');\n```\n\n---\n\n### `componentResponse(name, props, fallbackText)`\n\nCreates a rich component response with fallback.\n\n**Parameters:**\n- `name: string` - Component identifier\n- `props: Record<string, unknown>` - Component properties\n- `fallbackText: string` - Text for platforms without component support\n\n**Returns:** `UniversalResponse`\n\n**Example:**\n\n```typescript\nreturn componentResponse(\n  'weather-card',\n  {\n    city: 'London',\n    temperature: 18,\n    condition: 'Cloudy'\n  },\n  'Weather in London: 18°C, Cloudy'\n);\n```\n\n---\n\n## Type System\n\n### Input Schemas with Zod\n\nAll tool inputs use [Zod](https://zod.dev/) for validation and type inference:\n\n```typescript\nimport { z } from 'zod';\n\n// String with description\nz.string().describe('User email address')\n\n// Number with constraints\nz.number().min(0).max(100)\n\n// Enum for fixed choices\nz.enum(['small', 'medium', 'large'])\n\n// Optional with default\nz.string().default('default value')\n\n// Object with nested fields\nz.object({\n  name: z.string(),\n  age: z.number().optional(),\n  email: z.string().email()\n})\n\n// Array of items\nz.array(z.string())\n```\n\n**TypeScript automatically infers types:**\n\n```typescript\ninput: z.object({\n  email: z.string().email(),\n  age: z.number().min(18)\n})\n\n// Handler automatically knows:\nhandler: async ({ email, age }) => {\n  // email: string (validated as email)\n  // age: number (must be >= 18)\n}\n```\n\n---\n\n## Advanced Features\n\n### Multiple Providers\n\nRun your tools on multiple platforms simultaneously:\n\n```typescript\nconst app = createApp({\n  name: 'multi-platform-app',\n  version: '1.0.0',\n  providers: {\n    openai: openAI({ port: 3000 }),\n    claude: claude()  // Coming soon\n  }\n});\n\n// Tools automatically work on both platforms\napp.tool('greet', { /* ... */ });\n\nawait app.listen();\n// ✅ OpenAI server on http://localhost:3000\n// ✅ Claude stdio server ready\n```\n\n---\n\n### Custom Response Format\n\nBuild responses manually for full control:\n\n```typescript\nhandler: async ({ query }) => {\n  return {\n    content: [\n      { type: 'text', text: 'Here are your results:' },\n      { type: 'text', text: JSON.stringify(results, null, 2) }\n    ],\n    component: {\n      type: 'data-table',\n      props: { data: results }\n    }\n  };\n}\n```\n\n---\n\n### Error Handling\n\nHandle errors gracefully:\n\n```typescript\nhandler: async ({ userId }) => {\n  try {\n    const user = await database.getUser(userId);\n    return textResponse(JSON.stringify(user));\n  } catch (error) {\n    if (error.code === 'NOT_FOUND') {\n      return textResponse(`User ${userId} not found`);\n    }\n    throw error;  // Let framework handle unexpected errors\n  }\n}\n```\n\n---\n\n### Async Operations\n\nTools are async by default, perfect for API calls:\n\n```typescript\napp.tool('fetch_data', {\n  description: 'Fetch data from external API',\n  input: z.object({\n    endpoint: z.string().url()\n  }),\n  handler: async ({ endpoint }) => {\n    const response = await fetch(endpoint);\n    const data = await response.json();\n    return textResponse(JSON.stringify(data, null, 2));\n  }\n});\n```\n\n---\n\n## Type Definitions\n\n### `UniversalTool`\n\n```typescript\ninterface UniversalTool {\n  name: string;\n  title?: string;\n  description: string;\n  input: z.ZodType;\n  handler: ToolHandler;\n}\n```\n\n### `ToolHandler`\n\n```typescript\ntype ToolHandler<T = any> = (\n  params: T,\n  context: ToolContext\n) => Promise<UniversalResponse>;\n```\n\n### `UniversalResponse`\n\n```typescript\ninterface UniversalResponse {\n  content: Array<{\n    type: 'text' | 'image';\n    text?: string;\n    data?: string;\n    mimeType?: string;\n  }>;\n  component?: {\n    type: string;\n    props: Record<string, unknown>;\n  };\n}\n```\n\n### `ToolContext`\n\n```typescript\ninterface ToolContext {\n  provider: string;  // Which provider is calling this tool\n}\n```\n\n---\n\n## Best Practices\n\n### 1. Use Descriptive Names\n\n```typescript\n// ❌ Bad\napp.tool('gt', { ... });\n\n// ✅ Good\napp.tool('get_temperature', { ... });\n```\n\n### 2. Write Clear Descriptions\n\n```typescript\n// ❌ Bad\ndescription: 'Gets stuff'\n\n// ✅ Good\ndescription: 'Retrieves the current temperature for a given city in Celsius or Fahrenheit'\n```\n\n### 3. Describe Schema Fields\n\n```typescript\n// ❌ Bad\ninput: z.object({\n  c: z.string()\n})\n\n// ✅ Good\ninput: z.object({\n  city: z.string().describe('Name of the city to get temperature for')\n})\n```\n\n### 4. Provide Useful Error Messages\n\n```typescript\n// ❌ Bad\nreturn textResponse('Error');\n\n// ✅ Good\nreturn textResponse(`Failed to fetch weather: City \"${city}\" not found. Please check the spelling.`);\n```\n\n### 5. Use Components for Rich Data\n\n```typescript\n// ❌ Less ideal\nreturn textResponse(JSON.stringify(largeObject));\n\n// ✅ Better\nreturn componentResponse('data-viewer', largeObject, 'Data loaded successfully');\n```\n\n---\n\n## Examples\n\n### Weather Tool\n\n```typescript\napp.tool('get_weather', {\n  title: 'Get Weather',\n  description: 'Get current weather for a city',\n  input: z.object({\n    city: z.string().describe('City name'),\n    units: z.enum(['celsius', 'fahrenheit']).default('celsius')\n  }),\n  handler: async ({ city, units }) => {\n    const weather = await weatherAPI.get(city);\n    return componentResponse(\n      'weather-card',\n      { city, temp: weather.temperature, condition: weather.condition },\n      `${city}: ${weather.temperature}°${units[0].toUpperCase()}, ${weather.condition}`\n    );\n  }\n});\n```\n\n### Database Query Tool\n\n```typescript\napp.tool('query_db', {\n  title: 'Query Database',\n  description: 'Execute a SQL query',\n  input: z.object({\n    query: z.string().describe('SQL query to execute'),\n    limit: z.number().max(1000).default(100)\n  }),\n  handler: async ({ query, limit }) => {\n    const results = await db.query(query, { limit });\n    return componentResponse(\n      'data-table',\n      { rows: results },\n      `Found ${results.length} results`\n    );\n  }\n});\n```\n\n### File System Tool\n\n```typescript\napp.tool('read_file', {\n  title: 'Read File',\n  description: 'Read contents of a file',\n  input: z.object({\n    path: z.string().describe('File path to read')\n  }),\n  handler: async ({ path }) => {\n    try {\n      const content = await fs.readFile(path, 'utf-8');\n      return textResponse(content);\n    } catch (error) {\n      return textResponse(`Error reading file: ${error.message}`);\n    }\n  }\n});\n```\n\n---\n\n## Troubleshooting\n\n### \"Tool handler must be async\"\n\nMake sure your handler is an async function:\n\n```typescript\n// ❌ Wrong\nhandler: ({ name }) => {\n  return textResponse(`Hello ${name}`);\n}\n\n// ✅ Correct\nhandler: async ({ name }) => {\n  return textResponse(`Hello ${name}`);\n}\n```\n\n### \"Invalid input schema\"\n\nEnsure you're using Zod schemas:\n\n```typescript\n// ❌ Wrong\ninput: { name: 'string' }\n\n// ✅ Correct\ninput: z.object({ name: z.string() })\n```\n\n### TypeScript can't infer types\n\nAdd explicit type annotations:\n\n```typescript\nhandler: async ({ city, units }: { city: string; units?: string }) => {\n  // Now TypeScript knows the types\n}\n```\n\n---\n\n## Links\n\n- **[Main Documentation](../../README.md)** - Full framework docs\n- **[npm Package](https://www.npmjs.com/package/@bandofai/unido-core)** - View on npm\n- **[Examples](../../examples/)** - Complete example apps\n- **[Zod Documentation](https://zod.dev/)** - Schema validation\n\n---\n\n## License\n\nMIT License - see [LICENSE](../../LICENSE) for details.\n","readmeFilename":"README.md"}