{"_id":"@0xkahi/pi-qol","_rev":"20-4a5be681b7a6a92d4aa108060c534fd3","name":"@0xkahi/pi-qol","dist-tags":{"latest":"1.2.0"},"versions":{"0.0.1":{"name":"@0xkahi/pi-qol","version":"0.0.1","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@0.0.1","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"877c7d9604b4715563690094fcfd597dc1fcc3cb","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-0.0.1.tgz","fileCount":16,"integrity":"sha512-/mULxa+Alm29gE9cOE3R/CkGvAK5UDaZ46SB5ikiiiK6/IHWNAgA133TUwT/GyoNg/epgOAsWqzJViSbfxjVqQ==","signatures":[{"sig":"MEUCIQCH2F38+OLZoalIESsswmB737uY/TU7tWOe9mxTzxNfqAIgXrxkon3LIxYRK+SbH7qri1PgT42hfxYAWSQcu1TBL/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26115},"type":"module","gitHead":"1d7bf13069505e0e47b690ee247e443473c53393","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.79.4","@earendil-works/pi-tui":"^0.79.4","@earendil-works/pi-coding-agent":"^0.79.4"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_0.0.1_1781557317519_0.41598825732332356","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@0xkahi/pi-qol","version":"0.0.2","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@0.0.2","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"473d9609f5ed197ffa95731c0c1cb811d1264347","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-0.0.2.tgz","fileCount":24,"integrity":"sha512-WQf7SIVvGLqV6CkWSCvfA8Rl6kfdNTenv9BP6vHWF6SQRL7EieSroSgw8FX41ka2II5w7vHP9LueVMKfCOKjkQ==","signatures":[{"sig":"MEUCIQCP6qPobVunvbRcWGxp29LlocimAwaNmdXWuBREVoykbQIgGmjGLZFBaVbnGu0zP2lqlWqkKQugGdIL1dw1N0EBGXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52302},"type":"module","gitHead":"be1ca46084378092b7e634c94351353f6cac1f9c","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.79.4","@earendil-works/pi-tui":"^0.79.4","@earendil-works/pi-coding-agent":"^0.79.4"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_0.0.2_1781637859508_0.8310236939010047","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@0xkahi/pi-qol","version":"0.0.3","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@0.0.3","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"f57eeef1cd60606e0b2641aa319a8d96a91b618d","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-0.0.3.tgz","fileCount":37,"integrity":"sha512-7nQWfwi8tb4fCRZMlzFYeNTPZ6+4xWJA2VSBbwGRioJUYX4N3KFb0uFPFL3VqR3GznB67MDga6Da7RYx1Xg0Hw==","signatures":[{"sig":"MEYCIQCA9Omxg/hqBHd0S6tkwFDzrUdJruxX9gKZClbW8xTRLAIhAPIKRC2Cojl/ogE1NDo5APwwj2MqyJCCIVqu6qU4dB4t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88311},"type":"module","gitHead":"895d42e3564b5783ae76ece8c6496646c29a60c4","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.79.4","@earendil-works/pi-tui":"^0.79.4","@earendil-works/pi-coding-agent":"^0.79.4"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_0.0.3_1781739480651_0.6198292556280782","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@0xkahi/pi-qol","version":"0.0.4","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@0.0.4","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"949faaf4fe296418ea509a648ec8efd012d018ff","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-0.0.4.tgz","fileCount":37,"integrity":"sha512-YF3D4V3Cbh6HsigDqHDq3ugs2cElLR31uf+hEfe5JZsN/YgdyqHwg1/4ZbqV/sWTQJ1Ez8TuwM0JPtHybMs7Aw==","signatures":[{"sig":"MEYCIQC3R1B9uJLDHxBgWcwKnD33kweO9+U7ycUnJe+Xq+Q4ZwIhAJ0Hk1k0x3gtOYIuR97bZ6Qux3cM4GwwekZwpJSU0Bdo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87286},"type":"module","gitHead":"f99fbfabe0bb810d55499d4b499f09cb55e2364a","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.79.4","@earendil-works/pi-tui":"^0.79.4","@earendil-works/pi-coding-agent":"^0.79.4"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_0.0.4_1781898700200_0.6324617898170657","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@0xkahi/pi-qol","version":"0.0.5","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@0.0.5","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"2cc95698da6278ae8a1117d0e9f310f27b1055e0","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-0.0.5.tgz","fileCount":47,"integrity":"sha512-06oayib35ADAemKm/12yzxPdmwy+vHKksluimDTQLrBVAIfWjrL5An1Eb6vbchW6MWkbpfshdIfC2A4g+UnJjg==","signatures":[{"sig":"MEUCIFMR22+XjW5pxSE8mHmigJnZsQhaqQWn7NGX3SeAiLppAiEA5JVLSGUlNfJ8ArSMvgzKae0owWBZeDMaqIVCaMAqKTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128574},"type":"module","gitHead":"0c950513fe9d1c7792b5883ea06d594e5a92d7ca","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.79.4","@earendil-works/pi-tui":"^0.79.4","@earendil-works/pi-coding-agent":"^0.79.4"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_0.0.5_1783454614009_0.5800607001522562","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@0xkahi/pi-qol","version":"0.0.6","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@0.0.6","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"0a93bb4f479216e4059ab51243fbecf48ba8f90f","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-0.0.6.tgz","fileCount":46,"integrity":"sha512-iOOKp++bVatOIQeOPacXDdZSdL3DMWA+BJjGUxadhK3Rt0j3pbN8LnKn2LpmFpg2G5h9iq+oLz+1xaXgFtPW4w==","signatures":[{"sig":"MEUCIBwKbaHqkzFGkfCSHjYbbD5lSRroqu4p8Sq3wVHR1YIpAiEAl5oGnzOMOmKL1je6YwOW7e3Ns+42tqISOd+MNqVR/yU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126388},"type":"module","gitHead":"b0868990626714bda3a1a00a859efcd362ff378f","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.79.4","@earendil-works/pi-tui":"^0.79.4","@earendil-works/pi-coding-agent":"^0.79.4"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_0.0.6_1784050692885_0.471308317342479","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@0xkahi/pi-qol","version":"0.1.0","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@0.1.0","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"a9a96f3101cfcda45e7c750e505506281b23d7c7","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-0.1.0.tgz","fileCount":46,"integrity":"sha512-KUDesaJNZTh4ujQmQwmaij2V3gtuF06E2CNeWAosOSLEQ58Sz3ZQ6RXYDNmJoGgNpHJY2g3VbkVqH/Yza63/2A==","signatures":[{"sig":"MEQCIEv047K2L4e1M6aHM4azBZiPUfqnOUDQQJq0lkofISMpAiBRV2B2YkPEveMICin18CXsgpx6+gWHacfCvJEBv4ySqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136163},"type":"module","gitHead":"31dc7a9df4562094f99164d39eca09025789fcc0","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.79.4","@earendil-works/pi-tui":"^0.79.4","@earendil-works/pi-coding-agent":"^0.79.4"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_0.1.0_1784329646509_0.3385988423996451","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@0xkahi/pi-qol","version":"0.1.1","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@0.1.1","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"7710368c6e03b8eac88edc1256d394cf016c5493","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-0.1.1.tgz","fileCount":46,"integrity":"sha512-XZBfcOur33kceSnHce9OQDIdvWFWAcOBkxKGkon9vf3BFqSH4qGBm+CQc4lsavXqg5lvA2XdWmXqdCghlf4T8w==","signatures":[{"sig":"MEUCIDdngUtYbAWe3I8eQ5cwRu/n3byIjd8ZrrRQ9wKtDXD4AiEAwvfz3gFy7ynq6nKTlujcqnIeVHUbTwzOXZ0SFOzrcqE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137175},"type":"module","gitHead":"71980151e7ef3e5ca7c6955a533cf76865ee1d8a","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.79.4","@earendil-works/pi-tui":"^0.79.4","@earendil-works/pi-coding-agent":"^0.79.4"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_0.1.1_1785365497803_0.4642155469912288","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@0xkahi/pi-qol","version":"1.0.0","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@1.0.0","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"e0ec3bb171e5a2a431c64e36bcfbda72958c70c9","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.0.0.tgz","fileCount":63,"integrity":"sha512-2pEZTQw87xXZJa5O2K7Nb9UUjZOSH4L12sFOG2gJj3IXiJnNjI5XMIcfG33SB6UOXA+Q4opa5gIPHN8v02MdbA==","signatures":[{"sig":"MEUCIQDJFqqEHZ+e1hrOOZuVKwFL4Uxid7o2FQ+zjorku5uDGgIgQQx/GHc+X82y1mF4Sj1jdmVJm3USNgoTqjkE5SlMKLo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279699},"type":"module","gitHead":"0e6432df153dd9f20d32e535bf6e2b6ac05d2ea1","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.83.0","@earendil-works/pi-tui":"^0.83.0","@earendil-works/pi-coding-agent":"^0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_1.0.0_1785627662206_0.7586530836637924","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@0xkahi/pi-qol","version":"1.0.1","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@1.0.1","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"5677792c7d91b989a9c62d5224ae01731fd57e13","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.0.1.tgz","fileCount":75,"integrity":"sha512-InW8bQ3v5fO7sE9SKPI5zhdph/iw0bRn1ZiGmq+v3lJ5G+P6L9cxwRTojoJKjeHT0CcTzWyEAf7SdzwVGOGx4g==","signatures":[{"sig":"MEYCIQDKV/UgfR/Cl6Pes4T8n5inX7QSOP/8tC0VokRoG09tTgIhAJoqHElT+0+JvdG4IOdoE06rUHKwvoNJcyCl1rnT/0W5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":355992},"type":"module","gitHead":"c0e1fd655d3daab26e6935f6ac1593dc31d8af93","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.83.0","@earendil-works/pi-tui":"^0.83.0","@earendil-works/pi-coding-agent":"^0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_1.0.1_1785806180491_0.1560200345213989","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@0xkahi/pi-qol","version":"1.0.2","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@1.0.2","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"87a78a7792da5edffd4dc54169d37b04b9251738","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.0.2.tgz","fileCount":76,"integrity":"sha512-ljGAncfwr+GetBuuHe7K5qp7ypyJRwXqwGjxPkSBX+d4CqfpheLfFVskl+ObSIeVLYOrnaIxIfog1qqP0vN4dA==","signatures":[{"sig":"MEUCICOO6tM07AWgOVj+cG3OLQE2QlO9aUpw3nh1kkj23ULqAiEAlyuMjTctLrtx6utmtAg/CEoocvNXmRjYKvFoXOutOzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":360627},"type":"module","gitHead":"3a601d2b35ce81a482503b6b384e5fef5045bbf0","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.83.0","@earendil-works/pi-tui":"^0.83.0","@earendil-works/pi-coding-agent":"^0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_1.0.2_1785876392298_0.8647505387815759","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@0xkahi/pi-qol","version":"1.0.3","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@1.0.3","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"20e480e4284864783a2a9e4bb677b8b5fce297c6","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.0.3.tgz","fileCount":77,"integrity":"sha512-7IKmzD9yU3BEUQqdF95+NQ33FcotunP8mqHRVkyIRwSVGNXvu6aUAbCZfCIoms6ZH2njVxB8Ui7esAUTxp8BwQ==","signatures":[{"sig":"MEQCIHs+ECFFD8e5DXXuHT7q7LSfY2xJhvUJXjJvGcfLkrgMAiB6zVk7lrEi2T/+OU5JOQ1u8L+BUGqDqQAniCPod7HKJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":363387},"type":"module","gitHead":"88c0258a1bd28d7ab50f95b011e009dfde083ab2","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.84.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_1.0.3_1786231695550_0.42843570407050247","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@0xkahi/pi-qol","version":"1.0.4","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@1.0.4","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"4dcd9b51a92f342c52e09ff5f0e79b83993d6ad0","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.0.4.tgz","fileCount":79,"integrity":"sha512-3MPN4rIZyEuAtEDDMOEa0FtCCq/0HkoScR5XB3dbC5fDl7CcsXVATclIJ3XQTIuW0l2g0aWnfWguZy8nAFEkPw==","signatures":[{"sig":"MEUCIBbQeAxbRzMu0NG4gZO1vej8vOhTaL1Kb40HQ7AT5Vi0AiEA23vh/1N2txuKVEmetTJkPUB/3sjQMVFT5zRtbwjS3Tw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":364825},"type":"module","gitHead":"b17a1c2250bd34ef09c9e663687e0acc15413390","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.84.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_1.0.4_1786567480664_0.07920733912226674","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@0xkahi/pi-qol","version":"1.0.5","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@1.0.5","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"d0a0e8d78c864ee0a494521df0992d68862d1e1b","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.0.5.tgz","fileCount":82,"integrity":"sha512-7ovYt40uQU0gaHw72TPcLpbXYk3UuepBdeUc/JbCxsYQUgXyDYajhMjtXtK89PgIB3NUxlrKanOXs4bc90+V2A==","signatures":[{"sig":"MEUCIFv1RRCZF5SYrFgeZonIbcWqbmtwJ2C7Lm6qag7OAe0vAiEAztKThqf8hBwEHkTapk9edGCN/+ZqkHkON/i6REX1vaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":383673},"type":"module","gitHead":"62c57a32f060976822dd72e1d1f0c5efa5304e95","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.84.3","@earendil-works/pi-tui":"^0.84.3","@earendil-works/pi-coding-agent":"^0.84.3"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_1.0.5_1788047973534_0.20293466271521532","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@0xkahi/pi-qol","version":"1.0.6","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@1.0.6","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"1bf6b74815762d357585580af535379b95239b44","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.0.6.tgz","fileCount":83,"integrity":"sha512-srEA24G/SIf67x7MQ2BhTlv4mPIqFYu+Hjzr/ZPqM41bMITnYSCBjn7QqV+F5vNisxMi1R/OLHT74trm2S1PhQ==","signatures":[{"sig":"MEUCIQDcIEheqRQq1kzX8CiOlpUMo2WN40aD56dVtc/F9NHPsAIgPSnYRn/Iq7RDSZ+VAz9XbcYjP9ZjexU59lxsJtSzZ2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":389171},"type":"module","gitHead":"432adac6f27ea7aa525ae8ae24fda120711e8dec","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.85.0","@earendil-works/pi-tui":"^0.85.0","@earendil-works/pi-server":"0.85.0","@earendil-works/pi-coding-agent":"^0.85.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_1.0.6_1788571128486_0.6690126868496293","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@0xkahi/pi-qol","version":"1.1.0","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@1.1.0","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"d7f1f230705e5205b75ad0d282ffcdd7e8e8daa0","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.1.0.tgz","fileCount":93,"integrity":"sha512-p8P3GdQJ0WycD3dqtpUrJvMDLGkJK+jClWpt+WuIEiebqtZWA7hFj9yeat8brymYe+DYGHHd3K3LfCP8Q+oQsg==","signatures":[{"sig":"MEQCICqP7uZrKOBW9Ims3wNLelwJBaOrggB1VwbLJFYtT8OtAiBM9dV/1vXYIv6yP+cG6jvJP26TdGIcABpNgWc29oz0xg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIB+QI4Mvx5wcgt8W9zwNlRhMkPuSmfbm4jx4Efuu62RYAiBTihYAn5+6hoh0BVr/s+SRcCHNeWabjz6Zt6RcZrzIMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":495459},"type":"module","gitHead":"7ba1557cb469fb005f1863f503629d26877d1aef","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.86.1","@earendil-works/pi-tui":"^0.86.1","@earendil-works/pi-coding-agent":"^0.86.1"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_1.1.0_1789944288714_0.6669172187317738","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@0xkahi/pi-qol","version":"1.1.1","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@1.1.1","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"ec7ec87cadca891b4dc884e2db219a3e8fdfec99","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.1.1.tgz","fileCount":93,"integrity":"sha512-TbfcfI3gX+NfkFpePj9Nbe5PgG/pxtrojHyUegHZZw6u6VZu20huoWPNvmymtdcr+KOuPmgBmuDnZQHJV+y+3Q==","signatures":[{"sig":"MEQCICHWGzaNyfVUYq6Nf+BYchArOe/iatiJZAhcjUMTBEg3AiAD7ELHmR2Fa0vOzvO2zVJyBv1z6p/D/VTipq5VYCokdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD6C1p3/lee+LOJ1xG/ajZRia11CN9y/PjhNc0GabQrLAIgLcasorn1QrGnmL7+3ruLtuNhx/VwOrMyg4ckPQpntMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":495459},"type":"module","gitHead":"0b025fcc65b73c5c452547cb67aa0e0f1a2afb1c","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.87.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"^0.87.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_1.1.1_1790026764545_0.5544781093303706","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@0xkahi/pi-qol","version":"1.1.2","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@1.1.2","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"ba3021741a9535ebac4f879797d8782546409e8b","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.1.2.tgz","fileCount":93,"integrity":"sha512-wkwL70Y9Flt/HL8eGiXUKq6NJCEdHJUHW9JOBVgbAO2kHCKIiNExKA+kfuUeb6KM1KuMoTiwv8wb2b4Og7piXA==","signatures":[{"sig":"MEQCIDSa4jU8R5g4U6LTMF7knW8cnj7lqglhCfQoEi5Snhu9AiAX08M0NAbnxdWaxoO7QFG4KbFL1byOF9f4UNUxFU+TIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGRDYvA4v63DWmt3+etlSqEUL/izXPKAeXbY0vs9tM90AiEAn8heVX4dPa6u8R3FBpvTQXdbkoX1OY7GqhD9bSz/+kU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":496445},"type":"module","gitHead":"31c73bed66140eb51f58479f862d02bbc38abc63","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.87.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"^0.87.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_1.1.2_1790280862480_0.5331028019308692","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@0xkahi/pi-qol","version":"1.1.3","keywords":["pi-package","pi-extension"],"author":{"name":"0xKahi"},"_id":"@0xkahi/pi-qol@1.1.3","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"homepage":"https://github.com/0xKahi/pi-qol#readme","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"2fccb9f6e48f3343758e1a0b4f0d7115bb02d051","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.1.3.tgz","fileCount":93,"integrity":"sha512-X3kG1+iNjtZacelOPcOpE92JQ/lahMobJrM//egQiFvageVBdqH6UJXANEo4GCgOD0fNi8dJD/Loov85uH+bVA==","signatures":[{"sig":"MEQCIC1LA9I1yMlXlAWlSN1bDQXzhCtLT5PVW98ezPXnmIEdAiBcp3DK1JE3QXsqMXsXa2croZYvHcuvLMAi62AaqbfxzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFNo+EhagpBrZZ75MfmtRt8wviB1Kuk5q5IEB0pCwAEGAiEAwaKHlR1D6KjIvbRr0QPtelUA7suqwQse45pYbGaQkBo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":497628},"type":"module","gitHead":"170bd23257144dbcaed077d86a937d5395f45886","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.87.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"^0.87.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-qol_1.1.3_1790281318308_0.9757290107190206","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"pi":{"extensions":["./src/index.ts"]},"_id":"@0xkahi/pi-qol@1.2.0","bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"dist":{"shasum":"c068bd46acf3efa8e11eaf21195892a06d75c233","tarball":"https://registry.npmjs.org/@0xkahi/pi-qol/-/pi-qol-1.2.0.tgz","fileCount":104,"integrity":"sha512-JnJCzmcTb8JAQIDc6KBYjwvx2C+dEvH/uWd9KqFzLVQc5EXy52LSB1FW6qW2TJb2yxyXiYMng5tnHYeMUngGwA==","signatures":[{"sig":"MEUCIEizMOvpGqB0wxLKYdDmd7VKjCZDas7V0XZFl9reWS4vAiEA19+hw9ZOK/zq9GLCAUl2ljuVlvmunuopNEiKQ4r7dKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDop2tyBiXeBCsHR8SRdeaamqdutU/lU+pavrp8PQhjdAIhAOqHvOTW5H9r9SAH58sVPvDpLngn+2MUu0TtudxC1jGc"}],"unpackedSize":523136},"name":"@0xkahi/pi-qol","type":"module","author":{"name":"0xKahi"},"gitHead":"e63c98da89c4daf68872e8413d80331e2fd5d28a","scripts":{"lint":"bun biome","test":"bun test","biome":"biome check ./src","check":"bun run lint:fix && bun run type-check","release":"changeset publish","version":"changeset version","lint:fix":"bun biome --write","changeset":"changeset","type-check":"tsc --noEmit","buildSchema":"bun run scripts/build-schema.ts"},"version":"1.2.0","_npmUser":{"name":"0xkahi","email":"waifumaximalist@gmail.com"},"homepage":"https://github.com/0xKahi/pi-qol#readme","keywords":["pi-package","pi-extension"],"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"_npmVersion":"10.9.8","description":"quality of life pi extensions","directories":{},"maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@0xkahi/cli-dye":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","@types/bun":"latest","typescript":"^5","@types/node":"^24.0.0","@biomejs/biome":"^2.4.15","@changesets/cli":"^2.31.0","@earendil-works/pi-ai":"^0.99.2","@earendil-works/pi-tui":"^0.99.2","@earendil-works/pi-coding-agent":"^0.99.2"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-qol_1.2.0_1790819377933_0.5816754638639032"}}},"time":{"created":"2026-06-15T21:01:57.323Z","modified":"2026-10-01T01:49:38.165Z","0.0.1":"2026-06-15T21:01:57.672Z","0.0.2":"2026-06-16T19:24:19.682Z","0.0.3":"2026-06-17T23:38:00.800Z","0.0.4":"2026-06-19T19:51:40.331Z","0.0.5":"2026-07-07T20:03:34.161Z","0.0.6":"2026-07-14T17:38:13.030Z","0.1.0":"2026-07-17T23:07:26.695Z","0.1.1":"2026-07-29T22:51:37.956Z","1.0.0":"2026-08-01T23:41:02.357Z","1.0.1":"2026-08-04T01:16:20.638Z","1.0.2":"2026-08-04T20:46:32.451Z","1.0.3":"2026-08-08T23:28:15.707Z","1.0.4":"2026-08-12T20:44:40.838Z","1.0.5":"2026-08-29T23:59:33.697Z","1.0.6":"2026-09-05T01:18:48.634Z","1.1.0":"2026-09-20T22:44:48.820Z","1.1.1":"2026-09-21T21:39:24.656Z","1.1.2":"2026-09-24T20:14:22.585Z","1.1.3":"2026-09-24T20:21:58.411Z","1.2.0":"2026-10-01T01:49:38.034Z"},"bugs":{"url":"https://github.com/0xKahi/pi-qol/issues"},"author":{"name":"0xKahi"},"homepage":"https://github.com/0xKahi/pi-qol#readme","keywords":["pi-package","pi-extension"],"repository":{"url":"git+https://github.com/0xKahi/pi-qol.git","type":"git"},"description":"quality of life pi extensions","maintainers":[{"name":"0xkahi","email":"waifumaximalist@gmail.com"}],"readme":"# pi-qol\n\n> Quality-of-life extensions for [pi](https://github.com/earendil-works/pi).\n\nA small collection of opt-in extensions that smooth out everyday pi usage. Today\nit ships **`auto_session_name`** — automatic, opencode-style session titling,\n**`model_select`** — an interactive model picker, and **`custom_footer`** — a\ncompact configurable interactive footer.\n\n## Installation\n\nInstall the package from npm:\n\n```bash\npi install npm:@0xkahi/pi-qol\n```\n\nThen register it in your pi configuration so pi loads `./src/index.ts` as an\nextension (see the `pi.extensions` field in `package.json`).\n\n## Features\n\n### `auto_session_name`\n\nAutomatically generates a short, human-readable title for a brand-new session from\nits first user message, using a cheap model call that runs in the background and\nnever blocks your turn.\n\n- **Non-blocking** — titles are generated asynchronously while the agent responds.\n- **Fires once, early** — only on the very first real user turn of a session.\n- **Smart guards** — skips sessions that already have a name, forked/child\n  sessions, and empty prompts.\n- **Model-flexible** — use a configured cheap model, or fall back to the active\n  session model automatically.\n- **Safe output** — strips `<think>` blocks, unwraps quotes, and truncates titles\n  to 100 characters.\n\n### `model_select`\n\nAdds `/select-model`, an interactive model picker with fuzzy search, permanent\nFavourites, ordered custom group tabs, provider filtering, and inline or overlay layouts.\n\n- **quick access** to listed favourite models and user-defined favourite subsets\n- **shared filtering** across Favourites, group, and Search tabs\n- **bidirectional tab navigation** with Tab and Shift+Tab\n- **provider filtering** for Search without removing models from favourite tabs\n- **sections**: opens on Select Model; `Ctrl+]` switches to the next section and\n  `Ctrl+[` to the previous (both wrap). Without the Kitty keyboard protocol,\n  `Ctrl+[` acts as Esc instead. Tab/Shift+Tab stay within the active section.\n- **Usage**: `[Claude]` and `[Codex]` tabs show every subscription rate window,\n  separated by blank lines, with a progress bar, used percentage, reset time,\n  pace, and data freshness. Fixed provider colors match the custom footer. Missing\n  credentials and request failures are shown explicitly. Usage shares the footer\n  cache and fetches only when visited; press `r` to refresh the active provider.\n  Navigate rows with `j`/`k`, arrows, `gg`/`G`; `q` or Esc closes without changing\n  the model. In Select Model, `q` still types in the filter.\n\nallow keybindings with [pi-vim-keys](https://github.com/0xKahi/pi-vim-keys) with eventId of `pi.vimKeys.event:pi-qol.model_select`\n\n### `custom_footer`\n\nReplaces pi's built-in interactive footer with the same three-line layout, but\nshows the current directory as an icon plus basename, supports hex color overrides,\ncan hide token/cache clusters, and adds an OAuth subscription-usage progress bar\nfor supported providers (Anthropic and OpenAI Codex). Usage colors are fixed:\nClaude `#D97706` and Codex `#10B981`; former usage-color overrides are ignored.\n\n- **Directory line** — optional inverse-styled agent badge followed by the\n  directory icon + basename, with optional git branch and session name. The badge\n  is disabled by default.\n- **Stats line** — cumulative input/output tokens, cache read/write/hit cluster,\n  session cost (or `(sub)` when on a subscription), context-window usage, and the\n  right-aligned model name (with provider prefix when multiple providers are\n  available).\n- **Subscription usage** — a colored progress bar plus percentage and reset time\n  for the active OAuth provider. Usage is fetched lazily and cached, refreshing\n  at most once every 60 seconds per provider; auth/network failures simply hide\n  the segment.\n\nKnown difference from pi's built-in footer: the `(auto)` compaction suffix is\nomitted because extensions do not expose reliable live state for it.\n\n## Configuration\n\n`pi-qol` reads a JSON config file named `config.json` from two locations and merges\nthem (project overrides global):\n\n| Scope   | Path                                                       |\n| ------- | ---------------------------------------------------------- |\n| Global  | `<agent-dir>/extensions/pi-qol/config.json`                |\n| Project | `<cwd>/.pi/extensions/pi-qol/config.json` (trusted projects only) |\n\n\n> Project config is only loaded when the project is trusted.\n\n### Example\n\n```json\n{\n  \"$schema\": \"https://raw.githubusercontent.com/0xKahi/pi-qol/main/assets/config.schema.json\",\n  \"auto_session_name\": {\n    \"enabled\": true,\n    \"model\": {\n      \"provider\": \"opencode\",\n      \"modelId\": \"gpt-5-nano\",\n      \"reasoning\": \"low\"\n    }\n  },\n  \"model_select\": {\n    \"enabled\": true,\n    \"layout\": \"overlay\",\n    \"favourite_label\": \"Pinned\",\n    \"provider_filter\": [\"anthropic\", \"openai\"],\n    \"groups\": [\"work\", \"fast\"],\n    \"favourite\": [\n      {\n        \"provider\": \"anthropic\",\n        \"modelId\": \"claude-sonnet-4-5\",\n        \"groups\": [\"work\", \"fast\"]\n      }\n    ],\n    \"hide_tabs\": { \"groups\": false, \"search\": false }\n  },\n  \"context_view\": {\n    \"enabled\": true,\n    \"layout\": \"inline\"\n  },\n  \"custom_footer\": {\n    \"enabled\": true,\n    \"colors\": {\n      \"directory\": \"#A78BFA\",\n      \"modelName\": \"#60A5FA\",\n      \"agentName\": \"#FBBF24\"\n    },\n    \"display\": {\n      \"tokens\": true,\n      \"cache\": true,\n      \"agentName\": true\n    },\n    \"defaultAgentName\": \"DEFAULT\"\n  }\n}\n```\n\n### Options\n\n#### `auto_session_name`\n\n| Key       | Type      | Default | Description                                                        |\n| --------- | --------- | ------- | ------------------------------------------------------------------ |\n| `enabled` | `boolean` | `false` | Turn the auto session naming feature on.                           |\n| `model`   | `object`  | —       | Optional model used to generate titles. Falls back to the session model if omitted. |\n\n\n#### `model`\n\n| Key         | Type     | Description                                                            |\n| ----------- | -------- | --------------------------------------------------------------------- |\n| `provider`  | `string` | Model provider id (e.g. `anthropic`, `openai`).                       |\n| `modelId`   | `string` | Model identifier as registered in pi's model registry.               |\n| `reasoning` | `enum`   | One of `off`, `minimal`, `low`, `medium`, `high`, `xhigh`.            |\n\n\nWhen `model` is set but cannot be found or authenticated, `pi-qol` automatically\nfalls back to the active session model and surfaces a warning notification.\n\n#### `model_select`\n\n| Key                    | Type       | Default  | Description                                               |\n| ---------------------- | ---------- | -------- | --------------------------------------------------------- |\n| `enabled`              | `boolean`  | `false`  | Turn the model picker on.                                 |\n| `layout`               | `enum`     | `inline` | Picker layout: `inline` or `overlay`.                     |\n| `favourite_label`      | `string`   | `Favourites` | Non-empty label for the permanent first tab.          |\n| `provider_filter`      | `string[]` | `[]`     | Restrict Search models to these providers; favourite tabs are unaffected. |\n| `groups`               | `string[]` | `[]`     | Ordered custom group tabs. Exact duplicate names use their first occurrence. |\n| `favourite`            | `object[]` | `[]`     | Favourite models (`provider`, `modelId`, optional `groups`). |\n| `favourite[].groups`   | `string[]` | `[]`     | Exact, case-sensitive group memberships for a favourite. Unknown names are ignored. |\n| `hide_tabs.groups`     | `boolean`  | `false`  | Hide all custom group tabs.                               |\n| `hide_tabs.search`     | `boolean`  | `false`  | Hide the Search tab. Favourites cannot be hidden.         |\n\nThe favourites tab is always first, even when empty, and uses `favourite_label`\nas its display label. Unique groups follow in configured order, and Search is\nlast when visible. Use Tab to cycle forward and Shift+Tab to cycle backward\nthrough visible tabs. A favourite can belong to multiple groups; group tabs\ncontain only resolved, authenticated favourites and preserve favourite order.\nDuplicate favourite declarations remain first-entry-wins.\n\n#### `context_view`\n\n| Key       | Type      | Default | Description |\n| --------- | --------- | ------- | ----------- |\n| `enabled` | `boolean` | `false` | Enable the Context View capture and interface. |\n| `layout`  | `enum`    | `inline` | Context View presentation: `inline` or centered `overlay`. |\n\n### Context View\n\nContext View is a fork of Dmitry Makarov's [pi-context-view](https://github.com/dimk90/pi-context-view), adapted into one unified tabbed interface with Vim-friendly keybindings. Enable it, then run `/context-view` with no arguments. The Usage tab opens first; Tab and Shift+Tab switch between Usage and Injections. Use `j`/`k` or arrows to move, `Ctrl+u`/`Ctrl+d` to move by a page, `gg`/`G` to jump to the beginning/end, Enter to preview, and Esc or `q` to return or close. By default it opens inline; set `context_view.layout` to `overlay` for a centered overlay. Other extensions can open the same view by emitting `pi.vimKeys.event:pi-qol.context_view`.\n\n#### `custom_footer`\n\n| Key                         | Type      | Default   | Description                                      |\n| --------------------------- | --------- | --------- | ------------------------------------------------ |\n| `enabled`                   | `boolean` | `false`   | Replace pi's built-in interactive footer.        |\n| `display.tokens`            | `boolean` | `true`    | Show cumulative input/output token counts.       |\n| `display.cache`             | `boolean` | `true`    | Show the custom cache read/write/hit cluster.    |\n| `display.agentName`         | `boolean` | `false`   | Prefix the first line with a padded bold inverse agent badge. |\n| `defaultAgentName`          | `string`  | `DEFAULT` | Agent name restored at the start of each session. |\n| `colors.directory`          | `hex`     | —         | Color the directory icon and basename.           |\n| `colors.modelName`          | `hex`     | —         | Color the right-aligned model name.              |\n| `colors.agentName`          | `hex`     | —         | Agent badge foreground color before inversion.   |\n| `icons.directory`           | `string`  | nerd font | Glyph shown before the directory basename.       |\n| `icons.cache`               | `string`  | nerd font | Glyph for the cache cluster.                     |\n| `icons.cacheRead`           | `string`  | nerd font | Glyph for cache-read tokens.                     |\n| `icons.cacheWrite`          | `string`  | nerd font | Glyph for cache-write tokens.                    |\n| `icons.refresh`             | `string`  | nerd font | Glyph shown before the subscription reset time.  |\n\nWhen enabled, the badge has no brackets, uses bold and inverse styling, and adds\none styled padding space on each side of the name. One normal, unstyled space\nseparates the trailing badge padding from the directory. Names are trimmed and\nsanitized. Names wider than ten terminal columns are rendered as their first ten\nvisible columns plus `...`; badge padding does not count toward that limit, and\nwide Unicode characters are never split. Badge color precedence is a valid event\ncolor,\n`colors.agentName`, then pi's `accent` theme color. Event-selected names and\ncolors are session-scoped: every `session_start` restores `defaultAgentName` and\nclears the event color.\n\nOther extensions can update the current identity through pi's event bus:\n\n```ts\npi.events.emit('pi.qol.event:set-agent-name', {\n  agentName: 'Reviewer',\n  color: '#FFFFFF', // optional; must be #RRGGBB\n});\n```\n\nInvalid or empty names are ignored. A missing or invalid event color clears any\nprevious event color and uses the normal fallback precedence.\n\nProject config shallow-merges each top-level section over global config. Arrays\nreplace lower-precedence arrays, so project `model_select.favourite` or\n`model_select.groups` replaces the corresponding global array. Nested objects are\nalso replaced as values during that section merge; for example, a project\n`hide_tabs` object replaces the global one, then omitted `groups` or `search`\nfields receive their default of `false`.\n\n## How it works\n\nOn `before_agent_start`, the `auto_session_name` extension checks a series of\nguards before doing any work. It only proceeds when **all** of the following hold:\n\n1. The feature is enabled in config.\n2. The session does not already have a name.\n3. The session is not a fork/child session.\n4. It is the user's first turn.\n5. The user prompt is non-empty.\n\nIf those pass, it resolves a model, generates a title via a dedicated\ntitle-generation prompt, cleans the result, and persists it with\n`pi.setSessionName()`. The work runs in a cancellable background task that is\naborted on session shutdown.\n\n## Development\n\nThis project uses [Bun](https://bun.sh) and [Biome](https://biomejs.dev).\n\n```bash\nbun install        # install dependencies\nbun run check      # biome fix + type-check\nbun test           # run tests\nbun run buildSchema # regenerate assets/config.schema.json from the zod schemas\n```\n\n### Project structure\n\n```\nsrc/\n  index.ts                       # extension entry — lifecycle wiring only\n  config-loader.ts               # loads + merges global/project config\n  constants.ts                   # EXTENSION_ID\n  schemas/                       # zod config schemas (full + partial)\n  utils/                         # path + model-resolution helpers\n  extensions/\n    auto-session-name/           # the auto_session_name feature\n    model-select/                # the model_select feature\n    custom-footer/               # the custom_footer feature\nscripts/                         # JSON schema generation\nassets/config.schema.json        # generated config schema\n```\n\n## License\n\nSee repository for license details.\n\n## Author\n\n[0xKahi](https://github.com/0xKahi)\n","readmeFilename":"README.md"}