{"_id":"@ade-dev/chat-ui","_rev":"18-594dd4fe7ea7bb1c6007d93398d9bdef","name":"@ade-dev/chat-ui","dist-tags":{"latest":"0.7.1"},"versions":{"0.0.0":{"name":"@ade-dev/chat-ui","version":"0.0.0","license":"MIT","_id":"@ade-dev/chat-ui@0.0.0","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"8c43591c2ccb5dc294f45555bc7fc7cbb9e28514","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.0.0.tgz","fileCount":2,"integrity":"sha512-5pz6Hwk9PO3fZst1uSx1TR9HAm5YB9BtMFVf9YKN9+/LDf8yET0ahRDVXQTKpDuczLXJSpAAyJ6mH50xkxjIyA==","signatures":[{"sig":"MEYCIQD70dJC6o0C0U4xtxRonCV1OHIeMCjN+ZwkFqIjqFVP7wIhAIZWMM2vhrRkv8WWV/BUFBFkyZgl8N150ccQsft49CKU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":667},"private":false,"_npmUser":{"name":"arul28","email":"arulsharma1028@gmail.com"},"deprecated":"Name-reservation placeholder. Install @ade-dev/chat-ui@0.1.0 or later.","repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git"},"_npmVersion":"11.16.0","description":"Placeholder reserving this name. Install 0.1.0 or later for the real package.","directories":{},"_nodeVersion":"26.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.0.0_1788204840576_0.5484144824031103","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@ade-dev/chat-ui","version":"0.1.0","keywords":["ade","chat","react","ui","mcp","agent"],"license":"AGPL-3.0-only","_id":"@ade-dev/chat-ui@0.1.0","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"82907c3fd7fbc251f8c9b3e167f45ebc693643ff","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.1.0.tgz","fileCount":9,"integrity":"sha512-/hnkoi8kbMNWFpkfHm7PI5BRLwPQ0Ohf8fzofu9s17eiY1kTUtSw80OC374H3Vc0n43fHjgHTqtSyDpdd/vBww==","signatures":[{"sig":"MEUCIGI/9X6V7PLLZ3wHWGP0/pg68tb9ZqIDPa8sFdNfEsZpAiEAqwDNgcwWEdgrBoZ2pXNNwBd4z9ZZIvL4OXO1l/sUPEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":746249},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"f3b797c5ad77efecd53faff40d954d27986b7549","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.0.2","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.1.0_1788206567084_0.6324759949202943","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ade-dev/chat-ui","version":"0.1.1","keywords":["ade","chat","react","ui","mcp","agent"],"license":"AGPL-3.0-only","_id":"@ade-dev/chat-ui@0.1.1","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"74159e12ffeb05a1e97bdec8f3d5fccf2263ab74","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.1.1.tgz","fileCount":9,"integrity":"sha512-xauAsyt89YX+hlr+mpHuUiyvwSEG0x7xuLmqL455IeV9xO4lcArYfyipqnJP6f+tmO44d1Vgrlc2ei3E5AMKGg==","signatures":[{"sig":"MEUCIQDwrhSK3X1xxogOgNraFr/XlNfZGEuN2reQHiGK2ggb6QIgIluIPLkaEVc1iSGLzPBDfAhZ7hAixgmorUhf5aFQ3MY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":746249},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"dc652d7ef0b5ac5c0b1c8b61eb8b222e200b2a15","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.0.2","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.1.1_1788207133481_0.6557059735389128","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ade-dev/chat-ui","version":"0.1.2","keywords":["ade","chat","react","ui","mcp","agent"],"license":"AGPL-3.0-only","_id":"@ade-dev/chat-ui@0.1.2","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"3f8d5bc4256e823a6fd875cbccf585f7cd77f528","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.1.2.tgz","fileCount":9,"integrity":"sha512-zMbWHhj70G99Ww4zbM057WlRAzeIVszppHHzUnF/uoLjr6zxSVMqYB6u3gBjXcF/9ju+vFTVgcUPgh7a4QNZEw==","signatures":[{"sig":"MEYCIQDBq+EV7J8xtx733nyavx+Enjcd1hX17wR7SS8x3D0HMAIhAMLDJ7bQRZEfQQWh/+bQj3tH7aKfHODAoMhfM4lqNBIm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":746368},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"cf9473ebbe805c42ce815ccea438ebd66f91429e","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.0.2","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.1.2_1788212998161_0.1561566640510612","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ade-dev/chat-ui","version":"0.2.0","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.2.0","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"624b12ad21cda6ba8db5203cd9698acb8856ecd7","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.2.0.tgz","fileCount":9,"integrity":"sha512-HKOMM1cTpwXkGxlq0bnM1b8MjQWxmnDcJpOr4crYSZvshUZKZjACPMUy2hE+pG+rA/3DI++DZfbc9AvF73MWDQ==","signatures":[{"sig":"MEUCIDiKa01WKooobV1FdHJ+p5D4o4rLshlkBaPfU1yXwdP4AiEAmk95T5aFJUOpktyLrjvaGcrTG+PNCggZbLXZjZj0Jx0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":904795},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"234df599f601b8d280719eb204067a11b1ff3c3f","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.0.2","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.2.0_1788365497138_0.387029279301601","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ade-dev/chat-ui","version":"0.2.1","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.2.1","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"0b294605eb3c24385034a861645e2224c6ea8458","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.2.1.tgz","fileCount":9,"integrity":"sha512-E86UhjK11cMD3xekz/XBof6S75coEX0pYRgJ7FG8j5BEXU6Vrdy+yjvCRubq2KIQjMHNVYt3SyQDvrxKZgozQQ==","signatures":[{"sig":"MEYCIQD5c+XCXNXQDJ2CN+jemBCUUlax9TjZ2at9AiO4L410EwIhAPfjL8i/dj12oaEKR14Gx7QJBd1SQGndnmA/e4lONoH+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":907651},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"4578e307cb87ae870b7b37451d5d175ab2c53f39","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.0.2","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.2.1_1789663954901_0.025714541997244877","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@ade-dev/chat-ui","version":"0.2.2","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.2.2","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"cf2f35129cdfcd7bc41405abe1276cc5630165c4","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.2.2.tgz","fileCount":9,"integrity":"sha512-tAMzYixGwVMMwJqfsYAWkqPjnj96xkzjbRuy4Nehj7B9YeXXsxb9SfRkDuFk9rzWBOV7wUYu4j8GWefO2GXsPg==","signatures":[{"sig":"MEUCIQD22qs78KUFdjJmT7+fRDfZslmxSDjytgWe+wbTjHTOpwIgPaBQ4RKOBwgC/5n2A+iQvu7NAM61INTYR//StZGCmhE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEMkJARHIzYrqVh9mKrNRpsZS+nFCatCD8OSmCvpoYxvAiA7cG3wnfa+PfYQk5oVwMVY6Bm1dHtFTRPHutdYFeilag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":919867},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"e8a8830f184573ee221d92c67790eb8763b81710","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.0.2","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.2.2_1789800903863_0.757029129888569","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@ade-dev/chat-ui","version":"0.2.3","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.2.3","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"18f54081a7328064b16edee77a23d5b2dd0e3210","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.2.3.tgz","fileCount":9,"integrity":"sha512-UEL5Pa8njtsVqgTGBRCML9CuZyiQcl1tjgiAcOsr2RNngUyq56BLs6WQyIbSN5SUL30Q4bo1Y2FIcTHtE5uj5A==","signatures":[{"sig":"MEUCIQDPw2A5zLgy1fY1OxmwHtCxeDWhHJD91w/cJy78hQoZIwIgV+/uJ3JwMLrwzAB3Qq3p0kS7zcU6QIJNJ7vEGI8st5s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCTCiic1vY5ySkkZQ+iIWclEQvSJz5L4vwmBhkWU8lOKgIhAIa/3+qK4STZsyXeHE5qsixnFWlpW2D2rG+1X8ezo0g3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":919867},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"caafad9ad460000626dd041e6b7753f8465c58c7","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.1.0","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.2.3_1790186038827_0.3448793750012562","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ade-dev/chat-ui","version":"0.3.0","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.3.0","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"a13fac5ad9b73e1f95ffe51d387b76ba75090b16","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.3.0.tgz","fileCount":9,"integrity":"sha512-f5qN+FRF09zW+qOCRvzny0EiT3gUpDZwmLzIPi8G9RTh3R3/h6MRzRk3gXD4Zd/prdyU71uZMxNh2OUJficrIw==","signatures":[{"sig":"MEUCIGAxI0t9Kx4D7cWCXrj52kz1a7HOMxZ8Sc/1Vg2YHQm2AiEA13Nu2jAyakj74TY8br53PpphcfKHqd8yzl8xBFhtiSI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC1N6olhHOoXlp4i9dNXmkS4h7AaFH84EMKSL8IugSZdgIgbms8TsDHEXZdokCyhOFqATYZxe5pxWX7uJH7N2qKem8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1195360},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"7770e3f613dfa8af13b8335e6ebc10d49c05940e","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.1.0","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.3.0_1790637243601_0.5434135294456082","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ade-dev/chat-ui","version":"0.4.0","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.4.0","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"e7f229ccbcf8dd6aaa5016f92b51e6dc63a5934e","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.4.0.tgz","fileCount":9,"integrity":"sha512-DKT4gFGrVSRdmIQzTrcA2TCy1MdAA2G4GJgHcOLq7Ujrvz7uYIbhDw+uFOmhZ16Tvy0WGXdQWg3JVHFhOYNhpw==","signatures":[{"sig":"MEYCIQCAeOGD0A8k6YffbG/f93cLyZNnP02V0CBBld4raEUZVAIhAKE/s5kWT6xqy9AAHe2zfS7dmVmqFPEjY+kWK3pcGiCJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD7jMLQllU1QMAhw86wJ+xgyp/HP5Pklp1Xez1kqy57LQIgWQjubFxKHvsd/5nluq1e9fwr/FjuY7369Eu7kVmDEeY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1270131},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"b3f9ffdb668f56be13050d6a3a02d5282e40731f","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.1.0","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.4.0_1790687683696_0.3410660850439071","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ade-dev/chat-ui","version":"0.5.0","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.5.0","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"4dfaf1b9f6bf4ba9b7ecded5c881ab9736a783c4","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.5.0.tgz","fileCount":9,"integrity":"sha512-XG5B8RnvRfrsBadaID2pCFUrEZet8muozlHnKOhZPRJQUZAtmAPNlqZo46Mrc0Gy+4aaOgTRj/dU1b08dlnofg==","signatures":[{"sig":"MEQCIBhZ2HDgtPwBSWxAmbVXsjJm25ruCHFDfLEpghh0IbcRAiBl6xtGcYrnI+2ZQXTe7yf0+rqrh6ymfONTYXlzrp7w4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCG/OTAugdFON6rtx7bXg0g67Xto8uglCD/24Bebw/uiQIgUTGmePiNHZ+JctTZXL6CoyJC0MKlSXMO9nWKfKpONv0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1274755},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"f36cac8befbfcb9806dfa884e74830b3f31bb444","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.1.0","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.5.0_1790729912502_0.9189978406288872","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@ade-dev/chat-ui","version":"0.5.1","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.5.1","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"2a897a3e1efbc87359126b050984e4d5bd3caa38","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.5.1.tgz","fileCount":9,"integrity":"sha512-zIWTB6TuBg9r37vspK6yg+1CP/mzhFTqO/CbqKrENgQ3u2gUIJceyrFvYTLpMB+pjYfrKH0yPDSXaWzCNJrtaw==","signatures":[{"sig":"MEUCIAQE2JykpMzJQ/aFQEZBAPopAsDl8LaC+RQMmW/pZpkwAiEA3gtHL/SVJOkxRWndb4mGBcpEhbaDRb34snMCUobpgrI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD9Y4gqiyXUocz0K1ZhGtN/Ip/BiZBmfZ/fXqOuObSEXQIgVRskapnmauZilv5mqinunQlTQA+Ple2qs8hgLjR08Ew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1271899},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"9d47f3dc1010f51a41593cc99c955f75c1fa32a4","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.1.0","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.5.1_1790779955491_0.608490698832074","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@ade-dev/chat-ui","version":"0.5.2","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.5.2","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"f8c43a3a5f73ca4b83080a965fdbaa01e457227a","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.5.2.tgz","fileCount":9,"integrity":"sha512-OTtUxEPb4I+Wg0dIziZmHOqsKviGwadMMmp0441wSa6qL4RcYe5xPmoCvwVKi7M0GeEK8cz8qkRgM3CkD72Niw==","signatures":[{"sig":"MEYCIQDIK5mTlamQ75YtsF5SnbxsB0wnMoSaw9sVtIW4EMqflQIhAM4MCzC8KNYhxi26UJkZTJ9Q1/sz5PQhWAuARU1B2Bkn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEsxcyBgo5U++0LrFNVB4r4GSIn6C6efT537VfdZBNjGAiEAqwU1rng9zQKAMplEAlQ7059mJD4elJQnOH6bVhGb59Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1271899},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"d0ac5985336aa7b16b541c35a23c53cea11e3582","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.2.0","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.5.2_1791405518699_0.9978983348410653","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@ade-dev/chat-ui","version":"0.5.3","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.5.3","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"fda367214c1483637133cbd987d17e522ab05bfb","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.5.3.tgz","fileCount":9,"integrity":"sha512-oggLLVSprsmC4+pmAgy9hBtwwRDiiBETSukwYAc0IEZglokdk5ZyIbQp3Cq3pDciUR1/tnQDG7IzJNmZXIR9Qw==","signatures":[{"sig":"MEQCIEO6ImnTa06grw7TIQMQLq1B5X1qEZXf2y+yXOk7Y9SpAiB+wCBnaU9F8fVvIzkhh4G38dUSH6wSaC/HGrbdwFLA3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC/Shc4jaCd/sFbofpqpGsJnU1uhB3CrJbWaFnxetCWwgIhAPkuwOFnpUUKyAU7WRCAeqaVeLX1rAxbG4bjh1nqKssJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1271899},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"8dae9172deff493e702b881809c9a58fdc6ca0c6","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.2.0","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.5.3_1791937310054_0.09953923509673812","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@ade-dev/chat-ui","version":"0.6.0","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.6.0","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"b1e7e98d666bb3cc915e21eff5bde3d1e959aad6","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.6.0.tgz","fileCount":9,"integrity":"sha512-Zno5Klzz3NZyUzuU1jNQOQnqOuAa9WQPFeGw4Ag8EQeD56bm4vQFWr4D01bR30WWkLGRSffh/1QBen1ih5BN2g==","signatures":[{"sig":"MEUCIQC7gmhoD48/WRuT+6PS0qtrC7Z5PY+2uIwZpoSjAgWNlgIgbhbyHXx5pEzW11TDHI2bTjA0oU2kcyCVQV7Noet+zB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIC+cGW+XeBPA1v9GCb4oaKzO69c8siNcrMzsEVrNSiwDAiAHv4Ep32+glVGgEx7KTiepqu82WfE7YKw6gmhvfL6I0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1271899},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"d32758e2af4407861ff80f9740f576b5a8034c08","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.2.1","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.6.0_1792708860446_0.6196003946873092","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@ade-dev/chat-ui","version":"0.7.0","keywords":["ade","chat","react","ui","mcp","agent"],"license":"MIT","_id":"@ade-dev/chat-ui@0.7.0","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"8f122ee296b368dda6a12cb53fc8695b99482b0d","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.7.0.tgz","fileCount":9,"integrity":"sha512-IVVb0eazCKmzyu2H2Yox3C+aT1T7Qx79Bx8M5JIYBKE8ZXPI50LF1WYH92tEkhq6FGXE9ZUOyIRrDjAB5gvvew==","signatures":[{"sig":"MEQCIC0DhYyMMJNYdjMbO7pKuUlGin4vFAg605HL4RWj/3NDAiBtwWRTTWM2pbpx3deyxxk/7tmmbEESflc7OvxfE7IRzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFBdp2KknV9s0xc83QXYvGY8TnGofTGi7S2TsSLWyWjVAiEAqLi51T2iFPzTrmv6lk8WaJMdfPWewmme+TX6p0lmzSM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1616948},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"ea259e193c35e266a62367fa92674eaa5a3ac5cd","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"43292d08-8620-45e6-a14b-9d2f1f090a43"}},"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.2.1","description":"Embeddable React chat components for the ADE SDK.","directories":{},"sideEffects":false,"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/chat-ui_0.7.0_1793049675490_0.16336401448590654","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"_id":"@ade-dev/chat-ui@0.7.1","bugs":{"url":"https://github.com/arul28/ADE/issues"},"dist":{"shasum":"5f00e100cba8579cb2e17d8b5029ff735d607dc8","tarball":"https://registry.npmjs.org/@ade-dev/chat-ui/-/chat-ui-0.7.1.tgz","fileCount":9,"integrity":"sha512-uVtwJ1+JwycEYPbN2obgjvjH10u1mpeVOL3TfLUZ5M0/sR4niZlHRQXe35U2WEj/Z2cqLTN4AirQgXqOv4FLBw==","signatures":[{"sig":"MEYCIQC7zxXR7O5qDfKVRW1yOlFgMVpZg0aqW/2YwH1EIPEOggIhAM87A4C0JsKkRkp3Whv1skMe2JMiHuleJH5WnKoze6B4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEtj9Q0Rn66bOX/uTYjTOBOOA9O/xYvbi5vp2xjq9U1/AiEAhxj/J7HPijmIjPwOicAogEvPbzR+N6pd03p/wGkPIj0="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ade-dev%2fchat-ui@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1616948},"main":"./dist/index.cjs","name":"@ade-dev/chat-ui","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"gitHead":"64a1e458dc6edd2ce4752da5b42eefd80f611ea1","license":"MIT","scripts":{"test":"vitest run","build":"tsup","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"version":"0.7.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"43292d08-8620-45e6-a14b-9d2f1f090a43"}},"homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","keywords":["ade","chat","react","ui","mcp","agent"],"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"_npmVersion":"12.2.1","description":"Embeddable React chat components for the ADE SDK.","directories":{},"maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","jsdom":"^22.1.0","react":"^18.3.1","vitest":"^2.1.9","react-dom":"^18.3.1","typescript":"^5.7.3","@ade-dev/sdk":"file:../sdk","@types/react":"^18.2.74","@types/react-dom":"^18.2.24","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@ade-dev/sdk":">=0.1.0"},"peerDependenciesMeta":{"@ade-dev/sdk":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chat-ui_0.7.1_1793301475836_0.44301921457230364"}}},"time":{"created":"2026-08-31T19:34:00.365Z","modified":"2026-10-29T19:17:56.368Z","0.0.0":"2026-08-31T19:34:00.725Z","0.1.0":"2026-08-31T20:02:47.286Z","0.1.1":"2026-08-31T20:12:13.709Z","0.1.2":"2026-08-31T21:49:58.300Z","0.2.0":"2026-09-02T16:11:37.431Z","0.2.1":"2026-09-17T16:52:35.044Z","0.2.2":"2026-09-19T06:55:03.962Z","0.2.3":"2026-09-23T17:53:58.923Z","0.3.0":"2026-09-28T23:14:03.689Z","0.4.0":"2026-09-29T13:14:43.843Z","0.5.0":"2026-09-30T00:58:32.670Z","0.5.1":"2026-09-30T14:52:35.624Z","0.5.2":"2026-10-07T20:38:38.873Z","0.5.3":"2026-10-14T00:21:50.148Z","0.6.0":"2026-10-22T22:41:00.561Z","0.7.0":"2026-10-26T21:21:15.626Z","0.7.1":"2026-10-29T19:17:55.985Z"},"bugs":{"url":"https://github.com/arul28/ADE/issues"},"license":"MIT","homepage":"https://github.com/arul28/ADE/tree/main/packages/chat-ui","keywords":["ade","chat","react","ui","mcp","agent"],"repository":{"url":"git+https://github.com/arul28/ADE.git","type":"git","directory":"packages/chat-ui"},"description":"Embeddable React chat components for the ADE SDK.","maintainers":[{"name":"arul28","email":"arulsharma1028@gmail.com"}],"readme":"# @ade-dev/chat-ui\n\nEmbeddable React chat components over `@ade-dev/sdk`.\n\n**Docs:** [Chat UI](https://www.ade-app.dev/docs/sdk/chat-ui) · [ADE SDK](https://www.ade-app.dev/docs/sdk/overview)\n\nThis package renders an agent conversation for **your** users, not for ADE\ndevelopers. There are no lanes, projects, repos, or worktrees in any prop or\nany string it can display. Tool activity is renamed through a label map, so a\ncustomer sees \"Searching your invoices…\" where the agent ran `server.tool`.\n\n- Zero runtime dependencies. React and React DOM are peers; `@ade-dev/sdk` is an\n  optional peer used for types only.\n- Theming is CSS custom properties only — no Tailwind, no class overrides.\n- Every component is importable standalone; `<AdeChat>` is one assembly of them.\n\n```bash\nnpm install @ade-dev/chat-ui\n```\n\n```tsx\nimport { AdeChat, createTheme } from \"@ade-dev/chat-ui\";\n\n<AdeChat\n  client={client}\n  threadKey=\"support-42\"\n  labels={{ map: { \"server.*\": \"Looking that up…\" } }}\n  theme={createTheme({ accent: \"#7c5cff\", background: \"#0e0f13\" })}\n/>;\n```\n\n## Layout\n\n```\npackages/chat-ui/\n  src/\n    index.ts                     public surface\n    sdkTypes.ts                  copied SDK contract (see below)\n    AdeChat.tsx                  composed default\n    composer/\n      Composer.tsx\n      composerState.ts           pure send/steer/key decisions\n    transcript/\n      Transcript.tsx             scroll container + row views + ActivityIndicator\n      ToolChip.tsx\n      ApprovalCard.tsx           inline approval card\n      transcriptRows.ts          ported row collapsing/grouping\n      markdown.tsx               dependency-free markdown renderer\n      links.tsx                  AdeLink + onLinkClick context (every link chat-ui draws)\n    models/\n      ModelPicker.tsx            rail + search + grouped list\n      ProviderCard.tsx           ProviderCard, ProviderCards\n      modelSearch.ts             ported scoring + provider grouping\n    activity/labels.ts           label map, wildcards, phases, elapsed\n    theme/\n      createTheme.ts             token generator\n      styles.ts                  the stylesheet\n      AdeChatStyles.tsx\n    context/AdeChatContext.tsx   provider + useAdeProviders + useAdeThread\n  examples/\n    fakeClient.ts                typed in-memory client\n    basic.tsx                    full assembly, both shapes\n  test/                          225 tests\n```\n\nPorted files carry a provenance header naming their ADE desktop source and what\nwas trimmed. `transcriptRows.ts` and `modelSearch.ts` are ports;\n`Composer.tsx` and the model picker components are fresh implementations that\nfollow the desktop interaction/visual structure without inheriting its props.\n\n## Components\n\n### `<AdeChat>`\n\nTranscript above, composer with the model rail below. No header bar.\n\n| Prop | Type | Default | |\n|---|---|---|---|\n| `client` | `AdeChatClient` | — | required |\n| `threadKey` | `string` | — | changing it opens a different conversation |\n| `defaultModelId` / `modelId` | `string` | — | uncontrolled / controlled selection |\n| `onModelChange` | `(model: ModelDescriptor) => void` | — | |\n| `labels` | `ActivityLabelConfig` | — | |\n| `theme` | `Partial<AdeChatTheme>` | — | usually `createTheme(...)` |\n| `disableStyles` | `boolean` | `false` | skip the injected stylesheet |\n| `placeholder`, `sendOnEnter`, `onRequestAttachment` | | | forwarded to `<Composer>` |\n| `value` / `onValueChange` | | — | controlled draft, forwarded to `<Composer>` (0.4) |\n| `onSend` | `(input, thread) => AdeChatSendResult \\| Promise<…>` | — | runs before a new message is sent; `false` cancels and keeps the draft, `\"handled\"` means you sent it yourself (0.4) |\n| `children` | `(thread: ThreadState) => ReactNode` | — | drawn between transcript and composer (0.4) |\n| `threadRef` | `{ current: ThreadState \\| null }` | — | the live thread state for code outside the tree (0.4) |\n| `onLinkClick` | `(href, { source, text }) => void` | — | handle links yourself; pass it in Electron (0.4) |\n| `modelRail` | `ReactNode` | built-in picker | replaces the default picker; `null` = empty rail |\n| `actions` | `ReactNode` | — | extra composer controls (right rail) |\n| `attachments` / `onAttachmentsChange` | | — | controlled staging; see the merge rule under `<Composer>` |\n| `reasoningEffort` / `onReasoningEffortChange` | | — | the picker's effort control; the host applies it |\n| `renderToolResult`, `toolChipActions` | | | forwarded to `<Transcript>` |\n| `historyPageSize` | `number` | `200` | events per history page, when the thread has `historyPage` |\n| `styleNonce` | `string` | — | CSP nonce for the injected `<style>` |\n| `hideToolCalls`, `hideReasoning`, `renderMarkdown`, `emptyState` | | | forwarded to `<Transcript>` |\n| `approvals` | `{ render?, labels? }` | — | approval card wording, or a replacement card |\n| `hideModelPicker` | `boolean` | `false` | when the host pins a model |\n| `className` | `string` | — | |\n\nThe approval card itself is not opt-in. A provider that asks for permission\nparks its turn until someone answers, so a host that drew nothing would show a\nconversation that had silently stopped. `approvals` changes only how it looks.\n\n### `<Composer>`\n\n| Prop | Type | Default | |\n|---|---|---|---|\n| `onSend` | `(input: SendInput) => void \\| Promise<void>` | — | required |\n| `onSteer` | same | — | omit to disable steering entirely |\n| `onInterrupt` | `() => void \\| Promise<void>` | — | omit to hide Stop |\n| `status` | `\"idle\" \\| \"running\" \\| \"error\"` | `\"idle\"` | |\n| `ready` | `boolean` | `true` | false while the thread resolves |\n| `disabled` | `boolean` | `false` | |\n| `value` / `onValueChange` | `string` / `(v) => void` | — | controlled draft |\n| `placeholder` | `string` | `\"Send a message…\"` | |\n| `sendOnEnter` | `boolean` | `true` | false swaps to Cmd/Ctrl+Enter |\n| `autoFocus` | `boolean` | `false` | |\n| `maxRows` | `number` | `12` | autosize ceiling |\n| `onRequestAttachment` | `() => Promise<ChatAttachment[] \\| null> \\| …` | — | omit to hide the button |\n| `attachments` / `onAttachmentsChange` | | — | controlled staging |\n| `modelRail` | `ReactNode` | — | slot for the model rail |\n| `actions` | `ReactNode` | — | extra controls |\n| `error` | `string \\| null` | — | |\n| `className` | `string` | — | |\n\nControlled attachments: `onAttachmentsChange` always receives the FULL new\nlist, so replace your state with it and never append. A picker result is merged\ninto the latest list (not the list from when the picker opened), duplicates are\nremoved by `id`, and a remove click removes one `id`. Every attachment is sent\nwith `type`: `\"image\"` for an `image/*` MIME type or an image extension (bmp,\ngif, heic, heif, ico, jpeg, jpg, png, svg, tif, tiff, webp), else `\"file\"`. This\nis the runtime's own rule.\n\nSubmitting during a running turn dispatches `onSteer`, never a second `onSend`,\nand staged attachments go with the steer. Enter sends, Shift+Enter is a newline, IME composition never submits, Escape\ninterrupts a running turn. A failed send restores the draft rather than losing\nit.\n\n### `<Transcript>`\n\n| Prop | Type | Default | |\n|---|---|---|---|\n| `rows` | `readonly TranscriptRow[]` | — | from `buildTranscriptRows()` or `useAdeThread()` |\n| `status` | `\"idle\" \\| \"running\" \\| \"error\"` | `\"idle\"` | drives the live indicator |\n| `labels` | `ActivityLabelConfig` | — | |\n| `hideToolCalls` | `boolean` | `false` | hides chips entirely |\n| `hideReasoning` | `boolean` | `false` | |\n| `expandReasoning` | `boolean` | `false` | reasoning starts collapsed |\n| `renderMarkdown` | `(text: string) => ReactNode` | built-in | |\n| `onLinkClick` | `(href, { source, text }) => void` | — | chat-ui calls `preventDefault()` and hands you the link. Without it, links open with `target=\"_blank\"` — in Electron, a chrome-less app window (0.4) |\n| `onApprove` | `(itemId, decision) => void \\| Promise<void>` | — | omit to render approval cards read-only |\n| `approvals` | `{ render?, labels? }` | — | custom approval card and button wording |\n| `emptyState` | `ReactNode` | `\"No messages yet.\"` | |\n| `renderToolResult` | `(row: ToolChipRow) => ReactNode` | — | custom result view under a chip |\n| `toolChipActions` | `(row: ToolChipRow) => { label, onSelect }[]` | — | buttons on a chip. Prefer `row.resourceLinks`; when a tool returns only ids, parse `row.result` yourself |\n| `hasOlder` / `loadingOlder` / `onLoadOlder` | | — | \"Load older messages\" paging |\n| `windowThreshold` | `number` | `150` | row count above which rows are windowed |\n| `overscan` | `number` | `8` | rows mounted on each side of the view |\n| `className` | `string` | — | |\n\nCard set: user text, assistant markdown, collapsed reasoning, tool chips,\napprovals, error. Pinned to the bottom and released as soon as the reader\nscrolls up. Above `windowThreshold` rows only the rows in view plus `overscan`\nare mounted (no dependency; every row renders where `ResizeObserver` is\nmissing). Tool chip rows carry `identity: { server, tool }` and, when the\nprovider passes them, `resourceLinks`.\n\n### Approval cards\n\nAn `approval_request` becomes an `approval` row and renders inline where the\nrequest happened, not as a modal — the reader needs to see what the agent was\ndoing when it asked. `pending_input_resolved` settles the same card in place,\nand a turn that ends unanswered marks it expired. The card never disappears and\nnever takes focus from the composer.\n\nTwo rules keep a live card from being drawn dead, which is a hang rather than a\ncosmetic bug — the buttons go read-only while the runtime still waits:\n\n- **A turn ending is `done`, or a `status` of `completed` / `failed` /\n  `interrupted`. Never `error`.** An `error` ends no turn on either layer: an\n  OpenCode per-tool failure emits one and keeps streaming, and the Codex\n  planning-approval guard emits one to decline a single request.\n- **A restored row is live by construction.** `pendingApprovals()` is the\n  engine's authoritative \"still blocked right now\" list, read after the history\n  window, so no ending in that history expires it. Only an explicit resolution\n  settles it. Restored rows sort in at the instant they were read rather than\n  being appended.\n\n| Decision | Button | Meaning |\n|---|---|---|\n| `accept` | Allow once | this call only |\n| `accept_always` | Always allow | stop asking for this in this session |\n| `reject` | Reject | refuse, and let the model hear why |\n\nQuestions, structured questions and plan approvals use an input card backed by\nthe optional `thread.respond(requestId, response)` method. `response` can carry\nquestion `answers`, a `decision`, or `responseText`. Plan buttons send\n`decision: \"accept\"` or `decision: \"decline\"`; question answers are keyed by\nquestion id. Without `respond`, those\ncards stay read-only with a reason. Model-selection requests stay read-only.\nApproval cards without `thread.approve` are also read-only; neither card type\noffers an action the client cannot perform.\n\n## Questions, queue and account surfaces\n\n`<AdeChat>` renders question and plan cards in the transcript, a queue strip\nwhen `thread.queue.list()` exists, and a usage-limit notice when the thread\nreports resume controls. A client may omit any of these optional methods; the\ncorresponding controls are hidden or read-only. Failed queue and account reads\nshow an error and retry rather than presenting a false empty list.\n\nStructured answers are keyed by question id. Single choices and freeform input\nuse a string; multi-select uses a string array. Secret questions use a password\nfield. Unstructured freeform responses use `responseText`.\n\nThe standalone `<AccountList>`, `<SignInCard>`, `<ApiKeyForm>`,\n`<UsageMeter>` and `<AccountSwitcher>` components are also available. Account\nrows contain no stored API keys. `<ApiKeyForm>` clears the entered key after a\nsuccessful save and does not include service error details that might echo it.\n\n### `<ModelPicker>`\n\n| Prop | Type | Default | |\n|---|---|---|---|\n| `value` | `string \\| null` | — | selected model id |\n| `onChange` | `(model: ModelDescriptor) => void` | — | required |\n| `models` / `providers` | arrays | — | supply data directly; omit to read from the client |\n| `client` | `AdeChatClient` | context | used only when data is not supplied |\n| `searchable` | `boolean` | `true` | |\n| `renderProviderNotice` | `(status, providerId) => ReactNode` | — | drawn under an unusable provider group |\n| `className` | `string` | — | |\n\nModels group under their provider; rows are disabled when the provider is not\ninstalled/authenticated or the model reports `available: false`.\n\n### `<ProviderCard>` / `<ProviderCards>`\n\nFree-floating — the host decides placement.\n\n| Prop | Type | |\n|---|---|---|\n| `status` | `ProviderStatus` | required on `ProviderCard` |\n| `renderAction` | `(command, kind: \"install\" \\| \"login\") => ReactNode` | replace the copy button |\n| `onCopy` | `(command: string) => void \\| Promise<void>` | override the clipboard write |\n| `showDetail` | `boolean` (default `false`) | add a line with the version and a truncated binary path |\n| `className` | `string` | |\n\n`<ProviderCards>` adds `statuses`, `client`, and `onlyNeedsAttention` (default\n`true`) and renders one card per provider needing action. `showDetail` is\nforwarded to every card.\n\nA missing provider reads \"Not installed\" only when `source` is `\"probed\"` —\na runtime looked and found nothing. When the status was derived from the model\ncatalog nobody looked, so the card says \"Not detected\" instead. Telling someone\nto install a CLI they already have is the failure that distinction removes.\n\n## Activity labels\n\n```ts\nlabels={{\n  map: {\n    \"server.tool\": { running: \"Searching…\", done: \"Searched\", error: \"Search failed\" },\n    \"server.*\": \"Talking to your account…\",   // string = running phase only\n    \"*\": \"Working…\",\n  },\n  resolve: (source) => source.tool === \"x\" ? \"Custom\" : null,  // wins over map\n  icons: { \"server.*\": <ServerIcon /> },\n  thinkingLabel: \"Thinking…\",\n  elapsedAfterMs: 3000,\n}}\n```\n\nResolution order: `resolve()` → exact key → longest wildcard prefix → `*` →\nthe raw tool name. A bare string labels the running phase only, so a finished\nchip never keeps saying \"Searching…\". Labels apply to the live thinking\nindicator, tool chips, and error text. An elapsed suffix appears after 3s of\nrunning and is formatted `45s` / `1m 35s` / `1h 5m`. `prefers-reduced-motion`\nis respected in both CSS and the indicator's animated ellipsis.\n\nAn MCP tool may be keyed in any spelling — `mcp:versic:search`,\n`mcp__versic__search`, `versic:search`, or the bare `search` — and one key\nmatches the tool under every provider. A **server-qualified** key matches a\ntool the provider reported by its bare name only when the event names that\nserver (`ToolChipRow.identity`). A bare name with no server on the event\nmatches only a bare key, and the matcher never guesses a server from the name.\n\nA bare key is compared with the tool's **own name**, so the bare key to write is\nthe name your providers report. One wildcard covers a whole family when your\ninjected tools carry a prefix:\n\n```ts\nlabels={{\n  map: {\n    \"mcp:versic:*\": \"Checking your projects…\", // wins when the event names the server\n    \"versic_*\": \"Checking your projects…\",     // the tool's own name, e.g. versic_projects\n    \"*\": \"Working…\",\n  },\n}}\n```\n\n`versic_*` matches `versic_projects`, whether it arrives bare or as\n`mcp__versic__versic_projects`. It does **not** match a bare `search` that\nbelongs to the `versic` server — that name starts with `search` — so only `*` or\nan exact `search` key reaches that one.\n\n## Theming\n\n`createTheme({ accent, background, foreground, muted, danger, success, radius, fontFamily, monoFontFamily, fontSize, space, scheme })`\nreturns the full token set; hovers, borders and subtle tints are derived. Pass\nit to `theme`, or set the tokens yourself on any ancestor.\n\n```\n--adechat-bg            --adechat-accent           --adechat-radius\n--adechat-bg-subtle     --adechat-accent-fg        --adechat-radius-sm\n--adechat-bg-raised     --adechat-accent-subtle    --adechat-font\n--adechat-fg            --adechat-border           --adechat-font-mono\n--adechat-muted         --adechat-border-strong    --adechat-font-size\n--adechat-danger        --adechat-hover            --adechat-space\n--adechat-danger-subtle --adechat-success\n```\n\n`--adechat-root-bg` is the chat root's background: `transparent` for\n`createTheme({ background: \"transparent\" })`, else `var(--adechat-bg)`. Pass\n`scheme` with a transparent background. `injectAdeChatStyles(target?, { nonce })`\nand `<AdeChatStyles nonce>` set a CSP nonce on the injected `<style>`.\n\nLight/dark is inferred from the background's luminance (override with\n`scheme`). Non-hex colors (`var(--brand)`, `color-mix(...)`) pass straight\nthrough; derived tints are only computed for hex inputs.\n\n## What `adaptSdkClient` produces\n\n`src/sdkTypes.ts` is the *view* contract this package renders against — a copy,\nnot an import, so the package is standalone and any client shape can satisfy it.\n`src/adapters/sdkClient.ts` bridges a real `@ade-dev/sdk` client onto it and does\nimport that package's types (type-only, and `@ade-dev/sdk` is an optional peer, so\nnothing reaches the bundle).\n\nThe list below is the adapter's **output** contract: what every component here\nmay assume about the client it is handed. Write your own client — a WebSocket\nproxy, an Electron IPC bridge, a fake — and these are the rules to meet.\n\nOne such client is checked here rather than described: `test/electronBridge.test.tsx`\nassigns `createAdeIpcClient()` from `@ade-dev/sdk/electron/renderer` to\n`SdkLikeChatClient` with no cast, then drives a full turn through\n`registerAdeIpc` and `<AdeChat>`. A drift between that bridge and this contract\nis a typecheck failure, not a runtime surprise.\n\n1. **`client.providers.status()`** resolves `ProviderStatus[]` with `installed`\n   and `authenticated` as separate booleans. Both true means selectable.\n   `loginCommand` / `installCommand` are copy-pasteable shell strings.\n   `source` says whether `installed` was probed or derived, and the card's\n   wording depends on it.\n2. **`client.providers.onChange(cb)`** fires with the *full* status list (not a\n   delta) and returns an unsubscribe function. A status change may also change\n   the model catalog, so the hook re-reads `models.list()` after each one.\n   `refresh()` is optional and is never called by a poll.\n3. **`client.models.list()`** resolves the full catalog. `providerId` must match\n   a `ProviderStatus.id`; models whose provider has no status entry still render\n   (grouped under the raw id) but are never selectable.\n4. **`client.threads.open(key, opts)`** is idempotent per key within a session —\n   re-opening the same key returns a handle onto the same conversation.\n5. **`thread.history()`** returns envelopes in transcript order. Ordering is\n   envelope-based (`sequence`, then `timestamp`); provider clocks are not\n   trusted. Events emitted while `history()` is in flight must also reach the\n   `\"event\"` subscriber — the hook de-duplicates the overlap on\n   `sessionId:sequence:timestamp:type` and then re-sorts, so a live envelope\n   that beat the page still renders in its own place. The canonical definition\n   of that key is `envelopeDedupeKey` in `@ade-dev/sdk`\n   (`src/electron/protocol.ts`); this package mirrors it because the SDK is an\n   optional peer.\n6. **Streaming text** may be sent either as growing snapshots or as deltas; both\n   collapse correctly. Chunks of one message must share a `messageId`, or\n   failing that a `turnId` + `itemId`.\n7. **`tool_result` must reuse its `tool_call`'s `itemId`**, or carry a matching\n   `logicalItemId` when the provider renumbers items. Otherwise the result\n   renders as a second, orphaned chip.\n8. **`thread.on(\"status\")`** reports `running` for the whole duration of a turn\n   and returns to `idle` when it ends. The composer's send-vs-steer decision is\n   driven entirely by this.\n9. **`steer()` does not start a turn.** It delivers into the running one and\n   must be safe to call while `status.state === \"running\"`.\n10. **Unknown event types are ignored, not rendered.** The SDK may add event\n    kinds without breaking this package, but anything it wants drawn here needs\n    a matching row kind.\n11. **`approval_request` blocks the turn until it is answered.** An\n    `approval_request` and its `pending_input_resolved` must share an `itemId`\n    (or a matching `logicalItemId`), and a turn that ends without an answer\n    must emit `done`, `error`, or a terminal `status` so the card can settle.\n12. **`thread.approve` and `thread.pendingApprovals` are optional.** A client\n    that omits `approve` gets a read-only card with a line saying why, never a\n    throw. `pendingApprovals()` is read once on open, so a reload restores the\n    cards a lost live stream would otherwise have taken with it.\n\n## What `@ade-dev/sdk` actually returns\n\nThe adapter exists because the two shapes do not meet. The differences that\ncatch people writing their own proxy:\n\n- `providers.status()` returns a **`Record<string, ProviderStatus>` keyed by\n  provider id**, not an array.\n- A status record calls the id `provider`, not `id`, and carries\n  `available` / `requiresConfiguration` / `modelCount` / `stale` — fields this\n  package folds into `installed` and a `detail` sentence.\n- A catalog entry calls its provider `provider` and its usability\n  `isAvailable`, where the view contract uses `providerId` and `available`.\n- `threads.open(key, opts)` takes the SDK's own option names (`provider`,\n  `model`), which `adaptSdkClient` maps from `providerId` / `modelId`.\n- `send(text, { attachments })` is positional, and an attachment is a\n  `{ path }` file ref rather than the view's `ChatAttachment`.\n- `on(\"status\")` and `on(\"usage\")` deliver raw envelopes; the adapter maps them\n  to `{ state, turnId }` and `{ inputTokens, … }` and drops anything that maps\n  to nothing.\n\n## Development\n\nRequires Node 24, the version in the repository's `.nvmrc` (`/opt/homebrew/opt/node@24/bin` on macOS).\n\n```bash\nnpm install            # in packages/chat-ui\nnpm test               # vitest, 225 tests\nnpm run typecheck      # tsc --noEmit\nnpm run build          # tsup → dist/ (ESM + CJS + d.ts)\n```\n\nFrom the repo root: `npm run test:chat-ui`, `npm run build:chat-ui`.\n\n## License\n\nMIT. See [LICENSE](./LICENSE). ADE itself remains AGPL-3.0-only; see the [ADE Runtime Embedding Exception](https://github.com/arul28/ADE/blob/main/RUNTIME-EMBEDDING-EXCEPTION.md) for shipping the runtime binary in your app.\n","readmeFilename":"README.md"}