{"_id":"clankie","_rev":"32-93e6af61e2cd0e399e997e0cd085dd49","name":"clankie","dist-tags":{"latest":"0.15.2"},"versions":{"0.1.0":{"name":"clankie","version":"0.1.0","keywords":["ai","assistant","slack","pi","chatbot","llm","anthropic","openai"],"author":{"name":"Thiago Varela"},"license":"MIT","_id":"clankie@0.1.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"homepage":"https://github.com/thiagovarela/clankie/tree/main/packages/clankie","bugs":{"url":"https://github.com/thiagovarela/clankie/issues"},"bin":{"clankie":"src/cli.ts"},"dist":{"shasum":"8b32324d1640adb11b45a2cbcaa12842323c718f","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.1.0.tgz","fileCount":14,"integrity":"sha512-DdGiIlsGrxY3xKHTTNXlz/p4RWBw5Of/iKMD/Ex0TUKY9Bvd8CKXSOsistWqpGp+QU0gDT4fpcdjgtFphO/6mA==","signatures":[{"sig":"MEUCIHM3QTv+GUw+KbNdeW7OG4eTKEVLbKudlJuMkGfeZmDaAiEAoIFBWXcvsuean7AWVou0kp+KnyVo8cmmmMTRCNjLfd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172139},"type":"module","engines":{"bun":">=1.0.0"},"gitHead":"f1e8e61a8d9a49df7d8fd5cb59aa34276080c8d5","scripts":{"dev":"bun run src/cli.ts","publish:npm":"npm publish","prepublishOnly":"echo 'Publishing to npm...'","publish:dry-run":"npm publish --dry-run"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"repository":{"url":"git+https://github.com/thiagovarela/clankie.git","type":"git","directory":"packages/clankie"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"json5":"^2.2.3","@slack/web-api":"^7.0.0","@sinclair/typebox":"^0.34.48","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.1.0_1771942686399_0.6936839547238167","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"clankie","version":"0.1.1","_id":"clankie@0.1.1","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"src/cli.ts"},"dist":{"shasum":"1053e195a8ee6b189347737896340543e24534cf","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.1.1.tgz","fileCount":20,"integrity":"sha512-aeYZAeQiprHijeWmiXk5xzxGbVrEF4HxII62tQJvocLV/zbS8+ugi2OJ4rfiUyclN4UONx0yjohCz206qxkHXQ==","signatures":[{"sig":"MEUCIDqMVNqemeakggvRVZR3uQgHusuV9ctwcARrAh3hSHWfAiEA6MfbTicFK77LPa0zoRV3owIEEkiB5gUfMe/aREUgSsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194302},"type":"module","gitHead":"53a84ec49527e971da13efbae1c9f6ac6f76089d","scripts":{"dev":"bun run src/cli.ts"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"json5":"^2.2.3","@slack/web-api":"^7.0.0","@sinclair/typebox":"^0.34.48","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.1.1_1771944718458_0.09737307605307133","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"clankie","version":"0.2.0","_id":"clankie@0.2.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"src/cli.ts"},"dist":{"shasum":"d989077356f6def6515f938ecf24a9b3ec548715","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.0.tgz","fileCount":30,"integrity":"sha512-gwzSYQ7QZ4JXOpInl2QLwvhXllo/bTCsyfaEJRWmwK2cfdFtIpKU9yeJ8LWy66HpICdo5X3ndiHbvhdd0I06IA==","signatures":[{"sig":"MEYCIQDRYAi6yar2NFsPcPy4F3g6dCiBLX8msn3HedFMtU1YSgIhAMNqtWldhyoiImDcCz7x+OG+P+kpTLOhgRbjeGG+scHJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1258660},"type":"module","gitHead":"82d2d9dc26a342b09957b249507db60f2e9524ec","scripts":{"dev":"bun run src/cli.ts","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install --frozen-lockfile && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"json5":"^2.2.3","@slack/web-api":"^7.0.0","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.0_1772105439187_0.6591605447800084","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"clankie","version":"0.2.1","_id":"clankie@0.2.1","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"src/cli.ts"},"dist":{"shasum":"1b4ad490f89760e6ab083300c2ddd4dd4e62ee6f","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.1.tgz","fileCount":30,"integrity":"sha512-7s7NALEwUBJhiRTuju41so+66VCHqINMs/YBKwhI6RJWA3GT+rLae8P96wu++gcVWrr15wk4qV6qlVqopRV84g==","signatures":[{"sig":"MEUCIQCz6KY8k1/ELqfrVuiI58VYSq63Bit8/oxPMWy9Rsu9CgIgQwoBvshboK8ScpcPTcTgXS4j4F8HZ58eD5/vFE6B3f0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1258711},"type":"module","gitHead":"77afa9cb72e994029d1ff93438351c46a638532a","scripts":{"dev":"bun run src/cli.ts","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install --frozen-lockfile && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"json5":"^2.2.3","@slack/web-api":"^7.0.0","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.1_1772107794157_0.47486912833367945","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"clankie","version":"0.2.2","_id":"clankie@0.2.2","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"src/cli.ts"},"dist":{"shasum":"eec10dac28f0965a1d129d3b76b8eb16bef17d2b","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.2.tgz","fileCount":31,"integrity":"sha512-02zhT/y/6mEDr1nksqE3HCGGU/FLtNuwFi+5sMwoIy1yzxYuT7XkIhL5wrl7bU+bJDW9iNDJdMOFfmyxac+7Bw==","signatures":[{"sig":"MEUCIFXVpLzpUPMPnMqrOno8Phw93gVnDd12KWaWNv/K+GRcAiEA55vcYb+7yR1GgIBZfkSnpa8HhWz3QEdJ0Hwk9Pmt7J4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1267357},"type":"module","engines":{"node":">=22.6.0"},"gitHead":"e86a755da20f7284dc2ad9ab2ab71875a142989f","scripts":{"dev":"node --experimental-strip-types src/cli.ts","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.18.0","hono":"^4.12.3","json5":"^2.2.3","@hono/node-ws":"^1.3.0","@slack/web-api":"^7.0.0","@hono/node-server":"^1.19.9","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/ws":"^8.5.13","@types/node":"^22.10.2","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.2_1772120713752_0.5663056181150232","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"clankie","version":"0.2.3","_id":"clankie@0.2.3","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"c78ab97e46c4c11bf6aadc465f12fe50df538507","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.3.tgz","fileCount":40,"integrity":"sha512-vRMAHprWCWASKg1Cwp1GkmUbwX/Q55kCIRSMrvJHbfoaMBLh49ovQ+P4CTDTS+5evOrQYgViDjSkqEGvv/Fa/Q==","signatures":[{"sig":"MEUCIFy/mdngu2znEEsNUx/qLI7Uym13WCCZG2cEU0C0aEhYAiEAtUAIGiAGWeviNRTHvdo1hefo2ynEQHIKtBtQWTqM2Ks=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91476170},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"31fb9ca0852c098cbefddba452113c2b922dd49c","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node --format esm && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"bun run build && bun run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.18.0","hono":"^4.12.3","json5":"^2.2.3","@hono/node-ws":"^1.3.0","@slack/web-api":"^7.0.0","@hono/node-server":"^1.19.9","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","@types/node":"^22.10.2","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.3_1772121373457_0.8554679778396701","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"clankie","version":"0.2.4","_id":"clankie@0.2.4","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"e031fbe2a42adac3befc4261f206464bb75e0c0f","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.4.tgz","fileCount":40,"integrity":"sha512-nqVoo8aT4LSA+9ZoCfAw9DZU/oQwQHiJFSBgbm9/Nya+7f3JATX4/IaAgJnmiXE0VPXNrPodgzUTW0Ca6KrE3A==","signatures":[{"sig":"MEUCIG7I1jV+0g6C2BMAh/6EjMyqVappstnqSIMvjSs8KsQXAiEArST/OtgWYYQvYyDuJWZ3yIJhnj/NiWW17YNiw7SBMRU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91476687},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"41a9717712fbf1b6b7873cdaf9f1fbc2587e9ad0","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node --format esm && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"bun run build && bun run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.18.0","hono":"^4.12.3","json5":"^2.2.3","@hono/node-ws":"^1.3.0","@slack/web-api":"^7.0.0","@hono/node-server":"^1.19.9","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","@types/node":"^22.10.2","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.4_1772122671907_0.8364490143933814","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"clankie","version":"0.2.5","_id":"clankie@0.2.5","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"b68ec3a4fce9ebccbc3868a746ef1ac6d74acb3d","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.5.tgz","fileCount":40,"integrity":"sha512-X1LN/AsAPzHAwqs2KOVK9cKziywsUA0b2vyGptK2E/ixwxwMo0ujiHpPg8KaGp1vL98NW10Zjy+QwV6Jm1J9/A==","signatures":[{"sig":"MEUCIQDklyUUf/jd0Znm2VoOWhrSm4FAOoJONKSIA4t1sUI4JgIgA5KZXDFOV27gqQHY94EXodfA1YIoCfX2bLwv9USG+qc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91830664},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"2e1db06a1dbeb15c68be387e110f862d1b093651","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node --format esm && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"bun run build && bun run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.18.0","hono":"^4.12.3","json5":"^2.2.3","@hono/node-ws":"^1.3.0","@slack/web-api":"^7.0.0","@hono/node-server":"^1.19.9","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","@types/node":"^22.10.2","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.5_1772144740300_0.08413247525227008","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"clankie","version":"0.2.8","_id":"clankie@0.2.8","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"090af7e3ec2ff803edd293dd3026e0d604918828","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.8.tgz","fileCount":40,"integrity":"sha512-LnIW2hjOicD+SY8VvPm99ueWAadzwkC0WcK9zTpHK8usDq0E6uRlVK2jK//tntGmGBmVy7XwG4+01xeQVKOrsQ==","signatures":[{"sig":"MEUCIQC0W4/uYCrqbcBJGHS3TNWoYHKBNFifbFmc0liU+93aogIgLFPAk5WvkoJ5ENOVOgoLZu6NuAyW0eYcuDZNbfAKuiw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91834896},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"64483eb371284fad64b07ca64b20476e0d843a7b","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node --format esm && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"bun run build && bun run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.18.0","hono":"^4.12.3","json5":"^2.2.3","@hono/node-ws":"^1.3.0","@slack/web-api":"^7.0.0","@hono/node-server":"^1.19.9","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","@types/node":"^22.10.2","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.8_1772188376651_0.5575339071169669","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"clankie","version":"0.2.9","_id":"clankie@0.2.9","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"33deb51923819313771402ac541d886786439ed8","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.9.tgz","fileCount":45,"integrity":"sha512-akZmi84jn0ciTMAI2++9LWR2v92W/8JngHj5nqsWYQWxy8WzA48MGMBEGsKJ2NxjGDzcHdLP4m69tZ19YaIyBQ==","signatures":[{"sig":"MEQCIEUtgIhywdJEHucqWueFxQR5wuR5LOu4oWIWzmldDdn/AiADHmWt2K2dHnXwW1CyaOBqGzWl2r7P2lXuyFwzo5vBXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91961566},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"aec05cc7630a518e053f707bce3cfc4d3de92544","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node --format esm && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"bun run build && bun run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.18.0","hono":"^4.12.3","json5":"^2.2.3","@hono/node-ws":"^1.3.0","@slack/web-api":"^7.0.0","@hono/node-server":"^1.19.9","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","@types/node":"^22.10.2","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.9_1772268258277_0.10326575492953416","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"clankie","version":"0.2.10","_id":"clankie@0.2.10","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"db4033879f2339b64b9517d0a0c83a55889a9938","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.10.tgz","fileCount":45,"integrity":"sha512-mPTQr9+8ddgx2O53yB1skyws9PqlBZQgWSFW6hSYg/xaXBFGvIWtmCm282FlkB9ckBxMBp7WnNax4ttBxVoUGg==","signatures":[{"sig":"MEUCIQD1qTBWNQSQcCsgi+lwvd3GuvLKy9mO0hhf9qWGjqAjkgIgXFwU57CsI20M+IeA3aaghhlybJPwYYsW9MAKmSBcfiI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91961927},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"2f639b390af5ffb8d4859a3a9de1a863315dccd0","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node --format esm && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"bun run build && bun run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.18.0","hono":"^4.12.3","json5":"^2.2.3","@hono/node-ws":"^1.3.0","@slack/web-api":"^7.0.0","@hono/node-server":"^1.19.9","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","@types/node":"^22.10.2","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.10_1772468179240_0.08529165483668355","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"clankie","version":"0.2.11","_id":"clankie@0.2.11","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"ceec58c80b42c0e4837f8f28387ea1394593870d","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.11.tgz","fileCount":45,"integrity":"sha512-x3+Hdf9d/S+qY6brl30w6mvt14sO638sZWjBX63KdHtqUKRtI4inTgyr7Ac0OeWqyX8yGN1TzTw+9me7FJRKTw==","signatures":[{"sig":"MEUCIQDNiMU4RI1nKkaJkRlXAySMQP8yTOOXPagAW+KyYXSjkgIgI1lrxilzrin0BGXrW3CqK+A0X8bRbhKMI6wE54SoCDk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91970128},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"e24baac8b6c76a7c936dbe30440deaedf4f91531","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node --format esm && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"bun run build && bun run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.18.0","hono":"^4.12.3","json5":"^2.2.3","@hono/node-ws":"^1.3.0","@slack/web-api":"^7.0.0","@hono/node-server":"^1.19.9","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","@types/node":"^22.10.2","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.11_1772486194819_0.33562136069077964","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"clankie","version":"0.2.12","_id":"clankie@0.2.12","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"77c5335cfe5d25efcbf731719b354318149cd4af","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.12.tgz","fileCount":45,"integrity":"sha512-PQxQ02yVFS8RduOsLzAuQkooRjUEobWfBmN364OKNbbDrilTiKRTKmO5mqmqVHVHaFsS1usT7KuFpm5wqjpnJw==","signatures":[{"sig":"MEUCIQCXZdWZ0u0KnI92eJmuLyBd6d3j74z12TfizpYIPhDPEwIgYC3f6sEGKmXRnNaVMjyURqyL2UazGJpszJsB+f41qLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91971340},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"fecd67c8397e4ff1ac6249b4bac4e8024051f885","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node --format esm && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"bun run build && bun run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.18.0","hono":"^4.12.3","json5":"^2.2.3","@hono/node-ws":"^1.3.0","@slack/web-api":"^7.0.0","@hono/node-server":"^1.19.9","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","@types/node":"^22.10.2","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.12_1772486983949_0.483879893638127","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"clankie","version":"0.2.13","_id":"clankie@0.2.13","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"f5e0f70d4a6d42daf2ef5ed336f3bb9d851d6546","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.2.13.tgz","fileCount":45,"integrity":"sha512-q8bseSM+zF/qcpBS+Vmdf42pNzwGgw3UdirXKuO8E4cxbn4eThgl9h1DyHuQcfXF0RFL15jTgeTERHPwgOFOOQ==","signatures":[{"sig":"MEQCIDolzRsV69FlcSJGb4PfNKVbhr2lpGk6muaFO99JRBDSAiAvBnD9edt+pTcq+66pTA7Rlv1eN6Jh2oyNsDdJ5++yrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91971208},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"b8883b78e5a95e0338a9cae798e9023eaa6205f8","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node --format esm && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"bun run build && bun run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.18.0","hono":"^4.12.3","json5":"^2.2.3","@hono/node-ws":"^1.3.0","@slack/web-api":"^7.0.0","@hono/node-server":"^1.19.9","@slack/socket-mode":"^2.0.0","@mariozechner/pi-ai":"^0.54.0","@mariozechner/pi-coding-agent":"^0.54.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.13","@types/node":"^22.10.2","@biomejs/biome":"^2.4.4"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.2.13_1772487513861_0.9469101801553699","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"clankie","version":"0.3.0","_id":"clankie@0.3.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"25d4a8f661263942cc4665dd2e62a0d33b70d8e2","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.3.0.tgz","fileCount":27,"integrity":"sha512-C7hWD4Y1to+iSu15qCDHdiNPOdXEjwo8Qw6baPzRiz2MSDIRA/lbFMg/yb9SwfjvNrzI8+R4U6HfAATN0MWK6g==","signatures":[{"sig":"MEUCIQDWPADl7rKKETX3AtnUPgt/TqQDDhnDkgl8eqwQSFmoHAIgbOfeXw9yu+CLPOqpHfy1KWS+AnYbuHMK8qR1gH38KX4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14296502},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"c43538edd845777fe7f03fe5bfa33d67b73bd0ef","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node --format esm --external koffi --external @silvia-odwyer/photon-node --external @mariozechner/clipboard && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"bun run build && bun run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.3","json5":"^2.2.3","@hono/node-ws":"^1.3.0","@slack/web-api":"^7.14.1","@hono/node-server":"^1.19.9","@slack/socket-mode":"^2.0.5","@mariozechner/pi-ai":"^0.55.4","@mariozechner/pi-coding-agent":"^0.55.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/node":"^25.3.3","@biomejs/biome":"^2.4.5"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.3.0_1772529891403_0.9064425951780257","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"clankie","version":"0.4.0","_id":"clankie@0.4.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"b12f5c16ff978cdb9aa712cd3bd3d9a8a43e89b9","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.4.0.tgz","fileCount":33,"integrity":"sha512-6bGOsMTP90aUjpS29+PV3aMVNm4quGHG2Zvdjk/oRd76UAc7dzsbdtHxdM1Yk0SoBLs4PLszZDHXgeNbiQMT3A==","signatures":[{"sig":"MEQCIBYexdsjanGh/X/xadXpw7B8vq1zGDVwFmYl7+5jgQjWAiA1u4QI9tcO12nuUKaJiYCzRLfuLh9dneD6SyV/NJRNQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13896101},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"4bcac0f86380275eed3be7aaee11cf52c9700121","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node --format esm --external koffi --external @silvia-odwyer/photon-node --external @mariozechner/clipboard && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","build:web-ui":"cd web-ui && bun install && bun run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"bun run build && bun run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.6.1","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.3","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.9","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.55.4","@mariozechner/pi-coding-agent":"^0.55.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.18.1","@types/node":"^25.3.3","@biomejs/biome":"^2.4.5"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.4.0_1772549555173_0.12143462433141683","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"clankie","version":"0.5.0","_id":"clankie@0.5.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"d2eb254e9a98fd28ad329eef43fc4aa2b0db37b7","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.5.0.tgz","fileCount":34,"integrity":"sha512-v1nZ8dCbPvz2JvuN9zNcIaM68AN8sLYT4SMSPIF6CL6CzZRqQoLU+72vvccp+8F7KXW0tIA2XI8MSqWJ4iua0w==","signatures":[{"sig":"MEQCIBZRcStGkgPHjA3zRtZUisNawFR6/kpFwp5mHimGJZSZAiBsuNb9RiXZCeaCsIgPOIZ1r+uA47nDnLdoiEtZLaqVFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13551338},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"b2517c941d41e4491e7f52f5f467a4cbbfe0db2f","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.3","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.9","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.55.4","@mariozechner/pi-coding-agent":"^0.55.4"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.3","@biomejs/biome":"^2.4.5","@typescript/native-preview":"latest"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.5.0_1772717503014_0.6273866610326306","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"clankie","version":"0.6.0","_id":"clankie@0.6.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"ad399e85109aebfd40202503127c75dd3b2b31b4","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.6.0.tgz","fileCount":36,"integrity":"sha512-ui+ZbG6bLt1wf2ad2HCfiZNw6L/PWct49RW6kwSs/5BFr5JjkT8QcYaBOQ3O3GOh0q03eQ41AcS8DphWUOs8Iw==","signatures":[{"sig":"MEYCIQCHapirqoxtUROUXsbr5vztACK0DEfuGNVdSS/8UwfIuwIhAPv1En90Cb6attPc0NHhfazQNyo7o+31mhaYjpvU/p7Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13555404},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"109fad9785ba05011a5dd854e08970dcdfe30979","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.3","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.9","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.55.4","@mariozechner/pi-coding-agent":"^0.55.4"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.3","@biomejs/biome":"^2.4.5","@typescript/native-preview":"latest"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.6.0_1772720335538_0.24103086003670104","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"clankie","version":"0.8.0","_id":"clankie@0.8.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"b2b0e3af0bcee4d06b90368f59e0913fb23a63b6","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.8.0.tgz","fileCount":36,"integrity":"sha512-j3Lo0p4RP51WTe18VKsCCG9s2yn4tGDuHPUPaH6zk23LiVwvAvi2wVDzqHQ0k2AUKjNUDkeR7PXdfnki2KR5DA==","signatures":[{"sig":"MEUCIQC/Ygeap3HL+LkQ5+/df25OaNpfYP0Sf2DcaN5ymJ4QwwIgAyKVk4go69ihEgFwqO9qg/TBinKkHtOhTuJTTg3X/Is=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13555659},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"531a01ca9e511467d8e160536b07119ac00dbc19","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.3","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.9","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.55.4","@mariozechner/pi-coding-agent":"^0.55.4"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.3","@biomejs/biome":"^2.4.5","@typescript/native-preview":"latest"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.8.0_1772734170963_0.12145588973240273","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"clankie","version":"0.9.0","_id":"clankie@0.9.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"e6e2402207d41603c3176d4dbf50728b89be3fdb","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.9.0.tgz","fileCount":37,"integrity":"sha512-XgkwF6o5lS+3s50aa6U33BMasSbwYOXIdIu1et6NmdoRQ7K54PbUN8ACPHA6sBgigqsr7jg2t2geuUghiBYSGQ==","signatures":[{"sig":"MEUCIQCpqQCZ3LbceKHH0Z9eRkzjs5++ud/xF/bQms1yIZ8ceQIgFppGL8toeZdjlm3P17IrCdPWZLdbBincdsBG0lU2fqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13565580},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"39f2623f3501061e6e2dc5fe8b653c16e688364c","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.3","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.9","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.55.4","@mariozechner/pi-coding-agent":"^0.55.4"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.3","@biomejs/biome":"^2.4.5","@typescript/native-preview":"latest"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.9.0_1772739351057_0.8237738906568504","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"clankie","version":"0.10.0","_id":"clankie@0.10.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"6621286d02e9750b25bba4ab1e72c48ad08ebc12","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.10.0.tgz","fileCount":37,"integrity":"sha512-QP4FDCuHhLhDFLgzftdA2yvixfMZXcZGutnzWLrFeIzf++Nl4CqB6CARTy61dwaF95g0QFNaNxniGCaX0tckvQ==","signatures":[{"sig":"MEYCIQCpqdc3oKl9tAfN8C3TIPvV/ZmfONdHkaxWyoQzJz42lgIhAJwRN0BejY5wMq1Stj5YzNzuiYIPsdB6Z+st/FUYNTPr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13577915},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"0d314823f4c2e3e147952b6a8c901c63a6b8b2d1","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.3","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.9","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.55.4","@mariozechner/pi-coding-agent":"^0.55.4"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.3","@biomejs/biome":"^2.4.5","@typescript/native-preview":"latest"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.10.0_1772806158528_0.30368210877253654","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"clankie","version":"0.10.1","_id":"clankie@0.10.1","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"a6e2b01b58cc5018c98ac65ab7be505d83747bc7","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.10.1.tgz","fileCount":37,"integrity":"sha512-ChVKYj0heHS7WEUxMzy3iX0mkLlvKEA7nK9Gb+4mj1LtffARXLzZkeEBeub8XiQpMVFi+OV+WFT/g3/KfnPa1w==","signatures":[{"sig":"MEUCIBiwGGJ5gI4dyEPkndwXw1gSDNtOAhK0Fk+tC7Lsj8QaAiEA85eRF3SGbszoxgMHM4G6JkKJxt1wtTOtwW5kYGFduE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11748009},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"79c75400222875a07e5d654d039bd15ad7485e2d","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.5","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.11","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.56.2","@mariozechner/pi-coding-agent":"^0.56.2"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.5","@biomejs/biome":"^2.4.6","@typescript/native-preview":"^7.0.0-dev.20260306.1"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.10.1_1772808432698_0.39831528184208675","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"clankie","version":"0.11.0","_id":"clankie@0.11.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"0f58c7e33c9fd83546f522a4cfb2eaca98ba292a","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.11.0.tgz","fileCount":38,"integrity":"sha512-/fG6KHXioXYsWD2Ao72SC/ntbeDqRktjNCto8ETcD3MhKgac9CeWVv0t4WvOXGNWTcEEESU2bfsedG460ZmNyg==","signatures":[{"sig":"MEYCIQDgozIZnN2rD6RumaO+FbFqBP4KlnF3zhugr4FoY0TxrQIhAPtFLsSYfWabtn56YRSemNsA8I0CPQz6rvzlovNfqAvy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11781287},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"e82d691ce9fb3a0de347786bc62ed3361d567e0a","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.5","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.11","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.56.2","@mariozechner/pi-coding-agent":"^0.56.2"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.5","@biomejs/biome":"^2.4.6","@typescript/native-preview":"^7.0.0-dev.20260306.1"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.11.0_1772820901178_0.8968077913701791","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"clankie","version":"0.11.1","_id":"clankie@0.11.1","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"12e800055f5d5385d8d3a25d0ba632268bb603ef","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.11.1.tgz","fileCount":38,"integrity":"sha512-gaQzCeQl6IINeGlPoH4ZpHlmbk4i5im64DxEFnZ7V83nPlVSi9VQC1QtnjiAVHVhxORSesDFMwPunhJHDSS9QQ==","signatures":[{"sig":"MEYCIQCXc6Jy5VS6zYHJV8CJ7NlZVUTEozoACwe3F7KvgTtYfgIhALDZryLaE728bvSLe+Mk2rNZ9lqsLBNpjfM1/ILZn9gc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11781287},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"f6ccf761c7db08335333187e5c4cdf810f9a2198","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.5","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.11","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.56.2","@mariozechner/pi-coding-agent":"^0.56.2"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.5","@biomejs/biome":"^2.4.6","@typescript/native-preview":"^7.0.0-dev.20260306.1"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.11.1_1772821308863_0.6349064011303984","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"clankie","version":"0.11.2","_id":"clankie@0.11.2","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"614b461efd3cd5dee1453799a9a9ed5883d06e53","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.11.2.tgz","fileCount":38,"integrity":"sha512-MpPzsQCxXpBJUcftStT/K5y1BWQfsHkPJshVmMI/CLL6c2Ytlgb8EroGlgjBJGnVgTm1shvjqFlxViivjY1OJw==","signatures":[{"sig":"MEUCIQCBHkRPkx3BOEpfrMSThDHYaTVvHLnnOzc+QaCHJa4dgwIgKLwbn+UZkmRPmZucgBMNWw9hEqL4muRzI7ijCM2AKOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11781812},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"70c1f83932970accb3a12efc27fb5e70f3c142ae","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.5","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.11","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.56.2","@mariozechner/pi-coding-agent":"^0.56.2"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.5","@biomejs/biome":"^2.4.6","@typescript/native-preview":"^7.0.0-dev.20260306.1"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.11.2_1772822552522_0.30730737765531724","host":"s3://npm-registry-packages-npm-production"}},"0.11.3":{"name":"clankie","version":"0.11.3","_id":"clankie@0.11.3","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"a32a7eca9483d1b1880148eac38485ed151947af","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.11.3.tgz","fileCount":38,"integrity":"sha512-WUyR+uLQLak0L5iycYTGsyYB7QXy88Nq8vKTcbl5XegqrNOdI6oXyrciETTt3BJ+/8AHlhySboL+KwFinr/ZIg==","signatures":[{"sig":"MEUCIQCAPowAeFf0Ch0gq7mvjrikZOhkTVizoELroANMILUVPQIgKHZ2H3AHzobm2tTAJ53rcCfZGLs+o7fp2rgXQBS0p3g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11782048},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"1a0ff84453f8e6b6651cfc172a273fc78e4ff6cd","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.5","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.11","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.56.2","@mariozechner/pi-coding-agent":"^0.56.2"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.5","@biomejs/biome":"^2.4.6","@typescript/native-preview":"^7.0.0-dev.20260306.1"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.11.3_1772824975499_0.43409641045228664","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"clankie","version":"0.12.0","_id":"clankie@0.12.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"b77e33631be1b4b1e1380555056ba3a8dcf1d829","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.12.0.tgz","fileCount":38,"integrity":"sha512-MGi1aZnVryUZd/pqJVqZw4+JikNGKN2wdZjjhScA04Bhic4I0PvM0aifKmfa959vuqXYIPSAxN2bCR5MkmSzTQ==","signatures":[{"sig":"MEUCIExbBl2QAMheDkjrrtEc97aahVH4hHwLHqjhqdcfCHHUAiEA3rd/PLgb0phDNVGXo+nTXZnSrOhLcq+GqiWKdg8UgKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11782094},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"7911c9d91520ab78ed190665b4f93b52644d5334","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit && cd ../clankie-sandbox && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.5","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.11","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.56.2","@mariozechner/pi-coding-agent":"^0.56.2"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.5","@biomejs/biome":"^2.4.6","@typescript/native-preview":"^7.0.0-dev.20260306.1"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.12.0_1772911092679_0.1290882372384694","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"clankie","version":"0.13.0","license":"MIT","_id":"clankie@0.13.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"b694be9034e4bce6d932855674b59d2165d59a54","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.13.0.tgz","fileCount":43,"integrity":"sha512-25fbSRZawSZHBrdT5K4oKK1l49BQN5gPst1aw1M6/9msk9frFr7yn2ODqWMGe8IeIVF4Sks+/8JvrFAPUiszqg==","signatures":[{"sig":"MEUCIQDtxKleuWiVuF2V3UHmB27tJtbzPrNWa2Tznc6W1Qn/ggIgCHX5uVys4ByNrXFD/8YKUKzQaMe4/mKunjTQ6lXQ/AU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11815170},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"67ec8daf12dcaa6c219a058b97783f1d83d4f512","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit && cd ../clankie-sandbox && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.5","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.11","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.56.2","@mariozechner/pi-coding-agent":"^0.56.2"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.5","@biomejs/biome":"^2.4.6","@typescript/native-preview":"^7.0.0-dev.20260306.1"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.13.0_1772966645491_0.5184371083934893","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"clankie","version":"0.14.0","license":"MIT","_id":"clankie@0.14.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"48a1023bc47349c8e8aee5784144692139d49f08","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.14.0.tgz","fileCount":43,"integrity":"sha512-tbxIO6jYK72LQSlMLsTwSD89behPJp5XWpK3qaJaxI09z4HSSHLQ9TWRTv7ZZ5C3apY6h+ifsshnU74uuO7Akg==","signatures":[{"sig":"MEUCIFGOX2pxdzyNMEBj7NKcsd20ttFRN2eMue0PHWk1t3HFAiEA5gI3yRXT0CGW0NA2fM6rE8WhPGfLLLSpg4RgKh5C7ns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11816173},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"dfe45228b50c048efbe258d6cea5a0d0e28cef9a","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit && cd ../clankie-sandbox && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.5","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.11","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.56.2","@mariozechner/pi-coding-agent":"^0.56.2"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.5","@biomejs/biome":"^2.4.6","@typescript/native-preview":"^7.0.0-dev.20260306.1"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.14.0_1772974141831_0.48724208332450836","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"clankie","version":"0.15.0","license":"MIT","_id":"clankie@0.15.0","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"5bce674f5292b6af39e866cc843fe9b1691d1541","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.15.0.tgz","fileCount":43,"integrity":"sha512-tXz0g1Na8kUJpbRU3wGo0vnaSCLlq2LwefgdPB3xSVe+rVtd2XTsLnMtlqXPn/tBMU4j5UD84gW5/oWvwnL/MA==","signatures":[{"sig":"MEYCIQDcie65Vc12gHVl9G8wjUNQVWa5c0qQ68RwYYGwF3eHuQIhAIzVYiFcM1U5y52DFYW19JA6OsWZg913LMqXxhwk1NuD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11834331},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"7b482d68d86070cd1f3d58394bef0431593bda1b","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit && cd ../clankie-sandbox && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.5","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.11","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.56.2","@mariozechner/pi-coding-agent":"^0.56.2"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.5","@biomejs/biome":"^2.4.6","@typescript/native-preview":"^7.0.0-dev.20260306.1"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.15.0_1773234833832_0.07092294264732169","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"clankie","version":"0.15.1","license":"MIT","_id":"clankie@0.15.1","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"bin":{"clankie":"dist/cli.js"},"dist":{"shasum":"5dcb9b42be704d5073608d4e9b3017b9e4b68f0b","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.15.1.tgz","fileCount":43,"integrity":"sha512-J0k3wEl5nXwK6gfY9X7Q4gTUWByUb38cqRCvvoH93near7xaaFa9blgQu2tyl12Otei5veQDB+K3gsPx0xepyg==","signatures":[{"sig":"MEUCIQDOw2SXJk1aNQVVHoEX/zdqFEmNNwwXXSPOLvgIy+8RSgIgPCAg4CbTANTIehtDalNOkOmDm0o7sDYltW5vif4HHaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11836051},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"f41b90f9866fd9a42862288e53e58cdaa983fd0b","scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","check":"biome check .","format":"biome format --write .","check:fix":"biome check --fix .","typecheck":"tsgo --noEmit","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit && cd ../clankie-sandbox && npx tsgo --noEmit","prepublishOnly":"npm run build && npm run build:web-ui"},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"_npmVersion":"11.11.0","description":"A minimal personal AI assistant built on pi's SDK","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ws":"^8.19.0","hono":"^4.12.5","json5":"^2.2.3","croner":"^9.1.0","@hono/node-ws":"^1.3.0","@hono/node-server":"^1.19.11","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.56.2","@mariozechner/pi-coding-agent":"^0.56.2"},"_hasShrinkwrap":false,"devDependencies":{"rolldown":"^1.0.0-rc.7","@types/ws":"^8.18.1","@types/node":"^25.3.5","@biomejs/biome":"^2.4.6","@typescript/native-preview":"^7.0.0-dev.20260306.1"},"_npmOperationalInternal":{"tmp":"tmp/clankie_0.15.1_1773235746577_0.11614110303579173","host":"s3://npm-registry-packages-npm-production"}},"0.15.2":{"name":"clankie","version":"0.15.2","description":"A minimal personal AI assistant built on pi's SDK","type":"module","license":"MIT","bin":{"clankie":"dist/cli.js"},"scripts":{"dev":"node src/cli.ts","build":"rolldown -c rolldown.config.js && chmod +x dist/cli.js","build:web-ui":"cd web-ui && npm install && npm run build && cd .. && rm -rf web-ui-dist && cp -r web-ui/.output/public web-ui-dist","prepublishOnly":"npm run build && npm run build:web-ui","check":"biome check .","check:fix":"biome check --fix .","format":"biome format --write .","typecheck":"tsgo --noEmit","typecheck:all":"tsgo --noEmit && cd web-ui && npx tsgo --noEmit && cd ../extensions/clankie-memory && npx tsgo --noEmit && cd ../clankie-json-ui-render && npx tsgo --noEmit && cd ../clankie-sandbox && npx tsgo --noEmit"},"engines":{"node":">=18.0.0"},"dependencies":{"@hono/node-server":"^1.19.11","@hono/node-ws":"^1.3.0","@mariozechner/pi-ai":"^0.56.2","@mariozechner/pi-coding-agent":"^0.56.2","@sinclair/typebox":"^0.34.41","croner":"^9.1.0","hono":"^4.12.5","json5":"^2.2.3","ws":"^8.19.0"},"devDependencies":{"@biomejs/biome":"^2.4.6","@types/node":"^25.3.5","@types/ws":"^8.18.1","@typescript/native-preview":"^7.0.0-dev.20260306.1","rolldown":"^1.0.0-rc.7"},"gitHead":"82c9a3a4d4ef8e6020ff5a138fc76bfd1ec4af2f","_id":"clankie@0.15.2","_nodeVersion":"25.8.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-6Rn1OBkr1WubZV5oXbf6Nb4td5t4t5w9WEsfrz0rUT4//ITtidVYbx8eyJ14/0ZFc+y+NIEOqH8V3kTzy4BkcA==","shasum":"096f35c8def49326493009950d567159dfaffb12","tarball":"https://registry.npmjs.org/clankie/-/clankie-0.15.2.tgz","fileCount":43,"unpackedSize":11836589,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCddWLslZ/55aUhxb+GB8TwnlF5URyVgMq3n3ByTirWawIhAPwOKzjHxjLm318JNbcVFOvEtp3RZt3e37oqaJHePV3A"}]},"_npmUser":{"name":"thiagovarela","email":"thiagovarela@gmail.com"},"directories":{},"maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/clankie_0.15.2_1773236822631_0.02825821237280368"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-24T14:18:06.398Z","modified":"2026-03-11T13:47:03.418Z","0.1.0":"2026-02-24T14:18:06.552Z","0.1.1":"2026-02-24T14:51:58.613Z","0.2.0":"2026-02-26T11:30:39.405Z","0.2.1":"2026-02-26T12:09:54.360Z","0.2.2":"2026-02-26T15:45:13.953Z","0.2.3":"2026-02-26T15:56:14.629Z","0.2.4":"2026-02-26T16:17:52.557Z","0.2.5":"2026-02-26T22:25:41.498Z","0.2.8":"2026-02-27T10:32:57.292Z","0.2.9":"2026-02-28T08:44:18.938Z","0.2.10":"2026-03-02T16:16:19.951Z","0.2.11":"2026-03-02T21:16:35.551Z","0.2.12":"2026-03-02T21:29:44.614Z","0.2.13":"2026-03-02T21:38:34.483Z","0.3.0":"2026-03-03T09:24:51.701Z","0.4.0":"2026-03-03T14:52:35.447Z","0.5.0":"2026-03-05T13:31:43.480Z","0.6.0":"2026-03-05T14:18:55.935Z","0.8.0":"2026-03-05T18:09:31.330Z","0.9.0":"2026-03-05T19:35:51.376Z","0.10.0":"2026-03-06T14:09:18.882Z","0.10.1":"2026-03-06T14:47:12.994Z","0.11.0":"2026-03-06T18:15:01.483Z","0.11.1":"2026-03-06T18:21:49.167Z","0.11.2":"2026-03-06T18:42:32.847Z","0.11.3":"2026-03-06T19:22:55.800Z","0.12.0":"2026-03-07T19:18:12.975Z","0.13.0":"2026-03-08T10:44:05.804Z","0.14.0":"2026-03-08T12:49:02.143Z","0.15.0":"2026-03-11T13:13:54.059Z","0.15.1":"2026-03-11T13:29:06.905Z","0.15.2":"2026-03-11T13:47:02.914Z"},"license":"MIT","description":"A minimal personal AI assistant built on pi's SDK","maintainers":[{"name":"thiagovarela","email":"thiagovarela@gmail.com"}],"readme":"# clankie — Personal AI Assistant\n\nA minimal AI assistant built on [pi](https://github.com/badlogic/pi-mono)'s SDK. clankie runs on your machine with your credentials, with a web channel today and support for additional channels via extensions.\n\n## What Can clankie Do?\n\n- 🌐 **Web UI** — Browser-based chat interface with real-time streaming ([web-ui/](./web-ui/))\n- 📎 **Handle attachments** — Upload images (vision models), documents, code files\n- 🔄 **Session management** — Switch between conversations with `/switch`, `/sessions`, `/new` commands\n- 🔌 **pi ecosystem** — Works with pi extensions, skills, and prompt templates\n- 🧩 **Extension UI Spec** — Declarative UI for extensions (forms, switches, selects) rendered in the browser\n- 🔐 **API Provider Auth** — Configure OAuth and API keys for AI providers through the Web UI\n- 🔒 **Privacy-first** — Runs on your machine, your credentials, your data\n\n## Installation\n\n### 1. Install Dependencies\n\n**Runtime:** [Node.js](https://nodejs.org) v18+\n\n```bash\n# Check Node version\nnode --version  # Should be >= v18.0.0\n```\n\n### 2. Quick Install via npm\n\n```bash\nnpm install -g clankie\n```\n\n### 3. Or: Install from Source\n\n```bash\ngit clone https://github.com/thiagovarela/clankie\ncd clankie\nnpm install\nnpm link\n```\n\n## Quick Start\n\n```bash\nclankie init\nclankie login\nclankie start\n```\n\n`clankie init` also creates default context files (`AGENTS.md`, `IDENTITY.md`, `SOUL.md`, `USER.md`) if missing.\n\nYou should see output like:\n\n```text\n[daemon] Starting clankie daemon (pid 12345)...\n[daemon] Workspace: /Users/you/.clankie/workspace\n[daemon] Channels: web\n[web] WebSocket server listening on port 3100\n[daemon] Ready. Waiting for messages...\n```\n\nThen open the connect URL printed by the daemon.\n\n## Screenshots\n\n### Chat view\n\n![clankie chat view](./docs/screenshots/chat-view.png)\n\n### API provider auth\n\n![clankie API provider auth](./docs/screenshots/api-provider-auth.png)\n\n### Extensions UI\n\n![clankie extensions UI](./docs/screenshots/extensions-ui.png)\n\n## Using clankie\n\n### Web UI\n\n1. Start the daemon: `clankie start`\n2. Open the connect URL from logs (or use `http://localhost:3100?token=<your-token>`)\n3. Start chatting\n\n### Settings Pages\n\nThe Web UI includes built-in settings pages accessible from the sidebar:\n\n**Authentication** (`/settings/auth`)  \nConfigure AI provider credentials:\n- OAuth login for supported providers (Anthropic, OpenAI, GitHub Copilot, etc.)\n- API key entry for providers that support direct authentication\n- View and manage existing authentications\n\n**Extensions** (`/settings/extensions`)  \nBrowse and configure loaded extensions:\n- View registered tools, commands, flags, and shortcuts\n- Interactive configuration forms for extensions with UI Spec\n- Install new packages via chat commands\n\n### Session Management Commands\n\nWhen chatting through channels, you can use:\n\n```text\n/switch <name>    Switch to a different session\n/sessions         List all sessions\n/new              Start a fresh session (clears context)\n```\n\n### CLI Commands\n\n```bash\n# Send a one-off message (prints response and exits)\nclankie send \"What files are in the current directory?\"\n\n# Shorthand (no subcommand needed)\nclankie \"Summarize recent git commits\"\n\n# Check daemon status\nclankie status\n\n# Update clankie and restart daemon/service if needed\nclankie self-update\n\n# Stop daemon\nclankie stop\n\n# View configuration\nclankie config show\n\n# Reset AGENTS.md / IDENTITY.md / SOUL.md / USER.md to defaults\nclankie agents reset\n```\n\n## Configuration\n\nConfig file: `~/.clankie/clankie.json` (JSON5 format — comments and trailing commas allowed)\n\n### Common Settings\n\n```bash\n# Web channel\nclankie config set channels.web.authToken \"your-secret-token\"\nclankie config set channels.web.port 3100\n\n# Optional: same-origin static hosting from daemon\nclankie config set channels.web.staticDir \"/path/to/web-ui/.output/public\"\n\n# AI model\nclankie config set agent.model.primary \"anthropic/claude-sonnet-4-5\"\n\n# Workspace (where agent works)\nclankie config set agent.workspace \"~/projects\"\n```\n\n### Default Context Files (OpenClaw-style)\n\nclankie ships built-in context templates owned by the `agent-context-files` extension.\n\nCreated by `clankie init` (if missing):\n\n- `~/.clankie/workspace/AGENTS.md` (loaded natively by pi)\n- `~/.clankie/IDENTITY.md`\n- `~/.clankie/workspace/SOUL.md`\n- `~/.clankie/workspace/USER.md`\n\n`clankie agents reset` rewrites all of the files above to clankie defaults.\n\nPrompt loading order for extension-managed files:\n\n- `IDENTITY.md` → `SOUL.md` → `USER.md`\n\n### Config Reference\n\n| Path | Description | Example |\n|------|-------------|---------|\n| `agent.workspace` | Agent working directory | `\"~/projects\"` |\n| `agent.model.primary` | Primary AI model | `\"anthropic/claude-sonnet-4-5\"` |\n| `channels.web.authToken` | Web auth token | `\"your-secret-token\"` |\n| `channels.web.port` | Web channel port | `3100` |\n| `channels.web.allowedOrigins` | Allowed origins (optional) | `[\"https://example.com\"]` |\n| `channels.web.staticDir` | Static web-ui directory (optional) | `\"/path/to/web-ui-dist\"` |\n| `channels.web.enabled` | Enable/disable web channel | `true` (default) |\n\n## Running as a Service\n\n```bash\nclankie daemon install\nclankie daemon status\nclankie daemon logs\nclankie daemon uninstall\n```\n\n## Development\n\n```bash\nnpm run dev send \"hello\"\nnpm run build\nnpm run check\nnpm run check:fix\nnpm run format\n```\n\n## Troubleshooting\n\n### \"No channels configured\" error\n\nConfigure the web channel:\n\n```bash\nclankie config set channels.web.authToken \"your-secret-token\"\nclankie config set channels.web.port 3100\n```\n\n### Daemon won't start after reboot\n\n```bash\nclankie daemon status\nclankie daemon logs\n```\n\nIf needed:\n\n```bash\nclankie daemon uninstall\nclankie daemon install\n```\n\n## Architecture\n\n### How the Web UI Talks to PI\n\nclankie uses a **WebSocket RPC protocol** that bridges the browser to pi's agent sessions:\n\n```\n┌─────────────┐      WebSocket       ┌──────────────┐      RPC      ┌─────────────┐\n│   Web UI    │ ◄──────────────────► │    Daemon    │ ◄───────────► │  pi Agent   │\n│  (Browser)  │   JSON messages      │   (Node.js)  │   (local)     │   (SDK)     │\n└─────────────┘                      └──────────────┘               └─────────────┘\n```\n\n**Protocol flow:**\n\n1. **Connection** — Web UI connects to `ws://localhost:3100` with auth token\n2. **Session binding** — Each tab gets its own session ID; multiple sessions per connection\n3. **Bidirectional messages**:\n   - **Client → Server:** `RpcCommand` (prompt, steer, abort, set_model, etc.)\n   - **Server → Client:** `AgentSessionEvent` (message_start, message_update, tool_execution_start, etc.)\n4. **Streaming** — Assistant responses stream token-by-token via `message_update` events\n5. **Authentication** — Auth tokens via query param (`?token=...`) or HTTP-only cookies\n\nSee [`web-ui/src/lib/types.ts`](./web-ui/src/lib/types.ts) for the full protocol types.\n\n### API Provider Configuration via UI\n\nclankie provides a built-in settings page for managing AI provider authentication:\n\n**Supported auth methods:**\n- **OAuth** — Browser-based login flows (Anthropic, OpenAI, GitHub Copilot, etc.)\n- **API Key** — Direct entry of API keys for providers that support it\n\n**How it works:**\n\n1. Extensions register providers via `pi.registerProvider()` with optional `oauth` config\n2. Web UI fetches available providers via `get_auth_providers` RPC\n3. OAuth flows open in browser, callbacks handled by local HTTP server\n4. Credentials stored securely by clankie daemon (never in browser)\n5. Authenticated providers automatically available for model selection\n\n**Configuration:**\n```typescript\n// In an extension\npi.registerProvider(\"my-provider\", {\n  baseUrl: \"https://api.example.com\",\n  api: \"anthropic-messages\",\n  models: [...],\n  oauth: {\n    name: \"My Provider\",\n    async login(callbacks) {\n      callbacks.onAuth({ url: \"https://auth.example.com/...\" });\n      const code = await callbacks.onPrompt({ message: \"Enter code:\" });\n      return { refresh: code, access: code, expires: Date.now() + 3600000 };\n    }\n  }\n});\n```\n\n### Extension UI Spec\n\nExtensions can define **declarative UI components** that render as native forms in the Web UI:\n\n**How it works:**\n\n1. Create a `ui-spec.json` next to your extension (or export `UI_SPEC` inline)\n2. Define components (Card, Stack, Switch, Input, Select, Button, Text)\n3. Bind component values to extension config/state\n4. Web UI renders the spec as interactive React components\n5. Actions flow back to the extension via RPC\n\n**Example ui-spec.json:**\n```json\n{\n  \"root\": \"my-extension-card\",\n  \"elements\": {\n    \"my-extension-card\": {\n      \"type\": \"Card\",\n      \"props\": { \"title\": \"My Extension\", \"description\": \"Configuration\" },\n      \"children\": [\"settings-stack\"]\n    },\n    \"settings-stack\": {\n      \"type\": \"Stack\",\n      \"props\": { \"direction\": \"vertical\", \"gap\": \"md\" },\n      \"children\": [\"enabled-switch\", \"save-button\"]\n    },\n    \"enabled-switch\": {\n      \"type\": \"Switch\",\n      \"props\": {\n        \"label\": \"Enable feature\",\n        \"checked\": { \"$bindState\": \"/config/enabled\" }\n      }\n    },\n    \"save-button\": {\n      \"type\": \"Button\",\n      \"props\": { \"label\": \"Save\", \"variant\": \"primary\" },\n      \"on\": {\n        \"press\": {\n          \"action\": \"saveExtensionConfig\",\n          \"params\": { \"enabled\": { \"$state\": \"/config/enabled\" } }\n        }\n      }\n    }\n  }\n}\n```\n\n**UI Spec locations (checked in order):**\n- `{extension-path}.ui.json`\n- `{extension-dir}/ui-spec.json`\n- Package root `ui-spec.json`\n\n**Supported component types:**\n- `Card` — Container with title/description\n- `Stack` — Vertical/horizontal layout container\n- `Switch` — Toggle boolean values\n- `Input` — Text input with labels\n- `Select` — Dropdown with options\n- `Button` — Action triggers\n- `Text` — Static or dynamic text\n\n**State binding:**\n- `{ \"$bindState\": \"/config/key\" }` — Two-way binding to extension config\n- `{ \"$state\": \"/path\" }` — Read-only state reference\n- Static values for labels, placeholders, etc.\n\nSee the [heartbeat extension](./src/extensions/heartbeat/ui-spec.ts) for a working example.\n\n## How It Works\n\nclankie is a thin wrapper around pi:\n\n1. **Web channel** accepts RPC over WebSocket\n2. **Daemon** routes messages to persistent agent sessions (one per chat)\n3. **Agent** uses pi's SDK with full tool access\n4. **Sessions** persist across restarts in `~/.clankie/sessions/`\n\n## Credits\n\nBuilt on [pi](https://github.com/badlogic/pi-mono) by [@badlogic](https://github.com/badlogic).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}