{"_id":"@ai-sdk-tool/tui","_rev":"9-d318cb898bc41d3f2aabf5fbf345b0bd","name":"@ai-sdk-tool/tui","dist-tags":{"latest":"3.1.1"},"versions":{"0.1.0":{"name":"@ai-sdk-tool/tui","version":"0.1.0","_id":"@ai-sdk-tool/tui@0.1.0","maintainers":[{"name":"minpeter","email":"kali2005611@gmail.com"}],"homepage":"https://github.com/minpeter/plugsuits#readme","bugs":{"url":"https://github.com/minpeter/plugsuits/issues"},"dist":{"shasum":"845dccad3e215dd6c44fb2c07ca5c58ad67c87e2","tarball":"https://registry.npmjs.org/@ai-sdk-tool/tui/-/tui-0.1.0.tgz","fileCount":38,"integrity":"sha512-QlYbEqOFddhdNXeHdpW39XC8Fl28mJASjNnV3OqwFBeaTV46CODUkQ9r2XnIoRidZqWz7c18YC3TTpAD7rr7iQ==","signatures":[{"sig":"MEQCID/kLgxW7HZDFt80aILKSX9M2SaAX0z8kgJ9S7KQGFfxAiAsNai4Onwtq3GeZTvgbW+kzu0LwPUC5ewqUCIr8Dc5wQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175734},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","@ai-sdk-tool/source":"./src/index.ts"}},"gitHead":"fcb75f5180306c48f890aeb1be2ca5ed5ff38693","scripts":{"test":"vitest run src","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"minpeter","email":"kali2005611@gmail.com"},"repository":{"url":"git+https://github.com/minpeter/plugsuits.git","type":"git","directory":"packages/tui"},"_npmVersion":"11.12.0","description":"Terminal UI components for building interactive agent sessions. Provides streaming text rendering, tool call displays, a spinner, ANSI color helpers, and a full interactive TUI loop built on [`@mariozechner/pi-tui`](https://github.com/mariozechner/pi-tui)","directories":{},"_nodeVersion":"22.21.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.4.0","@ai-sdk-tool/harness":"workspace:*"},"peerDependencies":{"ai":"^6.0.116","zod":"^4.3.6","@ai-sdk-tool/harness":"^1.0.0","@mariozechner/pi-tui":"^0.57.1"},"_npmOperationalInternal":{"tmp":"tmp/tui_0.1.0_1774979829796_0.33680242127394844","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@ai-sdk-tool/tui","version":"1.0.0","_id":"@ai-sdk-tool/tui@1.0.0","maintainers":[{"name":"minpeter","email":"kali2005611@gmail.com"}],"homepage":"https://github.com/minpeter/plugsuits#readme","bugs":{"url":"https://github.com/minpeter/plugsuits/issues"},"dist":{"shasum":"a1f3aebd6196bd68cab69ba129aaf88918603ed2","tarball":"https://registry.npmjs.org/@ai-sdk-tool/tui/-/tui-1.0.0.tgz","fileCount":38,"integrity":"sha512-sfyKS6+aRdXdUzgs6ZDcgFNCKBxV75GLV3VXEujAPiIOeiwMztTRJA+nNsTFPKQlpx4Qol8I5ID1RBeYij4wgg==","signatures":[{"sig":"MEUCIB+5e+A40Q03J2iXFoJ4ef+BOkQbOfD2unzJqdQMoxXlAiEA3IxEjaqm815AA0wcOL72qGadrfOhrEHWjuO3iDGB/uw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-sdk-tool%2ftui@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175700},"main":"./dist/index.js","type":"module","_from":"file:ai-sdk-tool-tui-1.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","@ai-sdk-tool/source":"./src/index.ts"}},"scripts":{"test":"vitest run src","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cb91a83e-88b0-4251-8d3f-05b5d469881e"}},"_resolved":"/tmp/b16eb2a28be88b2be28e1aa220998975/ai-sdk-tool-tui-1.0.0.tgz","_integrity":"sha512-sfyKS6+aRdXdUzgs6ZDcgFNCKBxV75GLV3VXEujAPiIOeiwMztTRJA+nNsTFPKQlpx4Qol8I5ID1RBeYij4wgg==","repository":{"url":"git+https://github.com/minpeter/plugsuits.git","type":"git","directory":"packages/tui"},"_npmVersion":"11.12.1","description":"Terminal UI components for building interactive agent sessions. Provides streaming text rendering, tool call displays, a spinner, ANSI color helpers, and a full interactive TUI loop built on [`@mariozechner/pi-tui`](https://github.com/mariozechner/pi-tui)","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.4.0","@ai-sdk-tool/harness":"1.1.0"},"peerDependencies":{"ai":"^6.0.116","zod":"^4.3.6","@ai-sdk-tool/harness":"^1.1.0","@mariozechner/pi-tui":"^0.57.1"},"_npmOperationalInternal":{"tmp":"tmp/tui_1.0.0_1774982497553_0.7089915798432636","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@ai-sdk-tool/tui","version":"2.0.0","_id":"@ai-sdk-tool/tui@2.0.0","maintainers":[{"name":"minpeter","email":"kali2005611@gmail.com"}],"homepage":"https://github.com/minpeter/plugsuits#readme","bugs":{"url":"https://github.com/minpeter/plugsuits/issues"},"dist":{"shasum":"a4a3946a36688ff010150f0e6c62d03179981af8","tarball":"https://registry.npmjs.org/@ai-sdk-tool/tui/-/tui-2.0.0.tgz","fileCount":38,"integrity":"sha512-rgIKbAKni7h+HjRftadUxOAfaNFgwUbF12wrLBUJoJxlnCgUu93jIm1AUu4bsOCXNsAEkSpbl4eoh4CCKVYYMw==","signatures":[{"sig":"MEUCIQCFWzX6C9FlR9OLhP3YhbrYZegr90Rf+C9zPbt9PEIJGwIgL6KTHVWf1/dr19VVhgJiFdKFlgoiFAZ+F+bZxhwIT6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-sdk-tool%2ftui@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175700},"main":"./dist/index.js","type":"module","_from":"file:ai-sdk-tool-tui-2.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","@ai-sdk-tool/source":"./src/index.ts"}},"scripts":{"test":"vitest run src","build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cb91a83e-88b0-4251-8d3f-05b5d469881e"}},"_resolved":"/tmp/6363e10d04c3444e37ae6a9bddc12d8b/ai-sdk-tool-tui-2.0.0.tgz","_integrity":"sha512-rgIKbAKni7h+HjRftadUxOAfaNFgwUbF12wrLBUJoJxlnCgUu93jIm1AUu4bsOCXNsAEkSpbl4eoh4CCKVYYMw==","repository":{"url":"git+https://github.com/minpeter/plugsuits.git","type":"git","directory":"packages/tui"},"_npmVersion":"11.12.1","description":"Terminal UI components for building interactive agent sessions. Provides streaming text rendering, tool call displays, a spinner, ANSI color helpers, and a full interactive TUI loop built on [`@mariozechner/pi-tui`](https://github.com/mariozechner/pi-tui)","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.4.0","@ai-sdk-tool/harness":"1.1.0"},"peerDependencies":{"ai":"^6.0.116","zod":"^4.3.6","@ai-sdk-tool/harness":"^1.1.0","@mariozechner/pi-tui":"^0.57.1"},"_npmOperationalInternal":{"tmp":"tmp/tui_2.0.0_1774982710616_0.4433261565797202","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@ai-sdk-tool/tui","version":"2.0.1","_id":"@ai-sdk-tool/tui@2.0.1","maintainers":[{"name":"minpeter","email":"kali2005611@gmail.com"}],"homepage":"https://github.com/minpeter/plugsuits#readme","bugs":{"url":"https://github.com/minpeter/plugsuits/issues"},"dist":{"shasum":"d63d480b81a430857e981b0d451648d932e2f0f6","tarball":"https://registry.npmjs.org/@ai-sdk-tool/tui/-/tui-2.0.1.tgz","fileCount":38,"integrity":"sha512-YYIJHvYNGINudk+ihTNGFUbSjBQOtm4Lw4KC8TPcLDh2rYlC2hkID6Ra2MNQ2cz6AQQ4Zo4Q1fp4MPOG7d3xQA==","signatures":[{"sig":"MEUCIQCXiSF4RUvAi7tcDdmrgjFvVouLofLwnJDyPlacgXyuAAIgZ/ew0WiYekQREWxnjswwQIWFVbK8gPW6QBAeMlhx18M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-sdk-tool%2ftui@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175786},"main":"./dist/index.js","type":"module","_from":"file:ai-sdk-tool-tui-2.0.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","@ai-sdk-tool/source":"./src/index.ts"}},"scripts":{"test":"vitest run src","build":"tsc && node ../../scripts/fix-esm-imports.mjs dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cb91a83e-88b0-4251-8d3f-05b5d469881e"}},"_resolved":"/tmp/75cfa9bb0bbb9486ad478b6d49dc892f/ai-sdk-tool-tui-2.0.1.tgz","_integrity":"sha512-YYIJHvYNGINudk+ihTNGFUbSjBQOtm4Lw4KC8TPcLDh2rYlC2hkID6Ra2MNQ2cz6AQQ4Zo4Q1fp4MPOG7d3xQA==","repository":{"url":"git+https://github.com/minpeter/plugsuits.git","type":"git","directory":"packages/tui"},"_npmVersion":"11.12.1","description":"Terminal UI components for building interactive agent sessions. Provides streaming text rendering, tool call displays, a spinner, ANSI color helpers, and a full interactive TUI loop built on [`@mariozechner/pi-tui`](https://github.com/mariozechner/pi-tui)","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.4.0","@ai-sdk-tool/harness":"1.1.1"},"peerDependencies":{"ai":"^6.0.116","zod":"^4.3.6","@ai-sdk-tool/harness":"^1.1.1","@mariozechner/pi-tui":"^0.57.1"},"_npmOperationalInternal":{"tmp":"tmp/tui_2.0.1_1774993064592_0.6493050453577682","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@ai-sdk-tool/tui","version":"3.0.0","_id":"@ai-sdk-tool/tui@3.0.0","maintainers":[{"name":"minpeter","email":"kali2005611@gmail.com"}],"homepage":"https://github.com/minpeter/plugsuits#readme","bugs":{"url":"https://github.com/minpeter/plugsuits/issues"},"dist":{"shasum":"aecba27434ad872154cf5d2e7e97bd451ff4a9d3","tarball":"https://registry.npmjs.org/@ai-sdk-tool/tui/-/tui-3.0.0.tgz","fileCount":38,"integrity":"sha512-e1yJbyzWek2eL7NRVsbK0CKFT8IYfynzmKnfvJJZCrmDYJdZoK7Og967+pDs/OW5f3GkDWAmlV1OzmIWYF3MVw==","signatures":[{"sig":"MEYCIQD9dOyQMAjK0HfDdygceeCVRct7JYPmfi4O/ZQT3tvi7gIhAPj6dMANMNXtKq4t0NfOUyzY+BH/N2+mwvAOlM+NZrRf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-sdk-tool%2ftui@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175212},"main":"./dist/index.js","type":"module","_from":"file:ai-sdk-tool-tui-3.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","@ai-sdk-tool/source":"./src/index.ts"}},"scripts":{"test":"vitest run src","build":"tsc && node ../../scripts/fix-esm-imports.mjs dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cb91a83e-88b0-4251-8d3f-05b5d469881e"}},"_resolved":"/tmp/dac59c0c41d31ef070fae576d6f7e7a1/ai-sdk-tool-tui-3.0.0.tgz","_integrity":"sha512-e1yJbyzWek2eL7NRVsbK0CKFT8IYfynzmKnfvJJZCrmDYJdZoK7Og967+pDs/OW5f3GkDWAmlV1OzmIWYF3MVw==","repository":{"url":"git+https://github.com/minpeter/plugsuits.git","type":"git","directory":"packages/tui"},"_npmVersion":"11.12.1","description":"Terminal UI components for building interactive agent sessions. Provides streaming text rendering, tool call displays, a spinner, ANSI color helpers, and a full interactive TUI loop built on [`@mariozechner/pi-tui`](https://github.com/mariozechner/pi-tui)","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.4.0","@ai-sdk-tool/harness":"1.2.0"},"peerDependencies":{"ai":"^6.0.116","zod":"^4.3.6","@ai-sdk-tool/harness":"^1.2.0","@mariozechner/pi-tui":"^0.57.1"},"_npmOperationalInternal":{"tmp":"tmp/tui_3.0.0_1775010063588_0.6521939599690838","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@ai-sdk-tool/tui","version":"3.0.1","_id":"@ai-sdk-tool/tui@3.0.1","maintainers":[{"name":"minpeter","email":"kali2005611@gmail.com"}],"homepage":"https://github.com/minpeter/plugsuits#readme","bugs":{"url":"https://github.com/minpeter/plugsuits/issues"},"dist":{"shasum":"a2fe33622d177737d83c3831ba24f872a93971bc","tarball":"https://registry.npmjs.org/@ai-sdk-tool/tui/-/tui-3.0.1.tgz","fileCount":38,"integrity":"sha512-cy0eyIKd6FTlZE+XDM2pL+KeLqO52WrpeHDeLgVgKYSfPjygaH4+hzqipSxrlRFeIM3eRvi/eqn7XpEf1pjO4w==","signatures":[{"sig":"MEMCHy2dXoTNKrsOWj9xuNUN1XaONNx3JgyGLN6pACsz8/wCIAOjILBMZnlKJmAxW1X5LRhYCDs7rzLJENgVpQyXXSht","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-sdk-tool%2ftui@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":183644},"main":"./dist/index.js","type":"module","_from":"file:ai-sdk-tool-tui-3.0.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","@ai-sdk-tool/source":"./src/index.ts"}},"scripts":{"test":"vitest run src","build":"tsc && node ../../scripts/fix-esm-imports.mjs dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cb91a83e-88b0-4251-8d3f-05b5d469881e"}},"_resolved":"/tmp/5d0fbd2389fdc56789540cb2a412da6e/ai-sdk-tool-tui-3.0.1.tgz","_integrity":"sha512-cy0eyIKd6FTlZE+XDM2pL+KeLqO52WrpeHDeLgVgKYSfPjygaH4+hzqipSxrlRFeIM3eRvi/eqn7XpEf1pjO4w==","repository":{"url":"git+https://github.com/minpeter/plugsuits.git","type":"git","directory":"packages/tui"},"_npmVersion":"11.11.0","description":"Terminal UI components for building interactive agent sessions. Provides streaming text rendering, tool call displays, a spinner, ANSI color helpers, and a full interactive TUI loop built on [`@mariozechner/pi-tui`](https://github.com/mariozechner/pi-tui)","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.4.0","@ai-sdk-tool/harness":"1.2.1"},"peerDependencies":{"ai":"^6.0.116","zod":"^4.3.6","@ai-sdk-tool/harness":"^1.2.1","@mariozechner/pi-tui":"^0.57.1"},"_npmOperationalInternal":{"tmp":"tmp/tui_3.0.1_1775444207149_0.48366510160407605","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@ai-sdk-tool/tui","version":"3.0.2","_id":"@ai-sdk-tool/tui@3.0.2","maintainers":[{"name":"minpeter","email":"kali2005611@gmail.com"}],"homepage":"https://github.com/minpeter/plugsuits#readme","bugs":{"url":"https://github.com/minpeter/plugsuits/issues"},"dist":{"shasum":"ce4025b1f3285c8eb96c1f73fa5def041e25ab4a","tarball":"https://registry.npmjs.org/@ai-sdk-tool/tui/-/tui-3.0.2.tgz","fileCount":38,"integrity":"sha512-Upo9quU3Wbf/03Betmr/yX9j/v9ldkZf4psivGLTwNpXK6Kf33O5f0kkccoZxQ8YQkbMNHBXA/ieXzpocFB2Wg==","signatures":[{"sig":"MEYCIQCfWbUon20A94pWTougsEZQ5HizeG+/qpILV03GnfIctAIhAP7VdQy68VmaJCCw52uH49bfguNH8LiY2BJXTT0nsKwW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-sdk-tool%2ftui@3.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":184631},"main":"./dist/index.js","type":"module","_from":"file:ai-sdk-tool-tui-3.0.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","@ai-sdk-tool/source":"./src/index.ts"}},"scripts":{"test":"vitest run src","build":"tsc && node ../../scripts/fix-esm-imports.mjs dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cb91a83e-88b0-4251-8d3f-05b5d469881e"}},"_resolved":"/tmp/31cc33e05419fa5ccdbfca227ea0165f/ai-sdk-tool-tui-3.0.2.tgz","_integrity":"sha512-Upo9quU3Wbf/03Betmr/yX9j/v9ldkZf4psivGLTwNpXK6Kf33O5f0kkccoZxQ8YQkbMNHBXA/ieXzpocFB2Wg==","repository":{"url":"git+https://github.com/minpeter/plugsuits.git","type":"git","directory":"packages/tui"},"_npmVersion":"11.11.0","description":"Terminal UI components for building interactive agent sessions. Provides streaming text rendering, tool call displays, a spinner, ANSI color helpers, and a full interactive TUI loop built on [`@mariozechner/pi-tui`](https://github.com/mariozechner/pi-tui)","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.4.0","@ai-sdk-tool/harness":"1.2.4"},"peerDependencies":{"ai":"^6.0.116","zod":"^4.3.6","@ai-sdk-tool/harness":"^1.2.4","@mariozechner/pi-tui":"^0.57.1"},"_npmOperationalInternal":{"tmp":"tmp/tui_3.0.2_1775985603805_0.592141935377833","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@ai-sdk-tool/tui","version":"3.1.0","_id":"@ai-sdk-tool/tui@3.1.0","maintainers":[{"name":"minpeter","email":"kali2005611@gmail.com"}],"homepage":"https://github.com/minpeter/plugsuits#readme","bugs":{"url":"https://github.com/minpeter/plugsuits/issues"},"dist":{"shasum":"a9e4c40aee1ce8be4c363cba6d512cf1d1762cb8","tarball":"https://registry.npmjs.org/@ai-sdk-tool/tui/-/tui-3.1.0.tgz","fileCount":42,"integrity":"sha512-/Rxs1HQhYtyOx1ncps6Nu01uUgH5CtVAowGJZ2fcAXItav0pn9dF4HgAPZi/RTpdF6SLFRITyXgNSrAAh6ze3Q==","signatures":[{"sig":"MEYCIQCQ4Hy1LetoTTxQJQ4/xUJqZUYjgZ4DQXlSnL40UyLfDQIhALpv4wMULIohRi6qKLGacg4WAsYfo9I0bPbr9OMOzdBD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-sdk-tool%2ftui@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":195687},"main":"./dist/index.js","type":"module","_from":"file:ai-sdk-tool-tui-3.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","@ai-sdk-tool/source":"./src/index.ts"},"./session":{"types":"./dist/session-tui.d.ts","import":"./dist/session-tui.js","@ai-sdk-tool/source":"./src/session-tui.ts"}},"scripts":{"test":"vitest run src","build":"tsc && node ../../scripts/fix-esm-imports.mjs dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cb91a83e-88b0-4251-8d3f-05b5d469881e"}},"_resolved":"/tmp/9d5079df95e3bea8c7e448fcbd37b150/ai-sdk-tool-tui-3.1.0.tgz","_integrity":"sha512-/Rxs1HQhYtyOx1ncps6Nu01uUgH5CtVAowGJZ2fcAXItav0pn9dF4HgAPZi/RTpdF6SLFRITyXgNSrAAh6ze3Q==","repository":{"url":"git+https://github.com/minpeter/plugsuits.git","type":"git","directory":"packages/tui"},"_npmVersion":"11.11.0","description":"Terminal UI components for building interactive agent sessions. Provides streaming text rendering, tool call displays, a spinner, ANSI color helpers, and a full interactive TUI loop built on [`@mariozechner/pi-tui`](https://github.com/mariozechner/pi-tui)","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^25.4.0","@ai-sdk-tool/harness":"1.3.0"},"peerDependencies":{"ai":"^6.0.116","zod":"^4.3.6","@ai-sdk-tool/harness":"^1.2.4","@mariozechner/pi-tui":"^0.57.1"},"_npmOperationalInternal":{"tmp":"tmp/tui_3.1.0_1776364826778_0.272916433411863","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"@ai-sdk-tool/tui","version":"3.1.1","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"@ai-sdk-tool/source":"./src/index.ts","types":"./dist/index.d.ts","import":"./dist/index.js"},"./session":{"@ai-sdk-tool/source":"./src/session-tui.ts","types":"./dist/session-tui.d.ts","import":"./dist/session-tui.js"}},"repository":{"type":"git","url":"git+https://github.com/minpeter/plugsuits.git","directory":"packages/tui"},"publishConfig":{"access":"public","provenance":true},"peerDependencies":{"@ai-sdk-tool/harness":"^1.2.4","@mariozechner/pi-tui":"^0.68.1","ai":"^6.0.116","zod":"^4.3.6"},"devDependencies":{"@types/node":"^25.6.0","typescript":"^6.0.3","@ai-sdk-tool/harness":"1.3.1"},"engines":{"node":">=22.19.0"},"scripts":{"build":"tsc && node ../../scripts/fix-esm-imports.mjs dist","typecheck":"tsc --noEmit","test":"vitest run src"},"_id":"@ai-sdk-tool/tui@3.1.1","description":"Terminal UI components for building interactive agent sessions. Provides streaming text rendering, tool call displays, a spinner, ANSI color helpers, and a full interactive TUI loop built on [`@mariozechner/pi-tui`](https://github.com/mariozechner/pi-tui)","bugs":{"url":"https://github.com/minpeter/plugsuits/issues"},"homepage":"https://github.com/minpeter/plugsuits#readme","_integrity":"sha512-Z1B0/Vas/oBPFGXOi8rvcoh0Rsl8F5hHZ3DUHBnAPzjYSUexpkNOUm2PVSGvQimo5RGRzNWwy0VLFJsETd5Kew==","_resolved":"/tmp/bf83f329ff5f0443dfc71c4d230549ed/ai-sdk-tool-tui-3.1.1.tgz","_from":"file:ai-sdk-tool-tui-3.1.1.tgz","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-Z1B0/Vas/oBPFGXOi8rvcoh0Rsl8F5hHZ3DUHBnAPzjYSUexpkNOUm2PVSGvQimo5RGRzNWwy0VLFJsETd5Kew==","shasum":"f9b3112a3b7c4086cce88a5b0041665c377368a0","tarball":"https://registry.npmjs.org/@ai-sdk-tool/tui/-/tui-3.1.1.tgz","fileCount":50,"unpackedSize":207140,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-sdk-tool%2ftui@3.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCp3f9ImhayNUP1A9rJ6Uyt24HO+qiW2sreAQ1M1CtgTgIgYVH3prS7YIkIMTZ/cBenqI/Tfv5cHSZt57E8v9JjEL0="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cb91a83e-88b0-4251-8d3f-05b5d469881e"}},"directories":{},"maintainers":[{"name":"minpeter","email":"kali2005611@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tui_3.1.1_1776852564795_0.29728413987974545"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-31T17:57:09.671Z","modified":"2026-04-22T10:09:25.210Z","0.1.0":"2026-03-31T17:57:09.956Z","1.0.0":"2026-03-31T18:41:37.705Z","2.0.0":"2026-03-31T18:45:10.763Z","2.0.1":"2026-03-31T21:37:44.741Z","3.0.0":"2026-04-01T02:21:03.772Z","3.0.1":"2026-04-06T02:56:47.285Z","3.0.2":"2026-04-12T09:20:03.952Z","3.1.0":"2026-04-16T18:40:26.903Z","3.1.1":"2026-04-22T10:09:24.936Z"},"bugs":{"url":"https://github.com/minpeter/plugsuits/issues"},"homepage":"https://github.com/minpeter/plugsuits#readme","repository":{"type":"git","url":"git+https://github.com/minpeter/plugsuits.git","directory":"packages/tui"},"description":"Terminal UI components for building interactive agent sessions. Provides streaming text rendering, tool call displays, a spinner, ANSI color helpers, and a full interactive TUI loop built on [`@mariozechner/pi-tui`](https://github.com/mariozechner/pi-tui)","maintainers":[{"name":"minpeter","email":"kali2005611@gmail.com"}],"readme":"# @ai-sdk-tool/tui\n\nTerminal UI components for building interactive agent sessions. Provides streaming text rendering, tool call displays, a spinner, ANSI color helpers, and a full interactive TUI loop built on [`@mariozechner/pi-tui`](https://github.com/mariozechner/pi-tui).\n\n## Installation\n\n```bash\npnpm add @ai-sdk-tool/tui\n# or\nnpm install @ai-sdk-tool/tui\n```\n\n**Peer dependencies:**\n\n```bash\npnpm add @ai-sdk-tool/harness ai\n```\n\n## Quick Start\n\n```typescript\nimport { createAgent, CheckpointHistory } from \"@ai-sdk-tool/harness\";\nimport { createAgentTUI } from \"@ai-sdk-tool/tui\";\nimport { openai } from \"@ai-sdk/openai\";\n\nconst agent = await createAgent({\n  model: openai(\"gpt-4o\"),\n  instructions: \"You are a helpful assistant.\",\n});\n\nconst messageHistory = new CheckpointHistory();\n\n// Starts a full interactive terminal session.\n// Blocks until the user exits (Ctrl+C twice).\nawait createAgentTUI({\n  agent,\n  messageHistory,\n  header: {\n    title: \"My Agent\",\n    subtitle: \"model: gpt-4o\",\n  },\n});\n```\n\n## API Reference\n\n### `createAgentTUI(config)`\n\nStarts a full interactive TUI session. Renders a header, accepts user input via an editor widget, dispatches slash commands, streams agent responses, and handles Ctrl+C gracefully.\n\nReturns a `Promise<void>` that resolves when the user exits.\n\n```typescript\nimport { createAgentTUI, type AgentTUIConfig } from \"@ai-sdk-tool/tui\";\n\nawait createAgentTUI({\n  agent,           // required — { stream(messages, opts?): Promise<AgentStreamResult> }\n  messageHistory,  // required — CheckpointHistory from @ai-sdk-tool/harness\n  header,          // optional — { title: string; subtitle?: string }\n  footer,          // optional — { text?: string }\n  commands,        // optional — Command[] (defaults to all registered commands)\n  compactionCallbacks, // optional — compaction lifecycle callbacks\n  contextPressureThresholds, // optional — warning/elevated/critical pressure thresholds\n  skills,          // optional — SkillInfo[] for editor autocomplete\n  toolRenderers,   // optional — ToolRendererMap for custom per-tool rendering\n  theme,           // optional — { markdownTheme?, editorTheme? }\n  measureUsage,    // optional — async usage probe for footer/context tracking\n  onSetup,         // optional — async () => void, called once before the input loop\n  onBeforeTurn,    // optional — async hook before each model stream call\n  onStepComplete,  // optional — receives finishReason, iteration, and phase\n  onTurnComplete,  // optional — receives messages, usage, snapshot, finishReason\n  onCommandAction, // optional — notified when a command triggers a structured action\n  preprocessCommand, // optional — intercept slash command input\n  preprocessUserInput, // optional — intercept normal user input\n  shouldContinue,  // optional — override tool-loop continuation predicate\n  showRawToolIo,   // optional — force raw tool IO rendering\n});\n```\n\n**Config fields:**\n\n| Field | Type | Required | Description |\n|-------|------|----------|-------------|\n| `agent` | `{ stream(...) }` | yes | Agent with a `stream` method compatible with `AgentStreamResult` |\n| `messageHistory` | `CheckpointHistory` | yes | Conversation history — the TUI reads and writes to this |\n| `header` | `{ title, subtitle? }` | no | Text shown at the top of the terminal |\n| `footer` | `{ text? }` | no | Text shown below the input editor |\n| `commands` | `Command[]` | no | Slash commands available in the editor; defaults to all registered commands |\n| `compactionCallbacks` | `CompactionOrchestratorCallbacks` | no | Lifecycle callbacks for compaction start/finish events |\n| `contextPressureThresholds` | `{ warning?, elevated?, critical? }` | no | Thresholds used for context pressure indicators in the header/footer |\n| `skills` | `SkillInfo[]` | no | Skills shown in editor autocomplete |\n| `toolRenderers` | `ToolRendererMap` | no | Custom renderers keyed by tool name |\n| `theme` | `{ markdownTheme?, editorTheme? }` | no | Visual theme overrides for markdown and editor |\n| `measureUsage` | `(messages) => Promise<UsageMeasurement \\| null>` | no | Optional usage probe used for footer stats and tighter turn budgeting |\n| `onSetup` | `() => void \\| Promise<void>` | no | One-time async setup hook before the input loop starts |\n| `onBeforeTurn` | `(phase) => BeforeTurnResult \\| Promise<BeforeTurnResult \\| undefined> \\| undefined` | no | Runs before each model stream call and can override stream options |\n| `onStepComplete` | `({ finishReason, iteration, phase }) => void \\| Promise<void>` | no | Runs after each streamed step, including intermediate tool-loop turns |\n| `onTurnComplete` | `(messages, usage?, snapshot?, finishReason?) => void \\| Promise<void>` | no | Runs after each completed turn with snapshot metadata |\n| `onCommandAction` | `(action) => void \\| Promise<void>` | no | Notified when a command triggers a structured TUI action |\n| `preprocessCommand` | `(input, hooks) => Promise<string \\| null>` | no | Intercepts slash command input before execution |\n| `preprocessUserInput` | `(input, hooks) => Promise<PreprocessResult \\| undefined>` | no | Intercepts normal user input before it is added to history |\n| `shouldContinue` | `(finishReason) => boolean` | no | Overrides the default continuation predicate |\n| `showRawToolIo` | `boolean` | no | Forces raw tool input/output blocks instead of pretty renderers |\n\n**Keyboard shortcuts:**\n\n| Key | Action |\n|-----|--------|\n| Enter | Submit message |\n| Shift+Enter | Insert newline |\n| Ctrl+C | Cancel active stream / clear input |\n| Ctrl+C twice | Exit |\n| Up/Down | Navigate input history |\n| Tab | Autocomplete commands and skills |\n\n---\n\n### `AssistantStreamView`\n\nA `Container` subclass that renders streaming assistant output. Handles both `text` and `reasoning` segments with distinct ANSI styling.\n\n```typescript\nimport { AssistantStreamView } from \"@ai-sdk-tool/tui\";\nimport type { MarkdownTheme } from \"@mariozechner/pi-tui\";\n\nconst view = new AssistantStreamView(markdownTheme);\n\n// Append streaming deltas as they arrive\nview.appendText(\"Hello, \");\nview.appendReasoning(\"thinking about the answer...\");\nview.appendText(\"world!\");\n```\n\n**Methods:**\n\n| Method | Description |\n|--------|-------------|\n| `appendText(delta)` | Appends a text delta to the current text segment |\n| `appendReasoning(delta)` | Appends a reasoning delta, styled as dim/italic |\n\n---\n\n### `BaseToolCallView`\n\nA `Container` subclass that renders a single tool call — its name, streaming input JSON, and final output or error. Supports custom renderers via `ToolRendererMap`.\n\n```typescript\nimport { BaseToolCallView, type ToolRendererMap } from \"@ai-sdk-tool/tui\";\n\n// Custom renderer for a specific tool\nconst toolRenderers: ToolRendererMap = {\n  read_file: (view, input, output) => {\n    if (view.getError() !== undefined || view.isOutputDenied()) {\n      return;\n    }\n    const path = (input as { path: string }).path;\n    view.setRenderedOverride(`read: ${path}`);\n  },\n  shell_execute: (view, input) => {\n    if (view.getError() !== undefined || view.isOutputDenied()) {\n      return;\n    }\n    const cmd = (input as { command: string }).command;\n    view.setRenderedOverride(`$ ${cmd}`);\n  },\n};\n\nawait createAgentTUI({ agent, messageHistory, toolRenderers });\n```\n\n**`ToolRendererMap` type:**\n\n```typescript\ninterface ToolRendererMap {\n  [toolName: string]: (\n    view: BaseToolCallView,\n    input: unknown,\n    output: unknown\n  ) => void;\n}\n```\n\n---\n\n### `Spinner`\n\nA braille-frame spinner for non-TUI contexts — useful in headless scripts or CLI tools that want visual feedback without a full TUI.\n\n```typescript\nimport { Spinner, setSpinnerOutputEnabled } from \"@ai-sdk-tool/tui\";\n\n// Suppress spinner in tests or piped output\nsetSpinnerOutputEnabled(false);\n\nconst spinner = new Spinner(\"Processing...\");\nspinner.start();\n\ntry {\n  await doWork();\n  spinner.succeed(\"Done!\");\n} catch (err) {\n  spinner.fail(\"Failed.\");\n}\n```\n\n**Methods:**\n\n| Method | Description |\n|--------|-------------|\n| `start()` | Starts the animation |\n| `stop()` | Stops and clears the spinner line |\n| `succeed(message?)` | Stops and prints `✓ message` |\n| `fail(message?)` | Stops and prints `✗ message` |\n\n**Note:** Do not use `Spinner` inside a live TUI session — the TUI manages its own loader widget.\n\n---\n\n### `colors` and `colorize`\n\nANSI color constants and a helper for applying them.\n\n```typescript\nimport { colors, colorize } from \"@ai-sdk-tool/tui\";\n\n// Using the helper\nconst text = colorize(\"cyan\", \"important\");\n// => \"\\u001b[96mimportant\\u001b[0m\"\n\n// Using constants directly\nconst styled = `${colors.bold}${colors.green}Success${colors.reset}`;\n```\n\n**Available color keys:**\n\n`blue`, `yellow`, `green`, `cyan`, `red`, `magenta`, `white`, `brightBlue`, `brightGreen`, `brightYellow`, `brightCyan`, `brightMagenta`, `dim`, `bold`, `italic`, `underline`, `gray`, `reset`\n\n---\n\n## Advanced Usage\n\n### Custom theme\n\n```typescript\nimport { createAgentTUI } from \"@ai-sdk-tool/tui\";\nimport type { MarkdownTheme } from \"@mariozechner/pi-tui\";\n\nconst markdownTheme: MarkdownTheme = {\n  heading: (text) => `\\x1b[1m\\x1b[33m${text}\\x1b[0m`,\n  code: (text) => `\\x1b[32m${text}\\x1b[0m`,\n  // ... other theme fields\n};\n\nawait createAgentTUI({ agent, messageHistory, theme: { markdownTheme } });\n```\n\n### Setup hook for dynamic header\n\n```typescript\nlet modelName = \"loading...\";\n\nawait createAgentTUI({\n  agent,\n  messageHistory,\n  header: {\n    title: \"My Agent\",\n    get subtitle() { return `model: ${modelName}`; },\n  },\n  onSetup: async () => {\n    modelName = await fetchCurrentModel();\n  },\n});\n```\n\n### Registering custom slash commands\n\n```typescript\nimport { registerCommand } from \"@ai-sdk-tool/harness\";\nimport { createAgentTUI } from \"@ai-sdk-tool/tui\";\n\nregisterCommand({\n  name: \"model\",\n  description: \"Switch the active model\",\n  aliases: [\"m\"],\n  execute: async ({ args }) => {\n    const newModel = args[0];\n    // ... switch model logic\n    return { success: true, message: `Switched to ${newModel}` };\n  },\n});\n\nawait createAgentTUI({ agent, messageHistory });\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}