{"_id":"@json-render/core","_rev":"34-30d955459df7819ec2fef86d6b12def7","name":"@json-render/core","dist-tags":{"latest":"0.21.0"},"versions":{"0.0.1":{"name":"@json-render/core","version":"0.0.1","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.0.1","maintainers":[{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"9df24e6df3009c3beb8b2eb69e85776d543d0038","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.0.1.tgz","fileCount":8,"integrity":"sha512-R28FTVbHk35/XCTHfGBtEdfwJ3jnhCiawbx/+T8Bs558gPm8e004gXWaBCPYlGHf6HAEkBrHllHV4REyHu1lzg==","signatures":[{"sig":"MEYCIQDh/Ox4C1V9m3mlcGuwRZ5m6r9XkyQl6yZFbv0O6xCgaAIhAPongs3ELQiXtQxLtvoZmYvW5g1vaEqJrlmjqja/zIgm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195802},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"f4654c9782aca572b1395ecbd2e0fd2d173e66ba","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ctate","email":"chris@studiotate.com"},"repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.0","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"zod":"^3.23.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"workspace:*"},"peerDependencies":{"zod":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.0.1_1768431292322_0.9474756756319838","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@json-render/core","version":"0.1.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.1.0","maintainers":[{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"90c2c9ece63a8e24c6b18b1506dd447d2b566b1c","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.1.0.tgz","fileCount":8,"integrity":"sha512-rgZEUHONXtQH26oUItRlRPv1a/HBpQASTtE3erga1EsYrbwf3HzcZB69C+4WywUVH3qvM3kUKpKdGffgJbsy9g==","signatures":[{"sig":"MEUCIGY6SWyXPuFBIvCU+S3zS+QM/XjiNJC6SaWRmOun4yLgAiEA6aYNXl+TwubraLSmQAXBdeocIdkY+KOyD1w2TeNw1+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195782},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"2f9173e3dedb4101fd194e5597136414303a0b9b","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ctate","email":"chris@studiotate.com"},"repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.0","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"zod":"^3.23.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"workspace:*"},"peerDependencies":{"zod":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.0_1768432408681_0.7848513049762409","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@json-render/core","version":"0.2.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.2.0","maintainers":[{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"dbe1b45f77eec9596fb017b220a16089897228cb","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.2.0.tgz","fileCount":9,"integrity":"sha512-LBKv4M5skz7JRpTn53g6qF/zj5u/xUhuCp6WtJn/ZTIxGEAogH8sn3Ql/Nk/O0sgbQHtriRmoJuI23/5fGCXPw==","signatures":[{"sig":"MEYCIQCyaICrdWuQqMuYS0fQUyJDrpNhSJLavDqwQleQXe3EOgIhAMqfMaMSar75AO8qJPS8qQ/WKYgHE+DpxtGyZ11RsFup","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201332},"main":"./dist/index.js","_from":"file:json-render-core-0.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ctate","email":"chris@studiotate.com"},"_resolved":"/private/var/folders/bw/l_mkbwg9061dn0frt5258s180000gn/T/a1de96d68ab7e656c1de00a1fe2217d3/json-render-core-0.2.0.tgz","_integrity":"sha512-LBKv4M5skz7JRpTn53g6qF/zj5u/xUhuCp6WtJn/ZTIxGEAogH8sn3Ql/Nk/O0sgbQHtriRmoJuI23/5fGCXPw==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.0","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.2.0_1768437872482_0.2991128573512989","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@json-render/core","version":"0.3.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.3.0","maintainers":[{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"8f608708bf51ea7d520518a583766de8eb72ddeb","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.3.0.tgz","fileCount":9,"integrity":"sha512-/Om3SNSNkOOkcx07luCBizN8stDrpQ0haclo8iv+1U40WpTjNsJ5u4vt8GIrKMjr/Cdm+cCoV+PiwGEZ/m1yVQ==","signatures":[{"sig":"MEUCIQCt3gLqiwN2CsIgE1Vs1xYPouk3TrQzgpw6Vtp/nc8W3QIgUDKLWdlF/m90HrO8NKET8OcUawdJJByJb25WS9wSmQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201332},"main":"./dist/index.js","_from":"file:json-render-core-0.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ctate","email":"chris@studiotate.com"},"_resolved":"/private/var/folders/bw/l_mkbwg9061dn0frt5258s180000gn/T/c7cb0f1cfb5b8845560d48009b0a53d8/json-render-core-0.3.0.tgz","_integrity":"sha512-/Om3SNSNkOOkcx07luCBizN8stDrpQ0haclo8iv+1U40WpTjNsJ5u4vt8GIrKMjr/Cdm+cCoV+PiwGEZ/m1yVQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.0","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.3.0_1768948186694_0.05453583826628816","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@json-render/core","version":"0.4.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.4.0","maintainers":[{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"81a6650218dd44d6474056df007c615f12fa8000","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.4.0.tgz","fileCount":9,"integrity":"sha512-zcmNNetyXoqShG9qfXnipnkaGLn3XC7Kec/t3+C39mXAStg2RX29ciZwsZT+Fzo900LeRHRIGel7L/IHCdktrA==","signatures":[{"sig":"MEUCIQCNnyMpVReeP0iepnDu8zsOPWIasID7al2xmoVgx/SfEwIgcyihtBitJusF0rXRn51XJB0BNkw+/eCbkIAeMu3TSy8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":379486},"main":"./dist/index.js","_from":"file:json-render-core-0.4.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ctate","email":"chris@studiotate.com"},"_resolved":"/private/var/folders/bw/l_mkbwg9061dn0frt5258s180000gn/T/b6fcaa1717eb2f4ecef4f93ef6256fa8/json-render-core-0.4.0.tgz","_integrity":"sha512-zcmNNetyXoqShG9qfXnipnkaGLn3XC7Kec/t3+C39mXAStg2RX29ciZwsZT+Fzo900LeRHRIGel7L/IHCdktrA==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.0","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.0_1770286693874_0.5896515221598082","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@json-render/core","version":"0.4.2","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.4.2","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"ce7c35fc64fafea6830307a842b717144c0e1921","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.4.2.tgz","fileCount":9,"integrity":"sha512-TaX/DXO8CI8PsiDuX6pSOM1vSRqUEWlSNNN1BC42j7PEIjErUSLE+asNyVGD6WeF9DQ84ZzSh1y+CfUddybv7w==","signatures":[{"sig":"MEUCIGneoVf14WWLQpf95Vg1eXiNL+1ILAqM4xgZ6j1jYSSeAiEAlMFuZspExQaMQ3v0pqEjOTT5mksCGnaFlEghnnXOd88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":379486},"main":"./dist/index.js","_from":"file:json-render-core-0.4.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/9175d9eda13c9f1d28c5a38bd6b8dacd/json-render-core-0.4.2.tgz","_integrity":"sha512-TaX/DXO8CI8PsiDuX6pSOM1vSRqUEWlSNNN1BC42j7PEIjErUSLE+asNyVGD6WeF9DQ84ZzSh1y+CfUddybv7w==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.2_1770410069872_0.47344761319148665","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@json-render/core","version":"0.4.3","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.4.3","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"b32edbc78b19219fa07e52d148909035cfe0a06d","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.4.3.tgz","fileCount":9,"integrity":"sha512-Hq2N/HPQ7bFY+tLT8QOrnrz8OlXM4J/+pkM81K0yFd54GGjymQaM+yUFbmovQI+Bp19tPknrc/cKAt5gnyxlZQ==","signatures":[{"sig":"MEUCIQCwScTxkA/8P4prOAYmoxX/kz2lnxf8TSilPp0rg8uarwIgNDAwBB5FiBCoj1Ht8Sgi7nyjU8XZVqqZ9Hr0j+n7umY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":380228},"main":"./dist/index.js","_from":"file:json-render-core-0.4.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/9ebba4b713e455dae7aedf743bd1871c/json-render-core-0.4.3.tgz","_integrity":"sha512-Hq2N/HPQ7bFY+tLT8QOrnrz8OlXM4J/+pkM81K0yFd54GGjymQaM+yUFbmovQI+Bp19tPknrc/cKAt5gnyxlZQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.3_1770422615080_0.7710740555258091","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@json-render/core","version":"0.4.4","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.4.4","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"d93e1728c77a27774e62eaf60b7fd0204d829069","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.4.4.tgz","fileCount":9,"integrity":"sha512-/n8ugNnd8ROhojk566w6qpjJ+jlRcUM56v6CSf/lTgV1QqoQUwOt5pxCotosc55ljt1ihT5SGGNyqdVjIpMaUQ==","signatures":[{"sig":"MEYCIQCkc6jsEge0EEcjtq3jwKLlCgE/7G0mkGG2t2WC7Y492gIhANfIlnp17tpqQW7xITipwjSst6Bw9oJUFI7knLAJtblN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":405862},"main":"./dist/index.js","_from":"file:json-render-core-0.4.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/eab3b103d52b3d08090b486cc50fc520/json-render-core-0.4.4.tgz","_integrity":"sha512-/n8ugNnd8ROhojk566w6qpjJ+jlRcUM56v6CSf/lTgV1QqoQUwOt5pxCotosc55ljt1ihT5SGGNyqdVjIpMaUQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.4_1770489134717_0.6262294483282902","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@json-render/core","version":"0.5.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.5.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"3cc6ad0f5b85466f1e4d5d213ecb29bb55ede7ff","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.5.0.tgz","fileCount":9,"integrity":"sha512-uzKLmPc0cB2RY+nhhxmsOzpbHeLTh476iLBWIbGqc+He2lD+wx3gx2TdBbo1PIJ6anSpA6DUbot8NgZ+/ZYZxQ==","signatures":[{"sig":"MEYCIQDVnDEdniFWQWGDpXg6cGOTXVEuwG55swvf16CFOHakegIhALaCo2FXOyste9Z33N3RU5mWm55e671r6/++ltfpvz6R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":524623},"main":"./dist/index.js","_from":"file:json-render-core-0.5.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/7b0d3c02c57fadc96417be92af71adf6/json-render-core-0.5.0.tgz","_integrity":"sha512-uzKLmPc0cB2RY+nhhxmsOzpbHeLTh476iLBWIbGqc+He2lD+wx3gx2TdBbo1PIJ6anSpA6DUbot8NgZ+/ZYZxQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.0_1770623693610_0.9236151874982399","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@json-render/core","version":"0.5.1","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.5.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"a582b2036097e6cdb569f270562e4b34a55189d4","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.5.1.tgz","fileCount":9,"integrity":"sha512-ZPOHIPYqG0+71u5v07f9GsHxuIl9WKrUHrucWm9zWqjftz6THG3LTc/08kfzHELFv0uy0ZF5wal6feCkdn6PHg==","signatures":[{"sig":"MEUCIGg/rvYkE0B/u9SjrdcCdmdaw7IzgK422EOrYnqRAgXGAiEAqZiAqVtHlRHJVJgZBu3axKQlXspdYvddm374KUgSVKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":524623},"main":"./dist/index.js","_from":"file:json-render-core-0.5.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/e659cd42185671c446ab71c2f97f9398/json-render-core-0.5.1.tgz","_integrity":"sha512-ZPOHIPYqG0+71u5v07f9GsHxuIl9WKrUHrucWm9zWqjftz6THG3LTc/08kfzHELFv0uy0ZF5wal6feCkdn6PHg==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.1_1770642647136_0.10192866585635763","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@json-render/core","version":"0.5.2","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.5.2","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"5feb8a53af03e153088208cadb31dd0bb82d1944","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.5.2.tgz","fileCount":9,"integrity":"sha512-Ti4RXoY3rZbkWiB5sLha0ldKkl0k6s1kXwbdrnB/+W3EWqi9w1bwhboYwUo5MZGQ1n9N44TvMviesXpLISxaEQ==","signatures":[{"sig":"MEQCIEu+BC1FIX7hfwrzLji9caIlne9VGpHB5IVji2ij9wD4AiBlcBplHLslsiN42mXsR5PG7khA3pIIZoqOcc5uI/9jjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":552201},"main":"./dist/index.js","_from":"file:json-render-core-0.5.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/67701cf58ca9b4cb5cdebd70f2847cf4/json-render-core-0.5.2.tgz","_integrity":"sha512-Ti4RXoY3rZbkWiB5sLha0ldKkl0k6s1kXwbdrnB/+W3EWqi9w1bwhboYwUo5MZGQ1n9N44TvMviesXpLISxaEQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.2_1770648311958_0.8187740192420805","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@json-render/core","version":"0.6.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.6.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"21664f236da7b23cf23c311d0760a3d8ccb520ec","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.6.0.tgz","fileCount":9,"integrity":"sha512-ZHpbSFHcINyNkuyrK4eOS8euEcAXqDHxILO/8VYeg9jWoaj8OIi70+eCqiKMmkvt1JF6HHZU5MZAzdH5igD3tw==","signatures":[{"sig":"MEQCIEVkCO5k6hzp89v3g/rmjLwXT/J24ao4aijW53YlNvxJAiB6YFV4zVjtwfbG3TCCuoSCHNtYFN/eVqS+Y7luDlFP3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":613171},"main":"./dist/index.js","_from":"file:json-render-core-0.6.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/e8f06f64808c1b11748ad50278c96e65/json-render-core-0.6.0.tgz","_integrity":"sha512-ZHpbSFHcINyNkuyrK4eOS8euEcAXqDHxILO/8VYeg9jWoaj8OIi70+eCqiKMmkvt1JF6HHZU5MZAzdH5igD3tw==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.0_1771027512327_0.9747095778973422","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@json-render/core","version":"0.6.1","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.6.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"01245cea403e262c6758f4113ac750e83cfea120","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.6.1.tgz","fileCount":9,"integrity":"sha512-YDDld32kcyUxviFe+uR5dpM7dbbCtlDaC/HBRffbdq70jfuy0bMLK6xP9WCFjOZ3caX+c1E53Yq/lHRnNGEjZQ==","signatures":[{"sig":"MEUCIQDcnVY6hmnm+Dl9v2E3QzDeL1GdgIw6aHu8lhGu6VbODAIgNb6x0vL//pj0eSEcXR17wh/Z4yhcbB/ee7bGfTwzmzE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":613171},"main":"./dist/index.js","_from":"file:json-render-core-0.6.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/64207fb51bf2044391caceb9a31bb9ff/json-render-core-0.6.1.tgz","_integrity":"sha512-YDDld32kcyUxviFe+uR5dpM7dbbCtlDaC/HBRffbdq70jfuy0bMLK6xP9WCFjOZ3caX+c1E53Yq/lHRnNGEjZQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.1_1771168110118_0.08711613779085847","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@json-render/core","version":"0.7.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.7.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"b6d35df386b6fab0149018cc7a6075620513fc48","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.7.0.tgz","fileCount":9,"integrity":"sha512-CcT+YVNeh/nu+He9jtu9UYUb7UBsqz68Yfqr2oEpLRXEbmW5TQCmB9KxOZAcdiPtn8z09KlR9nl8KtbTupOOAQ==","signatures":[{"sig":"MEUCIQCvv6uTrm8nL7/1uq/yKqeJ1RMgYCqZzmchTKFeBfdRQgIgQx7zKGlHxQ9W08xQqTvgvjL4xjlDgjnwrMvlK+5PF0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":622883},"main":"./dist/index.js","_from":"file:json-render-core-0.7.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/de1ac7157759d9984561194fad630601/json-render-core-0.7.0.tgz","_integrity":"sha512-CcT+YVNeh/nu+He9jtu9UYUb7UBsqz68Yfqr2oEpLRXEbmW5TQCmB9KxOZAcdiPtn8z09KlR9nl8KtbTupOOAQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.7.0_1771314094066_0.4425639879403189","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@json-render/core","version":"0.8.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.8.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"fa124f398f17b131407f0dfc9e598f31e1964623","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.8.0.tgz","fileCount":9,"integrity":"sha512-EdUJtjogqt+e9vG9DodIaPYTHDpuEKCe+C27zEtP9fKlL6bWacA8X3lpGtxf6WkswarIhdrhUxeqR9ZAqs+7HQ==","signatures":[{"sig":"MEUCIQDWV+fdHRHo/ARRfv+M7EXx0xTA7KITFiAqBekf4WIb5gIgAqXedrfaL72HkGU3blMwV+6YoZMbEz04JROjjM3MANY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":624045},"main":"./dist/index.js","_from":"file:json-render-core-0.8.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/9ce258d60660ae6231ffdf5cd93935e7/json-render-core-0.8.0.tgz","_integrity":"sha512-EdUJtjogqt+e9vG9DodIaPYTHDpuEKCe+C27zEtP9fKlL6bWacA8X3lpGtxf6WkswarIhdrhUxeqR9ZAqs+7HQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@repo/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.8.0_1771575566845_0.845524005363292","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@json-render/core","version":"0.9.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.9.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"ee1e118c8f92e8888960498a2db14181d98594c6","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.9.0.tgz","fileCount":19,"integrity":"sha512-DOThsfAa77e76R3OZWJ+We1d+rQS4OPv/STGfcfrbTJEr7Tzal5vXvAiONy0lW9i3dMvRj3XmqWemU0lGTO2FA==","signatures":[{"sig":"MEQCIA6C0qmM946mNdoBdiB/C0/0Due/nILAOdRiIzUYrQu7AiBDnXOzoQuvfGO9PdDAsLTufivI/mC0iJPwT/k7XKzaSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":723813},"main":"./dist/index.js","_from":"file:json-render-core-0.9.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/cd4851e9ddd0cca9b90f46a1a449568e/json-render-core-0.9.0.tgz","_integrity":"sha512-DOThsfAa77e76R3OZWJ+We1d+rQS4OPv/STGfcfrbTJEr7Tzal5vXvAiONy0lW9i3dMvRj3XmqWemU0lGTO2FA==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.9.0_1771918773796_0.9688391108132983","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@json-render/core","version":"0.9.1","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.9.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"236b62e5e771a59f80efa0193a271c9567abc5d1","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.9.1.tgz","fileCount":19,"integrity":"sha512-QVvkzrE2grGjo16P6QgC45NvMyyqMAbAW9EIt4F2PNwQn8hAVxyXDp6GtxbSoT6FzEpS4ytuzmlZ9gLRlsHAJA==","signatures":[{"sig":"MEYCIQDRP+jthagVLV6LtJDTBeBDFMph4pYfWSFQmHp8bPn3dwIhAPiCx7Cb6mClN4QAoChLT0q02OzF22a31u1XBYas+s3p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":723813},"main":"./dist/index.js","_from":"file:json-render-core-0.9.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/ee3b9a349a6eec437be6bb166c09992d/json-render-core-0.9.1.tgz","_integrity":"sha512-QVvkzrE2grGjo16P6QgC45NvMyyqMAbAW9EIt4F2PNwQn8hAVxyXDp6GtxbSoT6FzEpS4ytuzmlZ9gLRlsHAJA==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.9.1_1771936338046_0.6833666216659389","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@json-render/core","version":"0.10.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.10.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"a1549d2f3593f1ff99d13c215b25e7156a26463e","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.10.0.tgz","fileCount":19,"integrity":"sha512-aqV9vwpBMIH7J/3d0szxfAwB6Wa2t1U3g9DkiFaFAYlvAotnpGiR+XeOYVK6CxeIJsq0RK7BaUKOa0arWEGNWg==","signatures":[{"sig":"MEUCIBcpTI7jO4fKF62WPjMTYQz2+ll2s28Tra/j3F3AkInwAiEA67h2id73DIWKPZo8+Mv0YeBd5A55PnsQARHyYHk8zI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778570},"main":"./dist/index.js","_from":"file:json-render-core-0.10.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/9e6b7c4e553fd773fe9120d16e5e83b8/json-render-core-0.10.0.tgz","_integrity":"sha512-aqV9vwpBMIH7J/3d0szxfAwB6Wa2t1U3g9DkiFaFAYlvAotnpGiR+XeOYVK6CxeIJsq0RK7BaUKOa0arWEGNWg==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.10.0_1772038743410_0.7840929098989826","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@json-render/core","version":"0.11.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.11.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"90796ac14fa605b5f60a3825add69eace16f5cf0","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.11.0.tgz","fileCount":19,"integrity":"sha512-gktZDcWsQjE5Nmet0zxwl51QXgDF2s3oVOI42Hho3Q2OWPpODlsas6p0ePi1SzIlaQLONvqDLa4PHPt/DWOh/Q==","signatures":[{"sig":"MEYCIQCQPJGeaKLmZiPIyxXsWfaEklDPorSfhWRUpv5cf7DTEAIhAP+8Vnsp8C9NE4gomAhHy/SgozdgSBUfdpqHdzQHMU5c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778570},"main":"./dist/index.js","_from":"file:json-render-core-0.11.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/b2f96f18f48be387dcf54993469bcf6f/json-render-core-0.11.0.tgz","_integrity":"sha512-gktZDcWsQjE5Nmet0zxwl51QXgDF2s3oVOI42Hho3Q2OWPpODlsas6p0ePi1SzIlaQLONvqDLa4PHPt/DWOh/Q==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.11.0_1772220732518_0.4800079307980878","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@json-render/core","version":"0.12.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.12.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://github.com/vercel-labs/json-render#readme","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"378e1374a0212562afc98dffb2b98f75944eebb3","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.12.0.tgz","fileCount":19,"integrity":"sha512-sRron2Dt+4ayKxRM/1ofQDfn8XgmD5jTjv1R8rXmkmV5HWVbnC/z5eQPILx/j6lqBFf9xeGnVW7neSfybZFOMQ==","signatures":[{"sig":"MEUCIQD5uPRZKz/0Ja9uCOXMaXTOhdEBP+ct+AoYRZVcQSixGwIgbOQEHn3T27T/qjwjroUE/Keo0THnHZ+43hAfbEmPufs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778570},"main":"./dist/index.js","_from":"file:json-render-core-0.12.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/a487bcac524be2913b6cb99de8563d3d/json-render-core-0.12.0.tgz","_integrity":"sha512-sRron2Dt+4ayKxRM/1ofQDfn8XgmD5jTjv1R8rXmkmV5HWVbnC/z5eQPILx/j6lqBFf9xeGnVW7neSfybZFOMQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.12.0_1772849154781_0.23769878025351177","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@json-render/core","version":"0.12.1","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.12.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://json-render.dev","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"2bfd19e84dcd4bbf277edfbf00bfa2379885c6a1","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.12.1.tgz","fileCount":19,"integrity":"sha512-1tV/481GPHmIRd6lXfWcTaIslQusmDg5lzcSBzWLkSXjF9sjjyOQL090in7uHT4tOMWkdmlEJOW5H9C72PsUEQ==","signatures":[{"sig":"MEUCICfIL9LFo7gZPoGpuI+pcUwX3sY+6o8uW/yt8hIuOt3dAiEAkYqkpy9pBtopRFvs6ZWHowNaoWSrMz931UcMuWmPEzY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":780882},"main":"./dist/index.js","_from":"file:json-render-core-0.12.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/342ea64aa3634f22112b8df1f3782990/json-render-core-0.12.1.tgz","_integrity":"sha512-1tV/481GPHmIRd6lXfWcTaIslQusmDg5lzcSBzWLkSXjF9sjjyOQL090in7uHT4tOMWkdmlEJOW5H9C72PsUEQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.12.1_1773213781089_0.170613350010552","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@json-render/core","version":"0.13.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.13.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://json-render.dev","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"21a57bcc0c411daf4c3600d50785f267d20f9998","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.13.0.tgz","fileCount":19,"integrity":"sha512-CXmCsc8BHDRq45ScVd+qgvjTbwZHPVpVD05WnTqgDxqfY3LGXu5vxaQRSwYoEodg/DGcZq/4HSj4ipVvrzy3qQ==","signatures":[{"sig":"MEUCIQD2fEtFRm8vqeAYXR7FEo8Xbvhy5jOoQto4ax3k0mKjCAIgTlCebCM5JIopNlyySGqJgF7tQ6T1cM5Su+TkPpXZYM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":797404},"main":"./dist/index.js","_from":"file:json-render-core-0.13.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/f3f9b0275ec08d48a7c54a48df549635/json-render-core-0.13.0.tgz","_integrity":"sha512-CXmCsc8BHDRq45ScVd+qgvjTbwZHPVpVD05WnTqgDxqfY3LGXu5vxaQRSwYoEodg/DGcZq/4HSj4ipVvrzy3qQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.13.0_1773329092785_0.02002783601038849","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@json-render/core","version":"0.14.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.14.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://json-render.dev","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"4a7e1dfc136b7eed289c79b91b7b7b11b948cf64","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.14.0.tgz","fileCount":19,"integrity":"sha512-Zay2xy3I5z9AfJgkuPkA8aeFTjULkDjBmjb9prHAahuowyhsVOKtZ881eKo10OAsWVig0Sxyfy1s14ukOs8fhg==","signatures":[{"sig":"MEUCIFsnInqQXmyB5NeQy6BEf21grFIyIP4HpBWCF1bQqRbSAiEA+PUq2H8Un8XF79CYig3hBTQT0fkAnX5roZhGjfQKyL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":858138},"main":"./dist/index.js","_from":"file:json-render-core-0.14.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/7600325725a23d2405e09a593b75a505/json-render-core-0.14.0.tgz","_integrity":"sha512-Zay2xy3I5z9AfJgkuPkA8aeFTjULkDjBmjb9prHAahuowyhsVOKtZ881eKo10OAsWVig0Sxyfy1s14ukOs8fhg==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.14.0_1773439794144_0.8317600956061018","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"@json-render/core","version":"0.14.1","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.14.1","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://json-render.dev","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"477e361d4e1680a8063667a7d2b4fe29d8db4415","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.14.1.tgz","fileCount":19,"integrity":"sha512-Z1lctUILswRS9xvQbLgsLGRXY4M31CtG0H6wCouGlk9lxXpB5hkuoIoAJ4bJ/HXDVoBgYzI18XI/O8luE3CuzA==","signatures":[{"sig":"MEYCIQDSMqosjmTUauqy8K9G26mbKyqTVyaWUe/kGbkoVHHiXgIhANzonZtYBxRWIjrsv2dTid0SKH7M1S+XEVPLNwtOz7Zm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":860412},"main":"./dist/index.js","_from":"file:json-render-core-0.14.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/02b7c062829c546f32cf531e0293fab8/json-render-core-0.14.1.tgz","_integrity":"sha512-Z1lctUILswRS9xvQbLgsLGRXY4M31CtG0H6wCouGlk9lxXpB5hkuoIoAJ4bJ/HXDVoBgYzI18XI/O8luE3CuzA==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.14.1_1773787692412_0.6914079388780243","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@json-render/core","version":"0.15.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.15.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://json-render.dev","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"24206abb23c95b1389c838eb30bcdd9290a3d15b","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.15.0.tgz","fileCount":19,"integrity":"sha512-ej5fx6C2Gp5iSit+HyyFh6QenKRIAO9xvFlxal6uzQQTpOJzJlXPsNROL2JT5QjY/iLgLaf4RJohdP1mWSYDNQ==","signatures":[{"sig":"MEUCIQDK+Tt2/cXaMfk40/qRhtC2J4F/AnL5tiscyvVwIe8TqAIgOqjKWRwb6pXn/z3LrRw9l7mUvCRA8NmknzErkOkQ+44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":860412},"main":"./dist/index.js","_from":"file:json-render-core-0.15.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/1c82e53ec6ca932a0f4dc15746d856db/json-render-core-0.15.0.tgz","_integrity":"sha512-ej5fx6C2Gp5iSit+HyyFh6QenKRIAO9xvFlxal6uzQQTpOJzJlXPsNROL2JT5QjY/iLgLaf4RJohdP1mWSYDNQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.15.0_1774290878803_0.24170307368844424","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@json-render/core","version":"0.16.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.16.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://json-render.dev","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"eca93275859f6e98b3d591cca83a06b0e2e87e79","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.16.0.tgz","fileCount":19,"integrity":"sha512-qQp8BB/3pWYapTGXBDSBMXRCdrC05VJPLL3drXMPX/QbUB3nuvtyXUGmAZFUz8eLUy7JImODvb3GNIq38dGzhQ==","signatures":[{"sig":"MEYCIQC9Bi4Sj7n8ClGx4aG/UTLEogv5dzL2qPOJQvdGB4+pvwIhAKnH4VsGwzkU19qZHKjOR7bculmU+fSzm7PKpYjSg7GL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":860412},"main":"./dist/index.js","_from":"file:json-render-core-0.16.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/fdacf77b4e8d777283521bf97517ec12/json-render-core-0.16.0.tgz","_integrity":"sha512-qQp8BB/3pWYapTGXBDSBMXRCdrC05VJPLL3drXMPX/QbUB3nuvtyXUGmAZFUz8eLUy7JImODvb3GNIq38dGzhQ==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.8.2","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.16.0_1774660914969_0.4096714756353539","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@json-render/core","version":"0.17.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.17.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://json-render.dev","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"058154ed066631a0e894b89e8d7bda2b9f825e53","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.17.0.tgz","fileCount":19,"integrity":"sha512-8woFjU0RZqxDvJ9E1vxv21uv1lcXEGut/tcVWiVsduds3pcX3tCv5xKSjREjew/yS061CGjFAPr5vozYS39whg==","signatures":[{"sig":"MEYCIQDMQ1SsCB7SnuNHutuqG/F/RSPwVQFmFI2PF3vyiwtcnAIhAI2PJJc2o4jlaDZGPiFOqoDTiS79o+gjjdS2dkv1hCdW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":861214},"main":"./dist/index.js","_from":"file:json-render-core-0.17.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/9f1bbece3702df3a679243926468e942/json-render-core-0.17.0.tgz","_integrity":"sha512-8woFjU0RZqxDvJ9E1vxv21uv1lcXEGut/tcVWiVsduds3pcX3tCv5xKSjREjew/yS061CGjFAPr5vozYS39whg==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.17.0_1775878861821_0.4678116978505982","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@json-render/core","version":"0.18.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.18.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@studiotate.com"}],"homepage":"https://json-render.dev","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"b7f41b4bc9b79fabebc41cb246dbe7d2f48d63c1","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.18.0.tgz","fileCount":19,"integrity":"sha512-zm0K9cgxZLGshw5TmdKe3Xc6fpjbONdlj3v+Er+HhCYZ9fSJpv32d9VzQds4bDW36vPfdieAOcsPR9+EcTff7Q==","signatures":[{"sig":"MEUCIQDjO8WrhHiof+nykwHuup3xX04cvqhT/46HOoH2/HyCmgIgcL1RU2CJ3+5jEYkcDNGaF6rCMr2OhvG3N1fNTmAsQlI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":891079},"main":"./dist/index.js","_from":"file:json-render-core-0.18.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vercel-release-bot","email":"infra+release@vercel.com"},"_resolved":"/tmp/61b9bb9fb5bad10c3d5de59133185599/json-render-core-0.18.0.tgz","_integrity":"sha512-zm0K9cgxZLGshw5TmdKe3Xc6fpjbONdlj3v+Er+HhCYZ9fSJpv32d9VzQds4bDW36vPfdieAOcsPR9+EcTff7Q==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.7","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.18.0_1776455151943_0.002310675725548661","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@json-render/core","version":"0.19.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.19.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@ctate.dev"}],"homepage":"https://json-render.dev","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"04e88069b70c5c94596170b9e56bf2e51ea1fb7d","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.19.0.tgz","fileCount":19,"integrity":"sha512-vvcyZ+10EDZKbEyB1J2kXOGfDaiZR2LurZGSqi2r5STHyKr+Te85DWaBxTwRGgM7U1LtIvNx85BzzjElRKoAIg==","signatures":[{"sig":"MEYCIQDhMFlJdFJnPCoxtOwY0Kp+f+3nXmfrUdvOHlDGnjDVogIhAP+eKWZgVH0/l5dNo447xLSEYJsZgU4OHxmIKzD2AbJ0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@json-render%2fcore@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":914793},"main":"./dist/index.js","_from":"file:/tmp/json-render-core-0.19.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98586c2e-194e-46fe-a6a1-d58512ba29d2"}},"_resolved":"/tmp/json-render-core-0.19.0.tgz","_integrity":"sha512-vvcyZ+10EDZKbEyB1J2kXOGfDaiZR2LurZGSqi2r5STHyKr+Te85DWaBxTwRGgM7U1LtIvNx85BzzjElRKoAIg==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"11.11.0","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.19.0_1778131403872_0.46973628106145093","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@json-render/core","version":"0.20.0","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"license":"Apache-2.0","_id":"@json-render/core@0.20.0","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@ctate.dev"}],"homepage":"https://json-render.dev","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"c2187747de6cb7f7c9825849b899ffea9ce82bc9","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.20.0.tgz","fileCount":19,"integrity":"sha512-cXAXn7h3QaylefQgh85AEGPuVq4C8SJ3k9JqigWLJhaBSozF1Fmsrm43DP16RmkqNiVgj5pBRdmB48lEO5qlow==","signatures":[{"sig":"MEYCIQC7DFv4mlhX/ntDikNgp0N+p6hW17SHHsizdHXvdqDpdwIhAKCkSySOORuz4XXzF+DSFgucuNE/lpf2IDFxYswsp9bY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC8W8abo+8No7P6PRG0gQ3QPgjUvUwPcoIt1Cv9TtkOXQIhAL0/JG+FQQtNH20shMX2cxtvQmQzt5Ls92Af0IOC/ZKI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@json-render%2fcore@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":992900},"main":"./dist/index.js","_from":"file:/tmp/json-render-core-0.20.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98586c2e-194e-46fe-a6a1-d58512ba29d2"}},"_resolved":"/tmp/json-render-core-0.20.0.tgz","_integrity":"sha512-cXAXn7h3QaylefQgh85AEGPuVq4C8SJ3k9JqigWLJhaBSozF1Fmsrm43DP16RmkqNiVgj5pBRdmB48lEO5qlow==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"11.17.0","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.20.0_1786888614653_0.3544648374348671","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"_id":"@json-render/core@0.21.0","bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"dist":{"shasum":"fb86257349d0c91d76cd02fbba3e307ce7993b4a","tarball":"https://registry.npmjs.org/@json-render/core/-/core-0.21.0.tgz","fileCount":19,"integrity":"sha512-vysEbTjO1y8mEgAsp0tztRyaWCkNsBrG8MhAqbndGK3qmMXjMRdCNtk21+AQRNKdRelFGVAwBgtUNW8tfjQlsw==","signatures":[{"sig":"MEYCIQCJuqbMQLkVv7rLpzuINigdH21tmca/sGvA11OI9oQhjwIhALHaQRaqqtP95AGjdS1GQNO7wAQb32JGeW919PNK8k06","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFebrZUCBCEC0u0YeCXfYArHuItKab/gvKV5r0ceKkKWAiB8TpplKMVbvop5W1AgVNlqZTIWppxj9OpXLw10xJgP5Q=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@json-render%2fcore@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1217787},"main":"./dist/index.js","name":"@json-render/core","_from":"file:/tmp/json-render-core-0.21.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./store-utils":{"types":"./dist/store-utils.d.ts","import":"./dist/store-utils.mjs","require":"./dist/store-utils.js"}},"license":"Apache-2.0","scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"tsc --noEmit"},"version":"0.21.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98586c2e-194e-46fe-a6a1-d58512ba29d2"}},"homepage":"https://json-render.dev","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"_resolved":"/tmp/json-render-core-0.21.0.tgz","_integrity":"sha512-vysEbTjO1y8mEgAsp0tztRyaWCkNsBrG8MhAqbndGK3qmMXjMRdCNtk21+AQRNKdRelFGVAwBgtUNW8tfjQlsw==","repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"_npmVersion":"11.19.0","description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","directories":{},"maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@ctate.dev"}],"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.3.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","typescript":"^5.4.5","@internal/typescript-config":"0.0.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_0.21.0_1789757455096_0.5874630342750653"}}},"time":{"created":"2026-01-14T22:54:52.214Z","modified":"2026-09-18T18:50:55.592Z","0.0.1":"2026-01-14T22:54:52.480Z","0.1.0":"2026-01-14T23:13:28.844Z","0.2.0":"2026-01-15T00:44:32.867Z","0.3.0":"2026-01-20T22:29:46.838Z","0.4.0":"2026-02-05T10:18:14.059Z","0.4.2":"2026-02-06T20:34:30.012Z","0.4.3":"2026-02-07T00:03:35.235Z","0.4.4":"2026-02-07T18:32:14.883Z","0.5.0":"2026-02-09T07:54:53.751Z","0.5.1":"2026-02-09T13:10:47.313Z","0.5.2":"2026-02-09T14:45:12.130Z","0.6.0":"2026-02-14T00:05:12.512Z","0.6.1":"2026-02-15T15:08:30.329Z","0.7.0":"2026-02-17T07:41:34.261Z","0.8.0":"2026-02-20T08:19:27.070Z","0.9.0":"2026-02-24T07:39:34.005Z","0.9.1":"2026-02-24T12:32:18.192Z","0.10.0":"2026-02-25T16:59:03.587Z","0.11.0":"2026-02-27T19:32:12.649Z","0.12.0":"2026-03-07T02:05:54.999Z","0.12.1":"2026-03-11T07:23:01.317Z","0.13.0":"2026-03-12T15:24:52.973Z","0.14.0":"2026-03-13T22:09:54.372Z","0.14.1":"2026-03-17T22:48:12.554Z","0.15.0":"2026-03-23T18:34:39.038Z","0.16.0":"2026-03-28T01:21:55.189Z","0.17.0":"2026-04-11T03:41:02.047Z","0.18.0":"2026-04-17T19:45:52.158Z","0.19.0":"2026-05-07T05:23:24.018Z","0.20.0":"2026-08-16T13:56:54.731Z","0.21.0":"2026-09-18T18:50:55.227Z"},"bugs":{"url":"https://github.com/vercel-labs/json-render/issues"},"license":"Apache-2.0","homepage":"https://json-render.dev","keywords":["json","ui","react","ai","generative-ui","llm","schema","zod","streaming"],"repository":{"url":"git+https://github.com/vercel-labs/json-render.git","type":"git","directory":"packages/core"},"description":"JSON becomes real things. Define your catalog, register your components, let AI generate.","maintainers":[{"name":"matt.straka","email":"matt.j.straka@gmail.com"},{"name":"vercel-release-bot","email":"infra+release@vercel.com"},{"name":"ctate","email":"chris@ctate.dev"}],"readme":"# @json-render/core\n\nCore library for json-render. Define schemas, create catalogs, generate AI prompts, and stream specs.\n\n## Installation\n\n```bash\nnpm install @json-render/core zod\n```\n\n## Experimental decision-model composition\n\n`experimental_composeSpec` builds a flat `Spec` by choosing among your app's atomic element candidates. `experimental_createEvaluator` connects a choice evaluation model through Vercel AI Gateway. Jev (`typesafe-ai/jev`) is the current example; the API names and explicit `model` option are model-neutral. Use your own catalog, props, state bindings, action bindings, and renderer; no playground components are required.\n\n**Unreleased:** try a source build before the next package release. APIs prefixed with `experimental_` or `Experimental_` may change in any release. Pin exact versions and review release notes before upgrading.\n\n```typescript\n// Server only\nimport { experimental_composeSpec, experimental_createEvaluator } from \"@json-render/core\";\nimport { catalog } from \"./catalog\";\nimport { candidates } from \"./candidates\";\n\nconst evaluate = experimental_createEvaluator({\n  model: \"typesafe-ai/jev\",\n  apiKey: process.env.AI_GATEWAY_API_KEY!,\n});\n\nfor await (const event of experimental_composeSpec({\n  catalog,\n  candidates,\n  prompt: \"Create account preferences with a name field and Save button\",\n  initialState: { name: \"\" },\n  evaluate,\n  maxSteps: 12,\n  maxElements: 24,\n  signal: AbortSignal.timeout(30_000),\n})) {\n  // Send snapshots to your client and render using your existing registry.\n  if (event.type === \"step\") console.log(event.spec);\n  else console.log(event.stopReason, event.spec);\n}\n```\n\nCandidates contain `id`, `description`, and an atomic `element` (`type`, `props`, optional `on` and `visible`). `root: false` excludes a candidate from root selection; `maxUses` defaults to one; candidates sharing a `resource` are mutually exclusive. The catalog's slots determine where children can be attached. Props and action parameters are checked against initial state; expressions remain live in the output. Actions are never executed by the composer.\n\nCandidates are configured component instances. The model constructs their tree, grouping, and order; it does not choose arbitrary prop values from the full catalog schema. Apps can build candidates per request from their records and permitted operations, or bind props to data in `initialState`. To let the model choose a different chart type or field configuration, supply those alternatives as candidates. No complete page template is required. Explicitly name required sections in the prompt; structural validation does not detect omitted content.\n\nNew compositions default to `strategy: \"batch\"`. One evaluation selects the root and component membership together, grouping mutually exclusive variants into one question and selecting bounded counts for reusable recipes. The first snapshot contains the selected content in catalog order under the root's default slot (or first declared slot). A second evaluation arranges parent slots and sibling order when needed. The entire resulting tree is validated before it is emitted; inconsistent placements throw and leave the first snapshot usable as partial UI. Equal sibling positions retain catalog order. Root selection takes precedence over speculative membership/count answers for the same recipe or resource. No separate finish call is needed.\n\n`maxElements` bounds batched creation (default 32, including the root). An element/depth limit or a missing layout evaluation due to `maxSteps` produces `stopReason: \"limit\"`. Set `strategy: \"sequential\"` for one-operation-at-a-time creation or an existing custom evaluator using the `next`/`parent` protocol. Follow-up edits always use that sequential protocol, regardless of strategy.\n\nFor follow-up edits, pass the selected version as `initialSpec`. The composer can add candidates, replace an element's recipe while preserving its ID and children, remove a non-root subtree, or move/reorder a subtree among valid slots. Unchanged elements and state are retained, and the input spec is never mutated. `elementDescriptions` optionally supplies text identifying existing elements to the evaluator; otherwise matching recipes supply descriptions, with component names as the fallback. Raw props and state remain private. `initialState`, if supplied, replaces the seed's state.\n\nSeed specs must be valid trees within the same catalog, supported expression subset, and depth limit. Existing elements that exactly match a candidate count toward its usage/resource limits. Removing or replacing them releases those limits. Replacements and moves use a second evaluation to select a valid recipe or destination; both decisions count toward `maxSteps`. A budget or cancellation can stop before an edit is applied.\n\nThe async generator emits detached `step` snapshots and a `complete` event with `stopReason: \"finish\" | \"limit\" | \"unavailable\"`, decision traces, timing, and nullable input usage. A batched trace represents one evaluation (`choice: \"select\"` or `\"layout\"`) and includes its independent `answers`; time and tokens are counted once per evaluation. Completion can include a partial spec or no spec, and does not guarantee that the model selected the right content. Provider errors, invalid choices, invalid combined layouts, and cancellation throw. Defaults: 32 evaluations, depth eight, and a 10-second per-call Gateway timeout.\n\nV1 supports standard flat Spec catalogs, literals, `$state`, `$bindState`, state-based visibility, and named slots. It excludes repeat/watch, computed/custom expressions, and subtrees within candidate recipes. Bindings must resolve to valid values in the seed state or explicit `initialState`; handlers must still validate later user input. Candidate descriptions, element descriptions, and explicit `context` are sent to the evaluator; state values and raw props/bindings are not sent automatically.\n\nSee the [Jev guide](https://json-render.dev/docs/jev) for complete catalog/candidate examples, source-build installation, rendering, custom evaluators, limitations, and feedback. The [playground implementation](../../apps/web/lib/jev) uses these same APIs.\n\n## Key Concepts\n\n- **Schema**: Defines the structure of specs and catalogs\n- **Catalog**: Maps component/action names to their definitions with Zod props\n- **Spec**: JSON output from AI that conforms to the schema\n- **SpecStream**: JSONL streaming format for progressive spec building\n\n## Quick Start\n\n### Define a Schema\n\n```typescript\nimport { defineSchema } from \"@json-render/core\";\n\nexport const schema = defineSchema((s) => ({\n  spec: s.object({\n    root: s.object({\n      type: s.ref(\"catalog.components\"),\n      props: s.propsOf(\"catalog.components\"),\n      children: s.array(s.string()), // Element keys (flat spec format)\n    }),\n  }),\n  catalog: s.object({\n    components: s.map({\n      props: s.zod(),\n      description: s.string(),\n    }),\n    actions: s.map({\n      description: s.string(),\n    }),\n  }),\n}), {\n  promptTemplate: myPromptTemplate, // Optional custom AI prompt generator\n});\n```\n\n### Create a Catalog\n\n```typescript\nimport { defineCatalog } from \"@json-render/core\";\nimport { schema } from \"./schema\";\nimport { z } from \"zod\";\n\nexport const catalog = defineCatalog(schema, {\n  components: {\n    Card: {\n      props: z.object({\n        title: z.string(),\n        subtitle: z.string().nullable(),\n      }),\n      description: \"A card container with title\",\n    },\n    Button: {\n      props: z.object({\n        label: z.string(),\n        variant: z.enum([\"primary\", \"secondary\"]).nullable(),\n      }),\n      description: \"A clickable button\",\n    },\n  },\n  actions: {\n    submit: { description: \"Submit the form\" },\n    cancel: { description: \"Cancel and close\" },\n  },\n});\n```\n\n### Generate AI Prompts\n\n```typescript\n// Generate system prompt for AI\nconst systemPrompt = catalog.prompt();\n\n// With custom rules\nconst systemPrompt = catalog.prompt({\n  system: \"You are a dashboard builder.\",\n  customRules: [\n    \"Always include a header\",\n    \"Use Card components for grouping\",\n  ],\n});\n```\n\n### Stream AI Responses (SpecStream)\n\nThe SpecStream format uses JSONL patches to progressively build specs:\n\n```typescript\nimport { createSpecStreamCompiler } from \"@json-render/core\";\n\n// Create a compiler for your spec type\nconst compiler = createSpecStreamCompiler<MySpec>();\n\n// Process streaming chunks from AI\nwhile (streaming) {\n  const chunk = await reader.read();\n  const { result, newPatches } = compiler.push(chunk);\n  \n  if (newPatches.length > 0) {\n    // Update UI with partial result\n    setSpec(result);\n  }\n}\n\n// Get final compiled result\nconst finalSpec = compiler.getResult();\n```\n\nSpecStream format uses [RFC 6902 JSON Patch](https://datatracker.ietf.org/doc/html/rfc6902) operations (each line is a patch):\n\n```jsonl\n{\"op\":\"add\",\"path\":\"/root\",\"value\":\"card-1\"}\n{\"op\":\"add\",\"path\":\"/elements/card-1\",\"value\":{\"type\":\"Card\",\"props\":{\"title\":\"Hello\"},\"children\":[\"btn-1\"]}}\n{\"op\":\"add\",\"path\":\"/elements/btn-1\",\"value\":{\"type\":\"Button\",\"props\":{\"label\":\"Click\"},\"children\":[]}}\n```\n\nAll six RFC 6902 operations are supported: `add`, `remove`, `replace`, `move`, `copy`, `test`.\n\n### Low-Level Utilities\n\n```typescript\nimport {\n  parseSpecStreamLine,\n  applySpecStreamPatch,\n  compileSpecStream,\n} from \"@json-render/core\";\n\n// Parse a single line\nconst patch = parseSpecStreamLine('{\"op\":\"add\",\"path\":\"/root\",\"value\":{}}');\n// { op: \"add\", path: \"/root\", value: {} }\n\n// Apply a patch to an object\nconst obj = {};\napplySpecStreamPatch(obj, patch);\n// obj is now { root: {} }\n\n// Compile entire JSONL string at once\nconst spec = compileSpecStream<MySpec>(jsonlString);\n```\n\n## API Reference\n\n### Schema\n\n| Export | Purpose |\n|--------|---------|\n| `defineSchema(builder, options?)` | Create a schema with spec/catalog structure |\n| `SchemaBuilder` | Builder with `s.object()`, `s.array()`, `s.map()`, etc. |\n\nSchema options:\n\n| Option | Purpose |\n|--------|---------|\n| `promptTemplate` | Custom AI prompt generator |\n| `defaultRules` | Default rules injected before custom rules in prompts |\n| `builtInActions` | Actions always available at runtime, auto-injected into prompts (e.g. `setState`) |\n\n### Catalog\n\n| Export | Purpose |\n|--------|---------|\n| `defineCatalog(schema, data)` | Create a type-safe catalog from schema |\n| `catalog.prompt(options?)` | Generate AI system prompt |\n\n### SpecStream\n\n| Export | Purpose |\n|--------|---------|\n| `createSpecStreamCompiler<T>()` | Create streaming compiler |\n| `parseSpecStreamLine(line)` | Parse single JSONL line |\n| `applySpecStreamPatch(obj, patch)` | Apply patch to object |\n| `compileSpecStream<T>(jsonl)` | Compile entire JSONL string |\n\n### Dynamic Props\n\n| Export | Purpose |\n|--------|---------|\n| `resolvePropValue(value, ctx)` | Resolve a single prop expression |\n| `resolveElementProps(props, ctx)` | Resolve all prop expressions in an element |\n| `PropExpression<T>` | Type for prop values that may contain expressions |\n| `ComputedFunction` | Function signature for `$computed` expressions |\n| `PropResolutionContext` | Context for resolving props (includes `functions` for `$computed`) |\n\n### Validation\n\n| Export | Purpose |\n|--------|---------|\n| `check.required()` | Required validation helper |\n| `check.email()` | Email validation helper |\n| `check.matches(path)` | Cross-field match helper |\n| `check.equalTo(path)` | Cross-field equality helper |\n| `check.lessThan(path)` | Cross-field less-than helper |\n| `check.greaterThan(path)` | Cross-field greater-than helper |\n| `check.requiredIf(path)` | Conditional required helper |\n| `builtInValidationFunctions` | All built-in validation functions |\n| `runValidationCheck()` | Run a single validation check |\n\n### User Prompt\n\n| Export | Purpose |\n|--------|---------|\n| `buildUserPrompt(options)` | Build a user prompt with optional spec refinement and state context |\n| `buildEditUserPrompt(options)` | Build a user prompt for editing an existing spec (used internally by `buildUserPrompt`) |\n| `buildEditInstructions(config, format)` | Generate the prompt section describing available edit modes |\n| `isNonEmptySpec(spec)` | Check whether a spec has a root and at least one element |\n| `UserPromptOptions` | Options type for `buildUserPrompt` |\n| `EditMode` | `\"patch\" \\| \"merge\" \\| \"diff\"` |\n| `EditConfig` | Configuration for edit modes (`{ modes: EditMode[] }`) |\n| `BuildEditUserPromptOptions` | Options type for `buildEditUserPrompt` |\n\n### Merge and Diff\n\n| Export | Purpose |\n|--------|---------|\n| `deepMergeSpec(base, patch)` | RFC 7396 deep merge (null deletes, arrays replace, objects recurse) |\n| `diffToPatches(oldObj, newObj)` | Generate RFC 6902 JSON Patch operations from object diff |\n\n### Spec Validation\n\n| Export | Purpose |\n|--------|---------|\n| `validateSpec(spec, options?)` | Validate spec structure and return issues |\n| `autoFixSpec(spec, options?)` | Auto-fix common spec issues; `fixDetails` classifies each fix as lossy or lossless, `{ lossy: false }` withholds pruning |\n| `formatSpecIssues(issues)` | Format validation issues as readable strings |\n\n### Actions\n\n| Export | Purpose |\n|--------|---------|\n| `ActionBinding` | Action binding with `action`, `params`, `confirm`, `preventDefault`, etc. |\n| `BuiltInAction` | Built-in action definition with `name` and `description` |\n\n### Inline Mode (Mixed Streams)\n\n| Export | Purpose |\n|--------|---------|\n| `createJsonRenderTransform()` | TransformStream that separates text from JSONL patches in a mixed stream |\n| `pipeJsonRender()` | Server-side helper to pipe a mixed stream through the transform |\n| `SPEC_DATA_PART` / `SPEC_DATA_PART_TYPE` | Constants for filtering spec data parts |\n\nThe transform splits text blocks around spec data by emitting `text-end`/`text-start` pairs, ensuring the AI SDK creates separate text parts and preserving correct interleaving of prose and UI in `message.parts`.\n\n### State Store\n\n| Export | Purpose |\n|--------|---------|\n| `createStateStore(initialState?)` | Create a framework-agnostic in-memory `StateStore` |\n| `StateStore` | Interface for plugging in external state management (Redux, Zustand, XState, etc.) |\n| `StateModel` | State model type (`Record<string, unknown>`) |\n\nThe `StateStore` interface allows renderers to use external state management instead of the built-in internal store:\n\n```typescript\nimport { createStateStore, type StateStore } from \"@json-render/core\";\n\n// Simple in-memory store\nconst store = createStateStore({ count: 0 });\n\nstore.get(\"/count\");          // 0\nstore.set(\"/count\", 1);       // updates and notifies subscribers\nstore.getSnapshot();          // { count: 1 }\n\n// Subscribe to changes (compatible with React's useSyncExternalStore)\nconst unsubscribe = store.subscribe(() => {\n  console.log(\"state changed:\", store.getSnapshot());\n});\n```\n\nPass the store to `StateProvider` in any renderer package (`@json-render/react`, `@json-render/react-native`, `@json-render/react-pdf`) for controlled mode.\n\n### Store Utilities (for adapter authors)\n\nAvailable via `@json-render/core/store-utils`:\n\n| Export | Purpose |\n|--------|---------|\n| `createStoreAdapter(config)` | Build a full `StateStore` from a minimal `{ getSnapshot, setSnapshot, subscribe }` config |\n| `immutableSetByPath(root, path, value)` | Immutably set a value at a JSON Pointer path with structural sharing |\n| `flattenToPointers(obj)` | Flatten a nested object into JSON Pointer keyed entries |\n| `StoreAdapterConfig` | Config type for `createStoreAdapter` |\n\n```typescript\nimport { createStoreAdapter, immutableSetByPath, flattenToPointers } from \"@json-render/core/store-utils\";\n```\n\n`createStoreAdapter` handles `get`, `set` (with no-op detection), batched `update`, `getSnapshot`, `getServerSnapshot`, and `subscribe` -- adapter authors only need to supply the snapshot source, write API, and subscribe mechanism:\n\n```typescript\nimport { createStoreAdapter } from \"@json-render/core/store-utils\";\n\nconst store = createStoreAdapter({\n  getSnapshot: () => myLib.getState(),\n  setSnapshot: (next) => myLib.setState(next),\n  subscribe: (listener) => myLib.subscribe(listener),\n});\n```\n\nThe official adapter packages (`@json-render/redux`, `@json-render/zustand`, `@json-render/jotai`) are all built on top of `createStoreAdapter`.\n\n### Types\n\n| Export | Purpose |\n|--------|---------|\n| `Spec` | Base spec type |\n| `Catalog` | Catalog type |\n| `BuiltInAction` | Built-in action type (`name` + `description`) |\n| `ComputedFunction` | Function signature for `$computed` expressions |\n| `VisibilityCondition` | Visibility condition type (used by `$cond`) |\n| `VisibilityContext` | Context for evaluating visibility and prop expressions |\n| `SpecStreamLine` | Single patch operation |\n| `SpecStreamCompiler` | Streaming compiler interface |\n\n## Dynamic Prop Expressions\n\nAny prop value can be a dynamic expression that resolves based on data state at render time. Expressions are resolved by the renderer before props reach components.\n\n### Data Binding (`$state`)\n\nRead a value directly from the state model:\n\n```json\n{\n  \"color\": { \"$state\": \"/theme/primary\" },\n  \"label\": { \"$state\": \"/user/name\" }\n}\n```\n\n### Two-Way Binding (`$bindState` / `$bindItem`)\n\nUse `{ \"$bindState\": \"/path\" }` on the natural value prop for form components that need read/write access. The component reads from and writes to the state path:\n\n```json\n{\n  \"type\": \"Input\",\n  \"props\": {\n    \"value\": { \"$bindState\": \"/form/email\" },\n    \"placeholder\": \"Email\"\n  }\n}\n```\n\nInside a repeat scope, use `{ \"$bindItem\": \"completed\" }` to bind to a field on the current item:\n\n### Conditional (`$cond` / `$then` / `$else`)\n\nEvaluate a condition (same syntax as visibility conditions) and pick a value:\n\n```json\n{\n  \"color\": {\n    \"$cond\": { \"$state\": \"/activeTab\", \"eq\": \"home\" },\n    \"$then\": \"#007AFF\",\n    \"$else\": \"#8E8E93\"\n  },\n  \"name\": {\n    \"$cond\": { \"$state\": \"/activeTab\", \"eq\": \"home\" },\n    \"$then\": \"home\",\n    \"$else\": \"home-outline\"\n  }\n}\n```\n\n`$then` and `$else` can themselves be expressions (recursive):\n\n```json\n{\n  \"label\": {\n    \"$cond\": { \"$state\": \"/user/isAdmin\" },\n    \"$then\": { \"$state\": \"/admin/greeting\" },\n    \"$else\": \"Welcome\"\n  }\n}\n```\n\n### Repeat Item (`$item`)\n\nInside children of a repeated element, read a field from the current array item:\n\n```json\n{ \"$item\": \"title\" }\n```\n\nUse `\"\"` to get the entire item object. `$item` takes a path string because items are typically objects with nested fields to navigate.\n\n### Repeat Index (`$index`)\n\nGet the current array index inside a repeat:\n\n```json\n{ \"$index\": true }\n```\n\n`$index` uses `true` as a sentinel flag because the index is a scalar value with no sub-path to navigate (unlike `$item` which needs a path).\n\n### Template (`$template`)\n\nInterpolate state values into strings using `${/path}` syntax:\n\n```json\n{\n  \"label\": { \"$template\": \"Hello, ${/user/name}! You have ${/inbox/count} messages.\" }\n}\n```\n\nMissing paths resolve to an empty string.\n\n### Computed (`$computed`)\n\nCall a registered function with resolved arguments:\n\n```json\n{\n  \"text\": {\n    \"$computed\": \"fullName\",\n    \"args\": {\n      \"first\": { \"$state\": \"/form/firstName\" },\n      \"last\": { \"$state\": \"/form/lastName\" }\n    }\n  }\n}\n```\n\nFunctions are registered in the catalog and provided at runtime via the `functions` prop on the renderer.\n\n```typescript\nimport type { ComputedFunction } from \"@json-render/core\";\n\nconst functions: Record<string, ComputedFunction> = {\n  fullName: (args) => `${args.first} ${args.last}`,\n};\n```\n\n### API\n\n```typescript\nimport { resolvePropValue, resolveElementProps } from \"@json-render/core\";\n\n// Resolve a single value\nconst color = resolvePropValue(\n  { $cond: { $state: \"/active\", eq: \"yes\" }, $then: \"blue\", $else: \"gray\" },\n  { stateModel: myState }\n);\n\n// Resolve all props on an element\nconst resolved = resolveElementProps(element.props, { stateModel: myState });\n```\n\n## Visibility Conditions\n\nVisibility conditions control when elements are shown. `VisibilityContext` is `{ stateModel: StateModel, repeatItem?: unknown, repeatIndex?: number }`.\n\n### Syntax\n\n```typescript\n{ \"$state\": \"/path\" }                          // truthiness\n{ \"$state\": \"/path\", \"not\": true }             // falsy\n{ \"$state\": \"/path\", \"eq\": value }             // equality\n{ \"$state\": \"/path\", \"neq\": value }            // inequality\n{ \"$state\": \"/path\", \"gt\": number }            // greater than\n{ \"$item\": \"field\" }                          // repeat item field\n{ \"$index\": true, \"gt\": 0 }                   // repeat index\n[ condition, condition ]                       // implicit AND\n{ \"$and\": [ condition, condition ] }           // explicit AND\n{ \"$or\": [ condition, condition ] }            // OR\ntrue / false                                   // always / never\n```\n\n### TypeScript Helpers\n\n```typescript\nimport { visibility } from \"@json-render/core\";\n\nvisibility.always              // true\nvisibility.never               // false\nvisibility.when(\"/path\")       // { $state: \"/path\" }\nvisibility.unless(\"/path\")     // { $state: \"/path\", not: true }\nvisibility.eq(\"/path\", val)    // { $state: \"/path\", eq: val }\nvisibility.neq(\"/path\", val)   // { $state: \"/path\", neq: val }\nvisibility.gt(\"/path\", n)      // { $state: \"/path\", gt: n }\nvisibility.gte(\"/path\", n)     // { $state: \"/path\", gte: n }\nvisibility.lt(\"/path\", n)      // { $state: \"/path\", lt: n }\nvisibility.lte(\"/path\", n)     // { $state: \"/path\", lte: n }\nvisibility.and(cond1, cond2)   // { $and: [cond1, cond2] }\nvisibility.or(cond1, cond2)    // { $or: [cond1, cond2] }\n```\n\n## User Prompt Builder\n\nBuild structured user prompts for AI generation, with support for refinement and state context:\n\n```typescript\nimport { buildUserPrompt } from \"@json-render/core\";\n\n// Fresh generation\nconst prompt = buildUserPrompt({ prompt: \"create a todo app\" });\n\n// Refinement with edit modes (default: patch-only)\nconst refinementPrompt = buildUserPrompt({\n  prompt: \"add a dark mode toggle\",\n  currentSpec: existingSpec,\n  editModes: [\"patch\", \"merge\"],\n});\n\n// With runtime state context\nconst contextPrompt = buildUserPrompt({\n  prompt: \"show my data\",\n  state: { todos: [{ text: \"Buy milk\" }] },\n});\n```\n\nWhen `currentSpec` is provided, the prompt instructs the AI to use the specified edit modes. Available modes:\n\n- **`\"patch\"`** — RFC 6902 JSON Patch. One operation per line. Best for precise, targeted single-field updates.\n- **`\"merge\"`** — RFC 7396 JSON Merge Patch. Partial object deep-merged; `null` deletes. Best for structural changes.\n- **`\"diff\"`** — Unified diff against the serialized spec. Best for small text-level changes.\n\n## Deep Merge and Diff\n\nFormat-agnostic utilities for working with specs:\n\n```typescript\nimport { deepMergeSpec, diffToPatches } from \"@json-render/core\";\n\n// RFC 7396 deep merge: null deletes, arrays replace, objects recurse\nconst merged = deepMergeSpec(baseSpec, { elements: { main: { props: { title: \"New\" } } } });\n\n// RFC 6902 diff: generate JSON Patch operations from two objects\nconst patches = diffToPatches(oldSpec, newSpec);\n// [{ op: \"replace\", path: \"/elements/main/props/title\", value: \"New\" }]\n```\n\n## Spec Validation\n\nValidate spec structure and auto-fix common issues:\n\n```typescript\nimport { validateSpec, autoFixSpec, formatSpecIssues } from \"@json-render/core\";\n\n// Validate a spec\nconst { valid, issues } = validateSpec(spec);\n\n// Format issues for display\nconsole.log(formatSpecIssues(issues));\n\n// Auto-fix common issues (returns a corrected copy)\nconst { spec: fixed, fixes, fixDetails } = autoFixSpec(spec);\n```\n\n`validateSpec` checks structure beyond the catalog schema: missing or dangling `children` and named `slots` references, malformed `visible` conditions (anything outside the documented forms evaluates to hidden at runtime, so it is rejected with code `invalid_visible`), `repeat` containers with no children (`repeat_without_children`), relative repeat paths outside an enclosing repeat (`repeat_item_outside_scope`), and `repeat.statePath` values that do not reference an array in the spec's own `state` (`repeat_state_mismatch`).\n\n`autoFixSpec` distinguishes lossless fixes (relocating `visible`/`on`/`repeat`/`watch` out of `props`) from lossy ones (pruning `children` or named `slots` references to elements that were never defined). Each entry in `fixDetails` carries `{ message, lossy }`. Callers with a repair loop should apply lossless fixes immediately and prefer re-prompting over lossy fixes, passing `{ lossy: false }` to withhold pruning until retries are exhausted:\n\n```typescript\nconst lastAttempt = retriesUsed >= maxRetries;\nconst { spec: fixed, fixDetails } = autoFixSpec(spec, { lossy: lastAttempt });\n```\n\n## State Watchers\n\nElements can declare a `watch` field to trigger actions when state values change. `watch` is a top-level field on the element (sibling of `type`, `props`, `children`), not inside `props`.\n\n```json\n{\n  \"type\": \"Select\",\n  \"props\": {\n    \"label\": \"Country\",\n    \"value\": { \"$bindState\": \"/form/country\" },\n    \"options\": [\"US\", \"Canada\", \"UK\"]\n  },\n  \"watch\": {\n    \"/form/country\": {\n      \"action\": \"loadCities\",\n      \"params\": { \"country\": { \"$state\": \"/form/country\" } }\n    }\n  },\n  \"children\": []\n}\n```\n\nWatchers only fire on value changes, not on initial render. Multiple action bindings per path execute sequentially.\n\n## Validation\n\n### Built-in Validation Functions\n\n| Function | Description | Args |\n|----------|-------------|------|\n| `required` | Value must not be empty | — |\n| `email` | Must be a valid email | — |\n| `url` | Must be a valid URL | — |\n| `numeric` | Must be a number | — |\n| `minLength` | Minimum string length | `{ min: number }` |\n| `maxLength` | Maximum string length | `{ max: number }` |\n| `min` | Minimum numeric value | `{ min: number }` |\n| `max` | Maximum numeric value | `{ max: number }` |\n| `pattern` | Must match regex | `{ pattern: string }` |\n| `matches` | Must equal another field | `{ other: { $state: \"/path\" } }` |\n| `equalTo` | Alias for matches | `{ other: { $state: \"/path\" } }` |\n| `lessThan` | Must be less than another field | `{ other: { $state: \"/path\" } }` |\n| `greaterThan` | Must be greater than another field | `{ other: { $state: \"/path\" } }` |\n| `requiredIf` | Required when condition is truthy | `{ field: { $state: \"/path\" } }` |\n\n### TypeScript Helpers\n\n```typescript\nimport { check } from \"@json-render/core\";\n\ncheck.required(\"Field is required\");\ncheck.email(\"Invalid email\");\ncheck.matches(\"/form/password\", \"Passwords must match\");\ncheck.equalTo(\"/form/password\", \"Passwords must match\");\ncheck.lessThan(\"/form/endDate\", \"Must be before end date\");\ncheck.greaterThan(\"/form/startDate\", \"Must be after start date\");\ncheck.requiredIf(\"/form/enableNotifications\", \"Required when notifications enabled\");\n```\n\n## Custom Schemas\n\njson-render supports completely different spec formats for different renderers:\n\n```typescript\n// React: Flat element map\n{ root: \"card-1\", elements: { \"card-1\": { type: \"Card\", props: {...}, children: [...] } } }\n\n// Remotion: Timeline\n{ composition: {...}, tracks: [...], clips: [...] }\n\n// Your own: Whatever you need\n{ pages: [...], navigation: {...}, theme: {...} }\n```\n\nEach renderer defines its own schema with `defineSchema()` and its own prompt template.\n","readmeFilename":"README.md"}