{"_id":"@blackbelt-technology/pi-agent-dashboard","_rev":"34-10c0053d489e65932bada4011182b14f","name":"@blackbelt-technology/pi-agent-dashboard","dist-tags":{"next":"0.0.0-test-darwin-x64.3","latest":"0.8.0"},"versions":{"0.2.0":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.2.0","keywords":["pi-package"],"_id":"@blackbelt-technology/pi-agent-dashboard@0.2.0","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"e41d63479f9be86c221b351e63c70a9f471db8ce","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.2.0.tgz","fileCount":212,"integrity":"sha512-6AlHt8KnIzPELwPkQyYQxeU2TrSuLoCdgLO8zuTVNMiHVGltdJnUGv9wsZQyJr/FhqmRpw6GzvYC6n22cWOS7w==","signatures":[{"sig":"MEUCIHO/ZT4sqk2iqT5tL4z9c9pjU043hH1YhwOgseBl3fosAiEAvYDDpaYSspouQH66qEAW6kRNEVCOL4ZEXiodUu+5Wmw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1158843},"main":"packages/server/src/cli.ts","type":"module","gitHead":"446809f3b4719710ebb4df6b055c45a1003dfdd8","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","test:watch":"vitest","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron"},"_npmUser":{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},"workspaces":["packages/*"],"_npmVersion":"10.9.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@blackbelt-technology/pi-dashboard-web":"*","@blackbelt-technology/pi-dashboard-server":"*","@blackbelt-technology/pi-dashboard-extension":"*"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.2.0_1776050051080_0.8942222761575769","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.2.1","keywords":["pi-package"],"_id":"@blackbelt-technology/pi-agent-dashboard@0.2.1","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"483ad570cb98855b5b33e1a7d6bb6652a1151645","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.2.1.tgz","fileCount":212,"integrity":"sha512-ne6JU1kcotyCHEr/SRW3Bf3ZTNtLF3IEaUEyKe/0FYNGiFavzN22PR0WRrbeir/AUw3nw1g/L90ALD+asw2WUA==","signatures":[{"sig":"MEUCIHuK1eW0t8kmhQU3CluvTbeicp+rLh3xkC32viq+WjSsAiEApHFf7W9uP7WxnSu4irPnwzfcCVRb95hvLT1SqKJfSew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1159005},"main":"packages/server/src/cli.ts","type":"module","gitHead":"d8ff2cc5b10502cf670cc9861b1ed8e947a7e7fd","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","test:watch":"vitest","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.11.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"*","@blackbelt-technology/pi-dashboard-server":"*","@blackbelt-technology/pi-dashboard-extension":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.2.1_1776097992484_0.7328390896712753","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.2.2","keywords":["pi-package"],"_id":"@blackbelt-technology/pi-agent-dashboard@0.2.2","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"21a9e0e391b98ad93e79ac850cd297cc263d5318","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.2.2.tgz","fileCount":222,"integrity":"sha512-+zfzAlyHiaIYyhUC2vQKRqDPLcY5YDbi410QJ62EhClAv6JN1VqT3FcxfCvI7v+77cQxJzZLHVlP+6cMkVlOsA==","signatures":[{"sig":"MEYCIQC0lomLI7ZybEgbXd7p0lQMry80hrAQ3heo96d4enYUvgIhANvZJ/3ee0j3NX6stgapTv2W+9R3XmpPAmLUgDAZGJ6V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1226016},"main":"packages/server/src/cli.ts","type":"module","gitHead":"bf8b2dbf0f9a12c093e283586b0f18661ca3bebd","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","test:watch":"vitest","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.11.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"*","@blackbelt-technology/pi-dashboard-server":"*","@blackbelt-technology/pi-dashboard-extension":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.2.2_1776194264248_0.9615657272127789","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.2.3","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.2.3","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"516782f77ad1405dd5b55c54f012d5d664e974b9","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.2.3.tgz","fileCount":226,"integrity":"sha512-N5oGzGrQ/HAkvbEUuoGDn0Fi2cudWVUtuIEBYjLXjyqahWE5OGkaRRj9jyfebi/lRGVF3KhamEZJpb7jf7R4qw==","signatures":[{"sig":"MEYCIQC5Gq1LwSD8bWxyjnoi+GTWMVYgz1yFp29WW1anO2NNWgIhAMHJ1edTtO7Nytn/6kehRDqm5l73/+K+VCc1gsv8Nd5m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1248960},"main":"packages/server/src/cli.ts","type":"module","gitHead":"5e1c957d6e0c95529f73e6e365661727d3f6c9b4","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","test:watch":"vitest","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.11.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"*","@blackbelt-technology/pi-dashboard-server":"*","@blackbelt-technology/pi-dashboard-extension":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.2.3_1776236429414_0.6250554300792299","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.2.4","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.2.4","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"5e741eb78eda4f2a1e4d79d5afec6af34b57894b","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.2.4.tgz","fileCount":226,"integrity":"sha512-LBk6/+RAaiB+1PyKnY1A5i0xV7VL7m7CO5UdV5jAjA1z5S+rawOpzltyp2Gi366x2RYBnD6sl0VHYVFmZWnJFg==","signatures":[{"sig":"MEUCIQD/oMCgUI/ncJe+12+x608z2kbmjWO3j67Jx0f/APNTWQIgQIwNJr3EAh4iR/dBW7aMf3LJRgWl6Ka4s7ZOvkHPK1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1248960},"main":"packages/server/src/cli.ts","type":"module","gitHead":"d7fb88699f3d20618d9b9d492cdd1de3980586fe","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","test:watch":"vitest","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.11.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"*","@blackbelt-technology/pi-dashboard-server":"*","@blackbelt-technology/pi-dashboard-extension":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.2.4_1776250629778_0.19220235961231302","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.2.5","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.2.5","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"2a97b01c24dac5c8fe762440604d8da21c870ac4","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.2.5.tgz","fileCount":226,"integrity":"sha512-LK19NH6eeYGR7HLJqVNzjG/gX7PCmiJ9XhsUgZksFhwzJHPB4u83j4WtmynruAMzdI4ePh4vc+WSlQ3XSuKmTA==","signatures":[{"sig":"MEYCIQC5q828A9Lgj1myHsFs/T3bLi9+5flOFXwcvq17GSez7gIhAKKfJ5/ZcriiEh0bi2CLmmTDFd936sqkLRaI5EiUiS7B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1252246},"main":"packages/server/src/cli.ts","type":"module","gitHead":"d72789122563240c6b57a36675db8e5d71354060","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","test:watch":"vitest","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.11.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"*","@blackbelt-technology/pi-dashboard-server":"*","@blackbelt-technology/pi-dashboard-extension":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.2.5_1776297897565_0.8284709525144847","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.2.6","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.2.6","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"ec58aea73782395bca7feb58f78e2ecdca6b5c66","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.2.6.tgz","fileCount":226,"integrity":"sha512-4ujx8eT2O+1KY5eqoEoW1CCEeKr5EXM44GbWqWvVQagnlaFqYeERQVRHpYDjexJLXKaMuIN35XYVNoIKybmztA==","signatures":[{"sig":"MEYCIQC4SWt04JvrH2OGJJ6DNmZJWDYMmGYA1trigtWOfhofvgIhAPJfG95n9xUAbPwMHtxB6/J/vzK95sdc5zd92QooaCxr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1252246},"main":"packages/server/src/cli.ts","type":"module","gitHead":"dacbd6ae76fe6af5a00626f273f0770db48beecc","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","test:watch":"vitest","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.11.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"*","@blackbelt-technology/pi-dashboard-server":"*","@blackbelt-technology/pi-dashboard-extension":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.2.6_1776300385588_0.6398455431639203","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.2.7","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.2.7","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"ccc081ede7162377eeea7c38e4e0bdf7ad3ab2f6","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.2.7.tgz","fileCount":226,"integrity":"sha512-P9+DtwTq0CYw8x+4lGU0vVTsOT0B7UJOYMibQTBI8esLGJn1jFUubcoI0vE+RXqamsYz/epR/wbz3trqr6fFbA==","signatures":[{"sig":"MEUCICdNRyqGE4Ol210gXCswrRiI4ezjGcS8FQM1GPxBYHdtAiEAwQO01m48D9nwjp+ugUh4LzgEcscBVWwTIyAV3bKpyM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1252246},"main":"packages/server/src/cli.ts","type":"module","gitHead":"bce1bb13bfb49a7a68721b73671907655a06b466","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","test:watch":"vitest","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.11.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"*","@blackbelt-technology/pi-dashboard-server":"*","@blackbelt-technology/pi-dashboard-extension":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.2.7_1776300551545_0.4145898534224435","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.2.8","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.2.8","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"d388135421802bdb2acf66d2de58eac94ddb0492","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.2.8.tgz","fileCount":226,"integrity":"sha512-8Wrorqp8M2G3yLH/MXPl3V72X2FArwtjEZYIJGDDWwaX3xUGXvvj7vpPK3dqbGcfAvy7+9bKWoFjp658WJ4hRA==","signatures":[{"sig":"MEYCIQCGx5eGHUru6srdkSLlzcPjYpCZXngIjCSSdTQk9f45TAIhAIzMj/9MQNGroZS4jpRicn3QticqxAQN3g4EAc+OIKlh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.2.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1252246},"main":"packages/server/src/cli.ts","type":"module","gitHead":"f2e8eef3d24885fb7aa3d6eb4bdf083e890d472b","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","test:watch":"vitest","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.11.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"*","@blackbelt-technology/pi-dashboard-server":"*","@blackbelt-technology/pi-dashboard-extension":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.2.8_1776301131304_0.3745860076547811","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.2.9","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.2.9","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"a913036c528bc9804f0800f5f3cf989f879203b3","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.2.9.tgz","fileCount":226,"integrity":"sha512-VtH5jAy/SdePAobmU4x/e7a0K5riTr5QSIbKKZ3kxFBqdEPCAmfIrDhZxxBPf/fGWH/2W9durYapv0zZYU2niQ==","signatures":[{"sig":"MEUCIQCrLNwn5AQc7zPYxkztuXbIVayqTTibYlKwLCYEIdYN/AIgDW1AHXwpANoQqRZXRqrO5NuFvl3WDwiY0FrstQ5iPjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.2.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1252246},"main":"packages/server/src/cli.ts","type":"module","gitHead":"8e534ebf7edc68f1132be94ee36c78125d1a6b71","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","test:watch":"vitest","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.11.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"*","@blackbelt-technology/pi-dashboard-server":"*","@blackbelt-technology/pi-dashboard-extension":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.2.9_1776301581421_0.14903763113860458","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.3.0","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.3.0","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"ca99b3620f14a1c4957ae621bf3ff4d852d259cb","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.3.0.tgz","fileCount":254,"integrity":"sha512-GBCLVFifiFNX2BR/td3xMS1YfQcTAghJRa/3YhigVRnPjEdjt5WgRaaA/aPRSjX9NmKuK1FS/6ftqCCBckvdkQ==","signatures":[{"sig":"MEUCICg4xFdf+zGkYwssj/HRb9fQbvA4z1cA1225byK0Tk/KAiEAq59M3C1zfVNIgnFZkbjwi1AeZSo2BN1frk3VPO83RfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1505926},"main":"packages/server/src/cli.ts","type":"module","gitHead":"16e9758805edff9a12e52cc08508cc5642a496a2","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.11.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"*","@blackbelt-technology/pi-dashboard-server":"*","@blackbelt-technology/pi-dashboard-extension":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.3.0_1776685857962_0.25546445323847","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.4.0","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.4.0","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"851a38b98901abe1054e8e10e52d81c26b9d5518","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.4.0.tgz","fileCount":372,"integrity":"sha512-qit+tt+LwUgy4JCmLn1GoizcGM0OP8wQ5kzTbsm4Kv9uJSOqByLNZhrby/Qg819wCk3ikTb+YI2KwwMYiMKdAw==","signatures":[{"sig":"MEUCIQCaTFGtRzSwUtSpvqz7jBE6+/LncSOE72lGgd/GzSeBDwIgdu3P59sHrTxMljxmKFIMaSXr1Z2QMgUTv4163lQrbbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2285401},"main":"packages/server/src/cli.ts","type":"module","gitHead":"390a62458d7d38dd76204ff42d7a92e4a98c503a","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest run packages/shared/src/__tests__/bootstrap","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.11.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.4.0","@blackbelt-technology/pi-dashboard-server":"^0.4.0","@blackbelt-technology/pi-dashboard-extension":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.4.0_1777027555802_0.9434697485178094","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.4.1","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.4.1","maintainers":[{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"a4ccfa2e74b69f2fa607109ad58ce425c5695eb0","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.4.1.tgz","fileCount":385,"integrity":"sha512-Wf3fOFXdtj3Ajn7zoZqs8CjLUL8PlqoNklBET3DVLGpTeRkWjbQUcsObZsc/ZZh5Ngyo7c5KPu/ls+7iy5l2tw==","signatures":[{"sig":"MEUCIQC3jGbiBMc4PuimN8TJNw5ePG9zycHhCYNFOUhYToPcMQIgTq5wL+G3qvWQcFEdSu5Hs/xlKMDViA3aGCkpP5FQABw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2372108},"main":"packages/server/src/cli.ts","type":"module","gitHead":"3ec3ac38ca3adf59b316518aca8ab1401a174d6f","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest run packages/shared/src/__tests__/bootstrap","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.4.1","@blackbelt-technology/pi-dashboard-server":"^0.4.1","@blackbelt-technology/pi-dashboard-extension":"^0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.4.1_1777289870603_0.1305814391172022","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.4.2","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.4.2","maintainers":[{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"5df27bd5dea5a04ab2f80bdbf4360ce8f6a4b0a6","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.4.2.tgz","fileCount":440,"integrity":"sha512-V1I6oj2m++UeOhbgPJR54WT3UI3CFRfYbkQcyf9SWyAgMncmXDdHstC2WlvTy6TCEx9tyrLz9+dFjudjIuI+kQ==","signatures":[{"sig":"MEUCIQCdHJVeq+Cak2Lyxv1PMjq6fQwAVvsLWS8KpMrnI5nN2AIgOjljIXw/354tex6j8U5kIJdgSyxVW0XmMbgeBEtU8MM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2888992},"main":"packages/server/src/cli.ts","type":"module","gitHead":"22c4d977dd23ef0759b187087c548454d1349573","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.4.2","@blackbelt-technology/pi-dashboard-server":"^0.4.2","@blackbelt-technology/pi-dashboard-extension":"^0.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.4.2_1777559079641_0.16538097475747526","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.4.3","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.4.3","maintainers":[{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"9b77587b31895da021762320f23f8b5ec331ba63","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.4.3.tgz","fileCount":441,"integrity":"sha512-OSeA+nUeR3fb0CDzVnfWKOba88kCOtBMbB7nH3qhd/xQ37y4z/zRVQLmupNOyNlOPNv0bJx8azVOlfvJHgw4/g==","signatures":[{"sig":"MEYCIQD7JufFHHTgk76SbMQgK6M/KQ0IydzQ9kKMR+JBmBBLgQIhAI6cjdGMi3s5BQQM9aPtb1Puoy55ecOdA3j42zyiY2ZE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2894713},"main":"packages/server/src/cli.ts","type":"module","gitHead":"52a4c85b74ec62f0af2635593cb4c0049d2b6308","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.4.3","@blackbelt-technology/pi-dashboard-server":"^0.4.3","@blackbelt-technology/pi-dashboard-extension":"^0.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.4.3_1777561632959_0.5556755201221788","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.4.4","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.4.4","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"385294177662a3d02887e0485c6f4d0b86eabcbb","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.4.4.tgz","fileCount":441,"integrity":"sha512-JCvD6gQRrZaBaG2uB4C7iOTmijVKyKsepm3f3dtHPx+EiMMiKA7JGh5c2i46xRAJ0Bxn8ZBALewEdY0rfBMhNQ==","signatures":[{"sig":"MEUCIGoN2A21zxrMQrpi0Ul2g0jQ/HDdfZiABE6PXwCKVkMvAiEAlfZTLnfq4BypQtw8d3UvFvPUPeGUNTzM6FuY1VOYyBs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2894716},"main":"packages/server/src/cli.ts","type":"module","gitHead":"fe98777dc15a361527ccbd8affd384f083f52dc7","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.4.4","@blackbelt-technology/pi-dashboard-server":"^0.4.4","@blackbelt-technology/pi-dashboard-extension":"^0.4.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.4.4_1777571844023_0.13175200158343503","host":"s3://npm-registry-packages-npm-production"}},"0.4.5-rc.1":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.4.5-rc.1","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.4.5-rc.1","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"9a233554be1b3df91cb8f591eafebfc2a383bc37","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.4.5-rc.1.tgz","fileCount":455,"integrity":"sha512-XKxPWBu5c+VoxPHdYeybg5pNaDoXdjo0O6SIblL3xpwzReVnGZ6QAzWQyn16aWc5WyKKeYp9chNvPio+vgXLbQ==","signatures":[{"sig":"MEUCIQDpEKBgfpSHngei4vlIHm4S8P8gGpye1Svh98O0nRB7hQIgYqKLFC7zcyN/7w11JmzSiD/ewFi+BlWbn5qv1OKoQ3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.4.5-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3050754},"main":"packages/server/src/cli.ts","type":"module","gitHead":"32ddcd3eb4d3825bc1053bec5eb888cbc92e733b","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.4.5-rc.1","@blackbelt-technology/pi-dashboard-server":"^0.4.5-rc.1","@blackbelt-technology/pi-dashboard-extension":"^0.4.5-rc.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.4.5-rc.1_1777661522866_0.8699790063374704","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.4.5","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.4.5","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"10fe52c224a88e37a8d285b1b5729a49af5e7875","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.4.5.tgz","fileCount":455,"integrity":"sha512-pONtOk29GisaWL8ZXUqcO5Prn7PGIHVfEzq0730Jlw0qxmXCC4gMdOpExg0iNXdWw13cRkaTKoT38svRm0BwbA==","signatures":[{"sig":"MEQCIBHc9SdZcblTBlIMyLkdKIvznSYpyEurPFBYtXmGMt2wAiBEOOO2EHdyXYB3WW8ajUg+JdDRLmyUe4GvcgWF1VSqdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3050699},"main":"packages/server/src/cli.ts","type":"module","gitHead":"c048dc6fa6a452b1003e30266533b50afed08382","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.4.5","@blackbelt-technology/pi-dashboard-server":"^0.4.5","@blackbelt-technology/pi-dashboard-extension":"^0.4.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.4.5_1777662532719_0.6150728770465406","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-test-darwin-x64.1":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.0.0-test-darwin-x64.1","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.0.0-test-darwin-x64.1","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"fa303d37a08a62d77e97c2ab339244dc866ead51","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.0.0-test-darwin-x64.1.tgz","fileCount":461,"integrity":"sha512-7cfSGRO8HU/QbrQzkMg2xEfR6xQSPbPPbniZfkyl2RbcCNXkyy1OX7xwfESbtsAmmpDWY8KcVN9KT9EJsu9Otw==","signatures":[{"sig":"MEYCIQCZ4oAkYVjaD6h4GXtz+suHivu6S4iI6YSNg07n6zss8gIhALanIBG3dX6DLHNpcMxEZ3tSuoEuolFr5txAyqumloE2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.0.0-test-darwin-x64.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3106661},"main":"packages/server/src/cli.ts","type":"module","gitHead":"a91af1f656c359b619456a97cfdae919a59c0fdf","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.0.0-test-darwin-x64.1","@blackbelt-technology/pi-dashboard-server":"^0.0.0-test-darwin-x64.1","@blackbelt-technology/pi-dashboard-extension":"^0.0.0-test-darwin-x64.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.0.0-test-darwin-x64.1_1777742516244_0.06407779137641212","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-test-darwin-x64.2":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.0.0-test-darwin-x64.2","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.0.0-test-darwin-x64.2","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"1271caad98fe67f64c585863f22c3684efbe77f7","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.0.0-test-darwin-x64.2.tgz","fileCount":461,"integrity":"sha512-w/GV7cq95oHvAO5s7B6xyhW5HlWvFbMPXLKn1xQWSPhrzKCWkTtmUiUARjgQD1JHCtKkmS0OHV3NdpaGp77eiQ==","signatures":[{"sig":"MEUCIQD+ZOVo0cVuGBlA6OWFTwYhmRRYNadWo4gy70ucbMy3awIgO+MxLQdT7kYVEb3oRwSPRU6uRxKVeqR5/VqxGONm2aA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.0.0-test-darwin-x64.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3107426},"main":"packages/server/src/cli.ts","type":"module","gitHead":"cc513647aba2b542dc11507437ea3fa013742cdf","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.0.0-test-darwin-x64.2","@blackbelt-technology/pi-dashboard-server":"^0.0.0-test-darwin-x64.2","@blackbelt-technology/pi-dashboard-extension":"^0.0.0-test-darwin-x64.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.0.0-test-darwin-x64.2_1777744417662_0.862494698697722","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-test-darwin-x64.3":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.0.0-test-darwin-x64.3","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.0.0-test-darwin-x64.3","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"70cae47ef6904df4ec693f72b755bac86e4c1fdf","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.0.0-test-darwin-x64.3.tgz","fileCount":461,"integrity":"sha512-jrf4ywfF7oqzrP6diHk0BOBdyiffcb7t1dt/6rrAJAahq4vmzR5DgPBznxDmLALr8OO+DgTT+VbbCgiqqftvXg==","signatures":[{"sig":"MEQCIDAfZunJrBd+BtYJYTqtddL9PSAoZGzPTuPJUqqBZNp7AiBIOs3VYxd2/KfZO5eCS/Loqawa7Jv5xGDMTqZRPlvB5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.0.0-test-darwin-x64.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3107426},"main":"packages/server/src/cli.ts","type":"module","gitHead":"9e8ed87fdd63e1059febfefd1ea20a93c9ca5282","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.0.0-test-darwin-x64.3","@blackbelt-technology/pi-dashboard-server":"^0.0.0-test-darwin-x64.3","@blackbelt-technology/pi-dashboard-extension":"^0.0.0-test-darwin-x64.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.0.0-test-darwin-x64.3_1777745900830_0.3875302374179854","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.4.6","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.4.6","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"b3e5484fce2ba2f73af5d11a0b08b06a20f0a297","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.4.6.tgz","fileCount":461,"integrity":"sha512-x1XlBqx9cK5Uq3o+bPvC27BGEhfe7VZjcLvhxvTknZmm5TFRMaPP21ZIs/WYK6QyPTIjdnnvFyOUIF7XVHqS+Q==","signatures":[{"sig":"MEYCIQDd2JT16thd7c7qar9LF3V8UAF4S8H2DMaIdyYugthLOgIhAOV97BZJGTvbHC1BYvFCjdBFahRirHB3l31DKlwT1pLK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3108307},"main":"packages/server/src/cli.ts","type":"module","gitHead":"0dd9bba1feb5482240c74e8a1a26471dda831109","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.4.6","@blackbelt-technology/pi-dashboard-server":"^0.4.6","@blackbelt-technology/pi-dashboard-extension":"^0.4.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.4.6_1777751917951_0.8690174658781773","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.5.0","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.5.0","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"ddb8f3e98e5f491a34e1676ffeb4fff416b6970f","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.5.0.tgz","fileCount":516,"integrity":"sha512-mrcJjudyUmBmBlnl49qtT4lGQyMCDIwPZAr5Qx7qb6dnND93NwodmsmjTKBFSOCz/+kVpQlmHtCFeoIU16g5Rw==","signatures":[{"sig":"MEUCIQCRMbwHu4V2kfj6RmA23WMySXs0fBp0ud5kvFrxcBiKAgIgXLj/Om9MPEAEvr/E1dXDmMinSYZEyP1uDg3ARqnnChs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3418424},"main":"packages/server/src/cli.ts","type":"module","engines":{"node":">=22.12.0 <25"},"gitHead":"cca7c539436760ebb3beec3e319c75d87fc827db","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","electron:zip-windows":"bash packages/electron/scripts/build-windows-zip.sh","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap","electron:bundle-server":"node packages/electron/scripts/bundle-server.mjs","electron:zip-windows-docker":"bash packages/electron/scripts/build-installer.sh --windows-zip","electron:bundle-server:source-only":"node packages/electron/scripts/bundle-server.mjs --source-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.5.0","@blackbelt-technology/pi-dashboard-server":"^0.5.0","@blackbelt-technology/pi-dashboard-extension":"^0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@oh-my-pi/pi-ai":"*","@oh-my-pi/pi-tui":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@oh-my-pi/pi-coding-agent":"*","@mariozechner/pi-coding-agent":"*"},"optionalDependencies":{"appdmg":"^0.6.6"},"peerDependenciesMeta":{"typebox":{"optional":true},"@oh-my-pi/pi-ai":{"optional":true},"@oh-my-pi/pi-tui":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@oh-my-pi/pi-coding-agent":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.5.0_1778028452057_0.08515360621337575","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.5.1","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.5.1","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/src/cli.ts"},"dist":{"shasum":"ad99ccdde920ac7c3f5ad6c5237af604074ea03d","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.5.1.tgz","fileCount":539,"integrity":"sha512-f8b4e2LbmO0ZQKQOPjOzbcf35RwYluOs0QfyT/rV3PbR0bcXiRPK3VLeaw1u3FvGjcEGeReSlUq1zA7Sp/2mDA==","signatures":[{"sig":"MEUCIGopGQp6HVAvPJyOhKEIdhRma2kSTuaCSOrQi8m+PuSbAiEAiX5V75fHjLzu/HSph2lXVusDG85b/khhyaPcJsyRw1I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3639772},"main":"packages/server/src/cli.ts","type":"module","engines":{"node":">=22.12.0 <25"},"gitHead":"99d8a74e59a33393fb4830b659c65badad3375fc","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","electron:zip-windows":"bash packages/electron/scripts/build-windows-zip.sh","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap","electron:bundle-server":"node packages/electron/scripts/bundle-server.mjs","electron:zip-windows-docker":"bash packages/electron/scripts/build-installer.sh --windows-zip","electron:bundle-server:source-only":"node packages/electron/scripts/bundle-server.mjs --source-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.14.1","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.5.1","@blackbelt-technology/pi-dashboard-server":"^0.5.1","@blackbelt-technology/pi-dashboard-extension":"^0.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@mariozechner/pi-coding-agent":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"appdmg":"^0.6.6"},"peerDependenciesMeta":{"typebox":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.5.1_1778269046382_0.5210225193281877","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.5.2","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.5.2","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/bin/pi-dashboard.mjs"},"dist":{"shasum":"6935c80e191ec38eeff488eec89d5c76dc9fed19","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.5.2.tgz","fileCount":608,"integrity":"sha512-ZxSLGeq9Yl6sO48aXtM0r3iz//o1PQmDEvootCAx/wr4pvN0FeVCWlisLv1pXeCqs725l9X0u48jJiXfKWGg0Q==","signatures":[{"sig":"MEUCIQDhvsHawXFy/qgvDzPRTwB1mrC6wuNEGhYP0+Ckucyl0wIgRFGaWHRknGXq+wn+07zFvUmwJ/K3jprnlyGEVwlFY14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4146867},"main":"packages/server/src/cli.ts","type":"module","engines":{"node":">=22.12.0 <25"},"gitHead":"1e26476691ed7eab6936a36c0d39fd4a51d55363","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","electron:zip-windows":"bash packages/electron/scripts/build-windows-zip.sh","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap","electron:bundle-server":"node packages/electron/scripts/bundle-server.mjs","electron:zip-windows-docker":"bash packages/electron/scripts/build-installer.sh --windows-zip","electron:bundle-server:source-only":"node packages/electron/scripts/bundle-server.mjs --source-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"deprecated":"Use 0.5.3 — Electron installers were not built for 0.5.2 due to a missing tsx devDependency (fixed in 0.5.3).","repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.14.1","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.5.2","@blackbelt-technology/pi-dashboard-server":"^0.5.2","@blackbelt-technology/pi-dashboard-extension":"^0.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@mariozechner/pi-coding-agent":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"appdmg":"^0.6.6"},"peerDependenciesMeta":{"typebox":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.5.2_1778505730058_0.4284571534574544","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.5.3","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.5.3","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/bin/pi-dashboard.mjs"},"dist":{"shasum":"496de74146150b4ba1437b7d4679860ca4c5452c","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.5.3.tgz","fileCount":608,"integrity":"sha512-cNutGeILT75BtvVpW1TeBqprYuvTZqmV8hMsICcJNFu8s7Tc2rfD9vfH6VFsMy7aMx0PM5dFey9hanDsIRtHKg==","signatures":[{"sig":"MEQCIDG6T6DvwadPi026XB0J8g4Ln+IYVovLSiOOiVWhQPcmAiBtWqtzTVmWUsneMiGn/w3RdxAZEJU5IDupr07PFzbqlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4146889},"main":"packages/server/src/cli.ts","type":"module","engines":{"node":">=22.12.0 <25"},"gitHead":"f22728f095e8396a8c08a8b9a9dfdb808f8249e0","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","test:bootstrap":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run packages/shared/src/__tests__/bootstrap","electron:zip-windows":"bash packages/electron/scripts/build-windows-zip.sh","test:bootstrap:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) vitest packages/shared/src/__tests__/bootstrap","electron:bundle-server":"node packages/electron/scripts/bundle-server.mjs","electron:zip-windows-docker":"bash packages/electron/scripts/build-installer.sh --windows-zip","electron:bundle-server:source-only":"node packages/electron/scripts/bundle-server.mjs --source-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:86126ccb-2930-47de-b559-fc8b9a18547e"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.14.1","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.5.3","@blackbelt-technology/pi-dashboard-server":"^0.5.3","@blackbelt-technology/pi-dashboard-extension":"^0.5.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@mariozechner/pi-coding-agent":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"appdmg":"^0.6.6"},"peerDependenciesMeta":{"typebox":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.5.3_1778511710819_0.5527405171777326","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.5.4","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.5.4","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/bin/pi-dashboard.mjs"},"dist":{"shasum":"6e78135dfa49040b7507744e5146541dbe438134","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.5.4.tgz","fileCount":601,"integrity":"sha512-01f06UWhJ0dRJELOVgP3cixQBufod84ob2AyKMeX0TY+JnfaQFUeyccGtyDgXviY5istrtHzfzxUf4RVuFMQkg==","signatures":[{"sig":"MEYCIQCxXSEUb+AfCZgf1DIw274rbOZ5tP5nScLSmN5UB5fFxQIhAN8vpELPE97xxDhaGag5QNncaxCe4uWX2s+kuPTLHcln","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4286143},"main":"packages/server/src/cli.ts","type":"module","engines":{"node":">=22.12.0 <25"},"gitHead":"f3daf2a911bfbadb903f85c16c0ab9ab3a54af64","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","link:local":"npm link --workspace=@blackbelt-technology/pi-dashboard-server","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","postinstall":"node scripts/maybe-patch-package.cjs && node packages/server/scripts/fix-pty-permissions.cjs","screenshots":"npm --prefix site run screenshots","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","unlink:local":"npm rm -g @blackbelt-technology/pi-dashboard-server","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","electron:zip-windows":"bash packages/electron/scripts/build-windows-zip.sh","electron:bundle-server":"node packages/electron/scripts/bundle-server.mjs","generate:plugin-registry":"node scripts/generate-plugin-registry.mjs","electron:zip-windows-docker":"bash packages/electron/scripts/build-installer.sh --windows-zip","electron:bundle-server:source-only":"node packages/electron/scripts/bundle-server.mjs --source-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a0404541-3102-4611-b4d8-353dc8d9b7f0"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.15.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.5.4","@blackbelt-technology/pi-dashboard-server":"^0.5.4","@blackbelt-technology/pi-dashboard-extension":"^0.5.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0","patch-package":"^8.0.1"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@mariozechner/pi-coding-agent":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"appdmg":"^0.6.6"},"peerDependenciesMeta":{"typebox":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.5.4_1779785402878_0.34895990039855174","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.6.0","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.6.0","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/bin/pi-dashboard.mjs"},"dist":{"shasum":"153cbe3a21887cee2bd0f55ed8da82547b07149b","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.6.0.tgz","fileCount":1173,"integrity":"sha512-AH62aArmAXdTBkID4MCQluQKDfPSWPBJYRvmpE1x055i1frBI7FQjVuakPxwinSGUC7BkXiC2Gopxdw3cA7ecQ==","signatures":[{"sig":"MEUCIAS1FlmzarMfEV9yDa/sNkVk2aVZiqunFcuIl1u0MdrHAiEAwmIRflmbpN3C5X6Tb3+tsE09vmlT+jnlnjkvjW1wkJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7274527},"main":"packages/server/src/cli.ts","type":"module","engines":{"node":">=22.19.0 <26"},"gitHead":"53c737b1bae56fcd8e02a93ae921b83de19df343","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","test:e2e":"playwright test","i18n:lint":"node scripts/i18n-lint.mjs","link:local":"npm link --workspace=@blackbelt-technology/pi-dashboard-server","lint:biome":"biome lint .","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","fix:changed":"biome check --changed --write","i18n:parity":"node scripts/i18n-parity.mjs","postinstall":"node scripts/maybe-patch-package.cjs && node scripts/fix-pty-permissions.cjs","pretest:e2e":"node -e \"process.env.PW_CHANNEL||require('child_process').execSync('playwright install chromium',{stdio:'inherit'})\"","screenshots":"npm --prefix site run screenshots","test:e2e:ui":"playwright test --ui","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","unlink:local":"npm rm -g @blackbelt-technology/pi-dashboard-server","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","test:e2e:perf":"PW_PERF=1 PW_CHANNEL=chrome playwright test chat-render-perf","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","pretest:e2e:ui":"node -e \"process.env.PW_CHANNEL||require('child_process').execSync('playwright install chromium',{stdio:'inherit'})\"","quality:report":"biome lint . --reporter=github","quality:changed":"biome check --changed --error-on-warnings --write && tsc --noEmit && npm test","test:e2e:chrome":"PW_CHANNEL=chrome playwright test","test:e2e:electron":"playwright test --config playwright.electron.config.ts","electron:zip-windows":"bash packages/electron/scripts/build-windows-zip.sh","pretest:e2e:electron":"node -e \"const fs=require('fs');if(process.env.PW_ELECTRON_BINARY||fs.existsSync('packages/electron/out')){process.exit(0)}require('child_process').execSync('npm run -w packages/electron package',{stdio:'inherit'})\"","electron:bundle-server":"node packages/electron/scripts/bundle-server.mjs","generate:plugin-registry":"node scripts/generate-plugin-registry.mjs","electron:zip-windows-docker":"bash packages/electron/scripts/build-installer.sh --windows-zip","electron:bundle-server:source-only":"node packages/electron/scripts/bundle-server.mjs --source-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a0404541-3102-4611-b4d8-353dc8d9b7f0"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.12.1","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.6.0","@blackbelt-technology/pi-dashboard-server":"^0.6.0","@blackbelt-technology/pi-dashboard-extension":"^0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsqr":"^1.4.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0","patch-package":"^8.0.1","@biomejs/biome":"2.5.1","@playwright/test":"1.61.1","@earendil-works/pi-ai":"^0.75.5"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@mariozechner/pi-coding-agent":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"appdmg":"^0.6.6"},"peerDependenciesMeta":{"typebox":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.6.0_1784567324085_0.326964200820441","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.6.1","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.6.1","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/bin/pi-dashboard.mjs"},"dist":{"shasum":"1a594773d6d7364587a587ef4a791c08c85ee136","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.6.1.tgz","fileCount":1173,"integrity":"sha512-YUvZF+pHOr8jZVCLFfiPkbyxH4Yumawq9fz5vSEnfi2zJ6hqVywbauT6oeNhzOeCBiF3TMVM2d9Zl9DgfUHmyA==","signatures":[{"sig":"MEQCIGexDNPxUqZbFrFQVXWxt2TL222AKFxOauJ21H02JeonAiBw8g8uhAUvrxSSnvyLP0Gte4BnzyJxgtwPjrAWSKxtpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7274527},"main":"packages/server/src/cli.ts","type":"module","engines":{"node":">=22.19.0 <26"},"gitHead":"88a0cf3cc7d7c7c4e44eb61df3cceff19ed919ad","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","test:e2e":"playwright test","i18n:lint":"node scripts/i18n-lint.mjs","link:local":"npm link --workspace=@blackbelt-technology/pi-dashboard-server","lint:biome":"biome lint .","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","fix:changed":"biome check --changed --write","i18n:parity":"node scripts/i18n-parity.mjs","postinstall":"node scripts/maybe-patch-package.cjs && node scripts/fix-pty-permissions.cjs","pretest:e2e":"node -e \"process.env.PW_CHANNEL||require('child_process').execSync('playwright install chromium',{stdio:'inherit'})\"","screenshots":"npm --prefix site run screenshots","test:e2e:ui":"playwright test --ui","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","unlink:local":"npm rm -g @blackbelt-technology/pi-dashboard-server","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","test:e2e:perf":"PW_PERF=1 PW_CHANNEL=chrome playwright test chat-render-perf","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","pretest:e2e:ui":"node -e \"process.env.PW_CHANNEL||require('child_process').execSync('playwright install chromium',{stdio:'inherit'})\"","quality:report":"biome lint . --reporter=github","quality:changed":"biome check --changed --error-on-warnings --write && tsc --noEmit && npm test","test:e2e:chrome":"PW_CHANNEL=chrome playwright test","test:e2e:electron":"playwright test --config playwright.electron.config.ts","electron:zip-windows":"bash packages/electron/scripts/build-windows-zip.sh","pretest:e2e:electron":"node -e \"const fs=require('fs');if(process.env.PW_ELECTRON_BINARY||fs.existsSync('packages/electron/out')){process.exit(0)}require('child_process').execSync('npm run -w packages/electron package',{stdio:'inherit'})\"","electron:bundle-server":"node packages/electron/scripts/bundle-server.mjs","generate:plugin-registry":"node scripts/generate-plugin-registry.mjs","electron:zip-windows-docker":"bash packages/electron/scripts/build-installer.sh --windows-zip","electron:bundle-server:source-only":"node packages/electron/scripts/bundle-server.mjs --source-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a0404541-3102-4611-b4d8-353dc8d9b7f0"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.12.1","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.6.1","@blackbelt-technology/pi-dashboard-server":"^0.6.1","@blackbelt-technology/pi-dashboard-extension":"^0.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsqr":"^1.4.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0","patch-package":"^8.0.1","@biomejs/biome":"2.5.1","@playwright/test":"1.61.1","@earendil-works/pi-ai":"^0.75.5"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@mariozechner/pi-coding-agent":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"appdmg":"^0.6.6"},"peerDependenciesMeta":{"typebox":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.6.1_1784571796661_0.1377165528711488","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.7.0","keywords":["pi-package"],"license":"MIT","_id":"@blackbelt-technology/pi-agent-dashboard@0.7.0","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"pi":{"skills":["packages/extension/.pi/skills/pi-dashboard"],"extensions":["packages/extension/src/bridge.ts"]},"bin":{"pi-dashboard":"packages/server/bin/pi-dashboard.mjs"},"dist":{"shasum":"30f02306f08fb68289cd34d0224a6b09687438a6","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.7.0.tgz","fileCount":1211,"integrity":"sha512-lHsFRa+E9+GLj5ICPlwckG5gyITzNQ2dcpR4L+I8wGzFdL+TgmcO3ajiycXoHZOd0otiO9XXr9naJbbpB87ovQ==","signatures":[{"sig":"MEUCIQDXEzSUoKMaYz4wLCYE0T/hw3QKuyxTwqRB1GTK49eWcAIgTxyf97ChWTS+lXy66+7Dq6zsZ2l01OGkQjek3XnNhT4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7525771},"main":"packages/server/src/cli.ts","type":"module","engines":{"node":">=22.19.0 <26"},"gitHead":"9203d6a89f1b81c516e9351072ee5cb4c6579e0a","scripts":{"dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","lint":"tsc --noEmit","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","reload":"./scripts/reload-all.sh","site:dev":"npm --prefix site run dev","test:e2e":"playwright test","i18n:lint":"node scripts/i18n-lint.mjs","link:local":"npm link --workspace=@blackbelt-technology/pi-dashboard-server","lint:biome":"biome lint .","site:build":"npm --prefix site run build","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","fix:changed":"biome check --changed --write","i18n:parity":"node scripts/i18n-parity.mjs","postinstall":"node scripts/maybe-patch-package.cjs && node scripts/fix-pty-permissions.cjs","pretest:e2e":"node -e \"process.env.PW_CHANNEL||require('child_process').execSync('playwright install chromium',{stdio:'inherit'})\"","screenshots":"npm --prefix site run screenshots","test:e2e:ui":"playwright test --ui","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","reload:check":"./scripts/reload-all.sh --check","site:preview":"npm --prefix site run preview","unlink:local":"npm rm -g @blackbelt-technology/pi-dashboard-server","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","test:e2e:perf":"PW_PERF=1 PW_CHANNEL=chrome playwright test chat-render-perf","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","pretest:e2e:ui":"node -e \"process.env.PW_CHANNEL||require('child_process').execSync('playwright install chromium',{stdio:'inherit'})\"","quality:report":"biome lint . --reporter=github","quality:changed":"biome check --changed --error-on-warnings --write && tsc --noEmit && npm test","test:e2e:chrome":"PW_CHANNEL=chrome playwright test","test:e2e:electron":"playwright test --config playwright.electron.config.ts","electron:zip-windows":"bash packages/electron/scripts/build-windows-zip.sh","pretest:e2e:electron":"node -e \"const fs=require('fs');if(process.env.PW_ELECTRON_BINARY||fs.existsSync('packages/electron/out')){process.exit(0)}require('child_process').execSync('npm run -w packages/electron package',{stdio:'inherit'})\"","electron:bundle-server":"node packages/electron/scripts/bundle-server.mjs","generate:plugin-registry":"node scripts/generate-plugin-registry.mjs","electron:zip-windows-docker":"bash packages/electron/scripts/build-installer.sh --windows-zip","electron:bundle-server:source-only":"node packages/electron/scripts/bundle-server.mjs --source-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a0404541-3102-4611-b4d8-353dc8d9b7f0"}},"repository":{"url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"12.0.1","description":"Web dashboard for monitoring and interacting with pi agent sessions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@blackbelt-technology/pi-dashboard-web":"^0.7.0","@blackbelt-technology/pi-dashboard-server":"^0.7.0","@blackbelt-technology/pi-dashboard-extension":"^0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.15.1","devDependencies":{"tsx":"^4.21.0","jsqr":"^1.4.0","jsdom":"^29.0.2","vitest":"^4.0.0","typescript":"^5.7.0","patch-package":"^8.0.1","@biomejs/biome":"2.5.1","@playwright/test":"1.61.1","@earendil-works/pi-ai":"^0.75.5","@blackbelt-technology/pi-dashboard-shared":"^0.7.0"},"peerDependencies":{"typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@mariozechner/pi-coding-agent":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"appdmg":"^0.6.6"},"peerDependenciesMeta":{"typebox":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-agent-dashboard_0.7.0_1784899212114_0.20102935871283645","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@blackbelt-technology/pi-agent-dashboard","version":"0.8.0","description":"Web dashboard for monitoring and interacting with pi agent sessions","repository":{"type":"git","url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git"},"license":"MIT","packageManager":"pnpm@11.15.1","publishConfig":{"access":"public"},"keywords":["pi-package"],"type":"module","workspaces":["packages/*"],"main":"packages/server/src/cli.ts","bin":{"pi-dashboard":"packages/server/bin/pi-dashboard.mjs"},"pi":{"extensions":["packages/extension/src/bridge.ts"],"skills":["packages/extension/.pi/skills/pi-dashboard"],"image":"https://raw.githubusercontent.com/BlackBeltTechnology/pi-agent-dashboard/develop/docs/cover.png?v=0.7.0"},"scripts":{"postinstall":"node scripts/maybe-patch-package.cjs && node scripts/fix-pty-permissions.cjs","dev":"npm run dev --workspace=@blackbelt-technology/pi-dashboard-web","build":"npm run build --workspace=@blackbelt-technology/pi-dashboard-web","test":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run","test:watch":"HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest","test:ci-scenarios":"RUN_CI_SCENARIOS=1 HOME=$(mktemp -d -t pi-test-XXXXXX) NODE_OPTIONS=\"--localstorage-file=$(mktemp -t pi-test-ls-XXXXXX)\" vitest run --project scripts","spec:validate":"openspec validate --specs --no-interactive","generate:plugin-registry":"node scripts/generate-plugin-registry.mjs","i18n:parity":"node scripts/i18n-parity.mjs","i18n:lint":"node scripts/i18n-lint.mjs","lint":"tsc --noEmit","lint:e2e":"tsc -p tests/tsconfig.json --noEmit && node scripts/check-e2e-fixture-import.mjs","lint:biome":"biome lint .","fix:changed":"biome check --changed --write","quality:changed":"biome check --changed --error-on-warnings --write && tsc --noEmit && npm run lint:e2e && node scripts/z-layer-lint.mjs && npm test","quality:report":"biome lint . --reporter=github","reload":"./scripts/reload-all.sh","reload:check":"./scripts/reload-all.sh --check","link:local":"npm link --workspace=@blackbelt-technology/pi-dashboard-server","unlink:local":"npm rm -g @blackbelt-technology/pi-dashboard-server","electron:dev":"npm run start:dev --workspace=@blackbelt-technology/pi-dashboard-electron","electron:start":"npm run start --workspace=@blackbelt-technology/pi-dashboard-electron","electron:make":"npm run make --workspace=@blackbelt-technology/pi-dashboard-electron","electron:build":"bash packages/electron/scripts/build-installer.sh","electron:zip-windows":"bash packages/electron/scripts/build-windows-zip.sh","electron:zip-windows-docker":"bash packages/electron/scripts/build-installer.sh --windows-zip","electron:bundle-server":"node packages/electron/scripts/bundle-server.mjs","electron:bundle-server:source-only":"node packages/electron/scripts/bundle-server.mjs --source-only","site:dev":"npm --prefix site run dev","site:build":"npm --prefix site run build","site:preview":"npm --prefix site run preview","screenshots":"npm --prefix site run screenshots","pretest:e2e":"node -e \"process.env.PW_CHANNEL||require('child_process').execSync('playwright install chromium',{stdio:'inherit'})\"","test:e2e":"playwright test","pretest:e2e:ui":"node -e \"process.env.PW_CHANNEL||require('child_process').execSync('playwright install chromium',{stdio:'inherit'})\"","test:e2e:ui":"playwright test --ui","test:e2e:chrome":"PW_CHANNEL=chrome playwright test","test:e2e:reconnect":"PI_E2E_INDEPENDENT_SESSION=1 playwright test faux-ask","test:e2e:perf":"PW_PERF=1 PW_CHANNEL=chrome playwright test chat-render-perf","pretest:e2e:electron":"node -e \"const fs=require('fs');if(process.env.PW_ELECTRON_BINARY||fs.existsSync('packages/electron/out')){process.exit(0)}require('child_process').execSync('npm run -w packages/electron package',{stdio:'inherit'})\"","test:e2e:electron":"playwright test --config playwright.electron.config.ts","knip":"knip --no-progress","knip:ratchet":"node scripts/knip-ratchet.mjs","z-layer:lint":"node scripts/z-layer-lint.mjs","knip:config":"node scripts/knip-config.mjs"},"engines":{"node":">=22.19.0 <27"},"dependencies":{"@blackbelt-technology/pi-dashboard-extension":"^0.8.0","@blackbelt-technology/pi-dashboard-server":"^0.8.0","@blackbelt-technology/pi-dashboard-web":"^0.8.0"},"optionalDependencies":{"appdmg":"^0.6.6"},"devDependencies":{"@biomejs/biome":"2.5.1","@blackbelt-technology/pi-dashboard-bus-client":"^0.8.0","@blackbelt-technology/pi-dashboard-shared":"^0.8.0","@earendil-works/pi-ai":"^0.75.5","@playwright/test":"1.61.1","acorn":"^8.17.0","jiti":"^2.7.0","jsdom":"^29.0.2","jsqr":"^1.4.0","knip":"^6.32.2","patch-package":"^8.0.1","semver":"^7.7.1","tsx":"^4.21.0","typescript":"^5.7.0","vitest":"^4.0.0","yaml":"^2.9.0"},"peerDependencies":{"@earendil-works/pi-ai":">=0.75.5","@earendil-works/pi-coding-agent":">=0.80.10","@earendil-works/pi-tui":">=0.80.10","@mariozechner/pi-ai":">=0.73.1","@mariozechner/pi-coding-agent":">=0.73.1","@mariozechner/pi-tui":">=0.73.1","typebox":">=1.3.6"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@mariozechner/pi-coding-agent":{"optional":true},"@mariozechner/pi-ai":{"optional":true},"@mariozechner/pi-tui":{"optional":true},"typebox":{"optional":true}},"gitHead":"9373dfa416660a285475febc0383608fe14270b1","_id":"@blackbelt-technology/pi-agent-dashboard@0.8.0","bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","_nodeVersion":"24.19.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-OJFGKEU7y10L53Pbb61MpVrccOvGOVLXAGSRAVEpVhS2c1GHGMu+hvhIFzk5jL7kl1+3J79bIce2OHwmKX+5oQ==","shasum":"5fa57363fb2bd93d9d877d161f17b66f910b677d","tarball":"https://registry.npmjs.org/@blackbelt-technology/pi-agent-dashboard/-/pi-agent-dashboard-0.8.0.tgz","fileCount":1536,"unpackedSize":10509331,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blackbelt-technology%2fpi-agent-dashboard@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGWb3/FyNJovWUka+f34hnqW2WoLy7DInzJSC7C+f01tAiEA9kCQvQOVd/wy0jXfXoZQSFyqZ9xebL2zgNmiNfeS2/I="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a0404541-3102-4611-b4d8-353dc8d9b7f0"}},"directories":{},"maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-agent-dashboard_0.8.0_1787746098351_0.6198573914183245"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-13T03:14:10.960Z","modified":"2026-08-26T12:08:19.185Z","0.2.0":"2026-04-13T03:14:11.264Z","0.2.1":"2026-04-13T16:33:12.662Z","0.2.2":"2026-04-14T19:17:44.465Z","0.2.3":"2026-04-15T07:00:29.606Z","0.2.4":"2026-04-15T10:57:10.002Z","0.2.5":"2026-04-16T00:04:57.751Z","0.2.6":"2026-04-16T00:46:25.777Z","0.2.7":"2026-04-16T00:49:11.757Z","0.2.8":"2026-04-16T00:58:51.552Z","0.2.9":"2026-04-16T01:06:21.605Z","0.3.0":"2026-04-20T11:50:58.172Z","0.4.0":"2026-04-24T10:45:56.011Z","0.4.1":"2026-04-27T11:37:50.797Z","0.4.2":"2026-04-30T14:24:39.837Z","0.4.3":"2026-04-30T15:07:13.178Z","0.4.4":"2026-04-30T17:57:24.251Z","0.4.5-rc.1":"2026-05-01T18:52:03.065Z","0.4.5":"2026-05-01T19:08:52.893Z","0.0.0-test-darwin-x64.1":"2026-05-02T17:21:56.483Z","0.0.0-test-darwin-x64.2":"2026-05-02T17:53:37.831Z","0.0.0-test-darwin-x64.3":"2026-05-02T18:18:21.030Z","0.4.6":"2026-05-02T19:58:38.192Z","0.5.0":"2026-05-06T00:47:32.280Z","0.5.1":"2026-05-08T19:37:26.575Z","0.5.2":"2026-05-11T13:22:10.457Z","0.5.3":"2026-05-11T15:01:51.048Z","0.5.4":"2026-05-26T08:50:03.192Z","0.6.0":"2026-07-20T17:08:44.295Z","0.6.1":"2026-07-20T18:23:16.966Z","0.7.0":"2026-07-24T13:20:12.345Z","0.8.0":"2026-08-26T12:08:18.833Z"},"bugs":{"url":"https://github.com/BlackBeltTechnology/pi-agent-dashboard/issues"},"license":"MIT","homepage":"https://github.com/BlackBeltTechnology/pi-agent-dashboard#readme","keywords":["pi-package"],"repository":{"type":"git","url":"git+https://github.com/BlackBeltTechnology/pi-agent-dashboard.git"},"description":"Web dashboard for monitoring and interacting with pi agent sessions","maintainers":[{"name":"mbotond","email":"botond.molnar@blackbelt.hu"},{"name":"mrbence","email":"dbence10@gmail.com"},{"name":"robertcsakany","email":"robert.csakany@blackbelt.hu"},{"name":"norbert.herczeg","email":"norbert.herczeg@blackbelt.hu"}],"readme":"# PI Dashboard\n\n<p align=\"center\">\n  <a href=\"https://github.com/BlackBeltTechnology/pi-agent-dashboard\">\n    <img src=\"docs/cover.png\" alt=\"PI Dashboard — command an army of pi agents from one tab\" />\n  </a>\n</p>\n\n[![CI](https://github.com/BlackBeltTechnology/pi-agent-dashboard/actions/workflows/ci.yml/badge.svg)](https://github.com/BlackBeltTechnology/pi-agent-dashboard/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/@blackbelt-technology/pi-agent-dashboard)](https://www.npmjs.com/package/@blackbelt-technology/pi-agent-dashboard)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Discord](https://img.shields.io/badge/Discord-join%20chat-5865F2?logo=discord&logoColor=white)](https://discord.gg/DrNebZ3pF5)\n\n**One browser tab to command an army of [pi](https://github.com/badlogic/pi-mono) agents.** Spawn parallel sessions, watch reasoning live, attach OpenSpec changes, ship work — from your laptop or phone.\n\n🌐 **Website & demo:** [blackbelttechnology.github.io/pi-agent-dashboard](https://blackbelttechnology.github.io/pi-agent-dashboard) — animated tour, screenshots, and install guide.\n💬 **Community:** [Join our Discord](https://discord.gg/DrNebZ3pF5) — questions, help, and release news.\n📝 **Changelog:** [`CHANGELOG.md`](CHANGELOG.md)\n\n> **Note:** This dashboard only works with [pi](https://github.com/badlogic/pi-mono). Oh My Pi is **not** supported.\n\n---\n\n## Screenshots\n\n<table>\n<tr>\n<td width=\"33%\" align=\"center\"><a href=\"docs/screenshots/readme-overview.png\"><img src=\"docs/screenshots/readme-overview.png\" alt=\"Sessions overview — folders, branches, OpenSpec changes, live token spend\" /></a><br/><sub><b>Overview</b> — sessions grouped by folder, branch & OpenSpec context, live cost</sub></td>\n<td width=\"33%\" align=\"center\"><a href=\"docs/screenshots/readme-session.png\"><img src=\"docs/screenshots/readme-session.png\" alt=\"Active session — chat, attached OpenSpec change, ask_user prompt, token gauge\" /></a><br/><sub><b>Session</b> — chat, OpenSpec apply, interactive <code>ask_user</code>, context gauge</sub></td>\n<td width=\"33%\" align=\"center\"><a href=\"docs/screenshots/readme-settings.png\"><img src=\"docs/screenshots/readme-settings.png\" alt=\"Settings — ports, spawn strategy, tunnel, resolved tools table\" /></a><br/><sub><b>Settings</b> — ports, spawn strategy, zrok tunnel, tool resolution</sub></td>\n</tr>\n</table>\n\n---\n\n## Table of contents\n\n- [Quickstart](#quickstart)\n- [Features](#features)\n- [Chinese UI](#chinese-ui)\n- [Prerequisites](#prerequisites)\n- [Configuration](#configuration)\n- [Usage](#usage)\n- [Recommended extensions](#recommended-extensions)\n- [Authoring a dashboard plugin](#authoring-a-dashboard-plugin)\n- [Troubleshooting](#troubleshooting)\n- [Architecture](#architecture)\n- [Monitoring](#monitoring)\n- [Development](#development)\n- [Building the Electron app](#building-the-electron-app)\n- [CI/CD & releasing](#cicd--releasing)\n- [License](#license)\n\n---\n\n## Quickstart\n\nThree install paths, pick one:\n\n### A — Electron desktop app (no prerequisites)\n\nDownload a pre-built installer from [GitHub Releases](https://github.com/BlackBeltTechnology/pi-agent-dashboard/releases):\n\n| Platform | Download |\n|----------|----------|\n| **macOS** (Apple Silicon / Intel) | `.dmg` (arm64 / x64) |\n| **Linux** (x64 / ARM64) | `.deb` or `.AppImage` |\n| **Windows** (x64 / ARM64) | `.zip` |\n\n> **macOS requirement:** macOS 12 (Monterey) or newer — Intel and Apple Silicon both supported. macOS 10.15 (Catalina) and 11 (Big Sur) are not supported; users on those versions keep their currently installed version (Electron 32) and are not offered the newer update.\n\nOn first launch a setup wizard walks you through mode selection (standalone vs. power-user), API key / OAuth sign-in, and [recommended extensions](#recommended-extensions). The standalone mode bundles Node.js and auto-installs pi + dashboard + openspec into `~/.pi-dashboard/` — **no terminal, npm, or Node.js required**.\n\n**Picking the right macOS DMG:** run `uname -m` in Terminal — `arm64` means Apple Silicon (M1/M2/M3/M4), `x86_64` means Intel. Or open   Apple menu → About This Mac and read the chip name. Download the matching DMG; if you grab the wrong one macOS will refuse to launch the app with a \"cannot be opened\" error.\n\n**First-run unblocking (unsigned binaries):**\n\n- **macOS** — the DMGs are not yet notarized. Either right-click `PI-Dashboard.app` → *Open* the first time, or clear all extended attributes from Terminal:\n  ```bash\n  xattr -cr /Applications/PI-Dashboard.app\n  ```\n  Use `-cr` (clear, recursive) rather than `-d com.apple.quarantine` — it's idempotent and won't print `No such xattr: com.apple.quarantine` when the attribute isn't there. That message is harmless; it just means quarantine was never set or already cleared.\n- **Windows** — SmartScreen warns on first launch. Click *More info → Run anyway*, or right-click the downloaded `.exe` / `.zip` → *Properties* → tick *Unblock* → *OK* before running. For ZIPs, unblock the archive before extracting.\n\n> **Note:** A future release will rename the macOS DMGs to `PI-Dashboard-darwin-arm64-<ver>.dmg` and `PI-Dashboard-darwin-x64-<ver>.dmg` (previously a single `PI Dashboard.dmg` was produced and silently overwrote one arch on each release). Direct download links pointing at the unsuffixed filename will 404 from that release onward; please link to the [Releases page](https://github.com/BlackBeltTechnology/pi-agent-dashboard/releases) instead. See OpenSpec change `fix-darwin-dmg-arch-collision`.\n\n### B — pi package (recommended for CLI users)\n\nIf you don't have pi yet, you can install the dashboard directly via npm — pi/openspec/tsx ship as regular npm dependencies, so a single install brings everything in:\n\n```bash\nnpm install -g @blackbelt-technology/pi-agent-dashboard\npi-dashboard\n# open http://localhost:8000\n```\n\nIf pi is already installed, the bridge-extension flow is equivalent:\n\n```bash\npi install npm:@blackbelt-technology/pi-agent-dashboard\npi\n```\n\nThe bridge extension auto-starts the dashboard server on first launch:\n\n```\n🌐 Dashboard started at http://localhost:8000\n```\n\nOpen **http://localhost:8000** in any browser. All active pi sessions appear automatically. See [Prerequisites](#prerequisites) for Node.js / build-tool requirements.\n\n#### Windows install (PowerShell, Administrator)\n\nWindows has a few extra one-time setup steps. Run the following in an **Administrator** PowerShell session:\n\n```powershell\n# 1. Enable long paths (required — npm node_modules nesting exceeds 260 chars)\nreg add \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\FileSystem\" /v LongPathsEnabled /t REG_DWORD /d 1 /f\n\n# 2. Install Node.js LTS 22 via winget (ships >= 22.18 so no node-guard refusal)\nwinget install -e --id OpenJS.NodeJS.LTS --accept-source-agreements --accept-package-agreements\n\n# 3. CLOSE this PowerShell, open a NEW one as Administrator (PATH refresh)\n\n# 4. Verify\nnode --version    # expect v22.18+ (any 22.x >= 22.18, NOT v22.0–v22.17)\nnpm --version     # expect 10.x\n\n# 5. Install\nnpm install -g @blackbelt-technology/pi-agent-dashboard\n\n# 6. Start (foreground first time so you can see any errors)\npi-dashboard start\n\n# 7. From the browser\nstart http://localhost:8000\n```\n\nC++ build tools are typically **not** required — `node-pty` ships a Windows x64 prebuild. Install Visual Studio Build Tools only if the prebuild fails to load. See [docs/installation-windows.md](docs/installation-windows.md) for more detail (offline / tarball / nvm-windows caveats).\n\n### C — From source (contributors)\n\n```bash\ngit clone https://github.com/BlackBeltTechnology/pi-agent-dashboard.git\ncd pi-agent-dashboard\ncorepack enable                            # activates the pinned pnpm (packageManager field)\npnpm install\npnpm run build                             # one-time client build\npi install /path/to/pi-agent-dashboard     # global\n# or: pi install -l /path/to/pi-agent-dashboard   # project-local only\n```\n\n#### Use the local checkout as the global `pi-dashboard` command\n\nBy default, `pi-dashboard` on your PATH refers to whatever copy was installed globally (via `npm i -g` or the Electron bundle). To make it point at your working tree instead — so every edit is live and bridge auto-start uses your changes — link the workspace:\n\n```bash\npnpm run link:local     # symlinks `pi-dashboard` on PATH to packages/server/bin/pi-dashboard.mjs\npi-dashboard status\npnpm run unlink:local   # restore (removes the global symlink)\n```\n\nThe link survives across shells. Every invocation — including `pi`'s bridge auto-spawn — runs `packages/server/src/cli.ts` via jiti, so you don't need to rebuild the server on edits. The client still requires `pnpm run build` (or `pnpm run dev` for HMR).\n\n> **Windows note:** symlink creation needs an admin shell or Windows Developer Mode enabled. Everything else works the same as POSIX.\n\nTo try the extension in a single pi session without registering it:\n\n```bash\npi -e /path/to/pi-agent-dashboard/packages/extension/src/bridge.ts\n```\n\nRemove with `pi remove /path/to/pi-agent-dashboard`. Alternatively, add the package path directly to `~/.pi/agent/settings.json` (global) or `.pi/settings.json` (project) under `\"packages\": [...]`.\n\n### D — Docker (self-contained, no host install)\n\nRun the whole ecosystem — server, pi agent, code-server, zrok, tmux, terminals — in one container. No host install of pi, Node, or any tool.\n\n```bash\ncd docker\ncp .env.example .env          # add ANTHROPIC_API_KEY (optional)\ndocker compose up -d --build\n# open http://localhost:8000\n```\n\nState persists in a named volume; API keys seed into `auth.json` on first run (or add providers later via the UI). Mount host projects at their identical absolute paths with `PI_WORKSPACES=\"/abs/a:/abs/b\" ./up.sh` (auto-pinned on first run). The Electron desktop app can attach to a Docker-hosted server via the wizard's **Remote** mode — no local install. Full guide, volume performance profiles, dev mode, and external-gateway config: [`docker/README.md`](docker/README.md). For a disposable, fully isolated instance for manual browser QA (can't collide with a running host dashboard): [`docker/TESTING.md`](docker/TESTING.md).\n\n---\n\n## Features\n\n**Sessions & chat**\n- **Real-time session mirroring** — all active pi sessions with live streaming messages\n- **Bidirectional interaction** — send prompts and commands from the browser\n- **Session statistics** — token counts, costs, model info, thinking level, context usage bar\n- **Elapsed time tracking** — live ticking counters on running operations, final duration on completed tool calls and reasoning blocks\n- **Session spawning** — launch new pi sessions from the dashboard (headless by default, or via tmux)\n- **On-demand session loading** — browse historical sessions with lazy-loaded content from pi session files\n- **Force kill escalation** — two-click Stop button; first click sends soft abort, second force-kills (SIGTERM → SIGKILL). Session preserved as \"ended\" for resume/fork.\n\n**Workspace & UI**\n- **Workspace management** — organize sessions by project folder with pinned directories and drag-to-reorder\n- **Command autocomplete** — `/` prefix triggers a filtering dropdown\n- **Mobile-friendly** — responsive layout with swipe drawer, touch targets, and mobile action menus\n- **Markdown preview** — rendered markdown views with search, mermaid diagrams, syntax highlighting, and safe handling for raw HTML `ref` attributes\n- **Local-image inlining + LaTeX math in chat** — agents can reference local screenshots inline as `![alt](/abs/path.png)` or `![alt](./relative.png)` and they render in chat (the bridge inlines bytes via a streaming-safe `pi-asset:<hash>` channel — each unique image's bytes ride exactly once per session, no matter how many streaming chunks repeat the token). Math expressions — inline `$x = \\beta$` and display `$$\\sum_i^n i$$` (block-level) — are typeset via KaTeX. PNG / JPEG / GIF / WebP / SVG / AVIF / BMP supported with a 5 MB-per-image, 20 MB-per-message cap; oversized or unreadable references render as a visible placeholder rather than a broken-image glyph. The dashboard server adds zero new HTTP routes.\n- **Searchable select dialogs** — keyboard-navigable picker with real-time filtering (OpenSpec changes, flow commands)\n\n**Integrations**\n- **PromptBus architecture** — unified prompt routing with adapters (TUI, dashboard, custom). Interactive dialogs (confirm/select/input/editor/multiselect) survive page refresh and server restart. Multiselect uses the bus-routed browser path exclusively (the dashboard `MultiselectRenderer` dialog) since pi 0.70's RPC mode has no working terminal-overlay primitive. First-response-wins semantics with cross-adapter dismissal.\n- **Extension UI System (Phase 1)** — extensions can declare slash-command-triggered modal UIs as data, without authoring React or importing an SDK. Listen on `pi.events.on(\"ui:list-modules\", probe)` and push descriptors into `probe.modules`; the dashboard renders `table` / `grid` / `form` views with row actions, optional confirm-dialog gates, and MDI icons. Modules survive reconnect via the server-side cache; in pure-pi mode descriptors stay dormant. See `openspec/specs/extension-ui-system/spec.md` for the protocol contract.\n- **pi-flows integration** — live flow execution dashboard with agent cards, detail views, flow graph, summary, abort/auto controls. Launch flows and design new ones with Flow Architect, all from the browser. Fork decisions and subagent dialogs forwarded via PromptBus.\n- **OpenSpec integration** — browse specs, view archive history, manage changes, create new changes from the sidebar\n- **Browser-based provider auth** — sign in to Anthropic, OpenAI Codex, GitHub Copilot, Gemini CLI, and Antigravity from Settings. Enter API keys for other providers. Credentials saved to `~/.pi/agent/auth.json` and live-synced to running sessions.\n- **Custom LLM providers** — add OpenAI-compatible, Anthropic-compatible, or Google Generative AI endpoints (Settings → Providers → LLM Providers). **Test** button verifies the base URL + API key before saving. Adding / editing / removing takes effect live in every running session — no restart.\n- **Package management** — browse, install, update, remove, and **move** pi packages between global and project scopes from a single rich-row UI used in both Settings and Pi Resources. Install dialog exposes a Local/Global radio when launched from a per-folder context. Search the npm registry for pi-package extensions/skills/themes; install from npm or git URL. Active sessions auto-reload after changes.\n- **MCP endpoint** — `POST /mcp` exposes dashboard sessions to MCP clients (Claude Desktop, Cursor) once the server runs. Every request needs a bearer credential, including localhost. `~/.pi/agent/mcp.json` gets a `pi-dashboard` entry automatically on first server start; external clients authenticate with a paired-device token. Local pi sessions need `pi-mcp-adapter >= 2.20.0`.\n\n**Dev tools**\n- **Integrated terminal** — full browser-based terminal emulator (xterm.js + node-pty) with ANSI colors, scrollback, and keep-alive\n- **Diff viewer** — side-by-side and unified diff views with file tree navigation.\n- **Editor integration** — open files in VS Code, Cursor, etc. directly from tool call cards\n\n**Networking & distribution**\n- **Network discovery** — mDNS-based auto-discovery of other dashboard servers on the local network\n- **Zrok tunnel** — optional persistent public URL via reserved shares (see [Configuration → Tunnel](#tunnel-zrok))\n\n---\n\n## Chinese UI\n\nPI Dashboard now includes a lightweight Simplified Chinese interface for the core operator workflow: onboarding, the session sidebar, chat composer, connection banners, Settings, provider setup, and package management.\n\nThe language selector lives in **Settings → General → Interface**. English remains the default for existing users, and the selection is saved in the browser. Deployments that want to start in Chinese can build the web client with:\n\n```bash\nVITE_PI_DASHBOARD_DEFAULT_LANGUAGE=zh-CN pnpm --filter @blackbelt-technology/pi-dashboard-web run build\n```\n\nThis keeps plugin-provided dynamic content, package names, model names, and command output unchanged while making the main dashboard usable for Chinese-speaking operators out of the box.\n\n---\n\n## Prerequisites\n\n**Only needed for Quickstart paths B and C.** The Electron app (path A) bundles everything in standalone mode.\n\n| Requirement | Why | Install |\n|-------------|-----|---------|\n| **[pi](https://github.com/badlogic/pi-mono)** | The AI coding agent the dashboard monitors | `npm i -g @mariozechner/pi-coding-agent` |\n| **pi-mcp-adapter ≥ 2.20.0** | Lets local pi sessions call the dashboard's `POST /mcp` endpoint | `pi ext update pi-mcp-adapter` |\n| **Node.js ≥ 22.18.0** | Server runtime. Older 22.x / 24.x < 24.3.0 are affected by [nodejs/node#58515](https://github.com/nodejs/node/issues/58515) which crashes Fastify at startup. | [nodejs.org](https://nodejs.org/) |\n| **C++ build tools** | Required by `node-pty` native addon for the integrated terminal | Xcode CLI Tools (macOS) / `build-essential` (Linux) |\n\nOptional:\n\n| Tool | Purpose | When needed |\n|------|---------|-------------|\n| **tmux** | Spawn new pi sessions in a tmux window | When `spawnStrategy` is `\"tmux\"` |\n| **[zrok](https://zrok.io/)** | Public tunnel with persistent URLs | When `tunnel.enabled` is `true` (default) |\n\n---\n\n## Configuration\n\n- **Config file:** `~/.pi/dashboard/config.json` (auto-created with defaults on first run)\n- **Tool overrides (machine-local):** `~/.pi/dashboard/tool-overrides.json` — see [Tool overrides](#tool-overrides)\n- **Settings UI:** click the ⚙ gear icon in the sidebar header to edit all fields from the browser\n\n### Precedence & keys\n\nCLI flags → environment variables → config file → built-in defaults.\n\n| CLI flag | Env var | Config key | Default | Description |\n|----------|---------|------------|---------|-------------|\n| `--port` | `PI_DASHBOARD_PORT` | `port` | `8000` | HTTP + browser WebSocket port |\n| `--pi-port` | `PI_DASHBOARD_PI_PORT` | `piPort` | `9999` | Pi extension WebSocket port |\n| `--dev` | — | — | `false` | Development mode (proxy to Vite) |\n| `--no-tunnel` | — | `tunnel.enabled` | `true` | Disable zrok tunnel |\n| — | — | `autoStart` | `true` | Bridge auto-starts server if not running |\n| — | — | `autoShutdown` | `false` | Server shuts down when idle |\n| — | — | `shutdownIdleSeconds` | `300` | Seconds idle before auto-shutdown |\n| — | — | `spawnStrategy` | `\"headless\"` | Session spawn mode: `\"headless\"` or `\"tmux\"` |\n| — | — | `reattachPlacement` | `\"always\"` | After a dashboard restart, where re-registering bridges land in folder lists. `\"always\"` (top), `\"streaming-only\"` (only mid-completion), `\"preserve\"` (legacy: keep prior drag order) |\n| — | — | `devBuildOnReload` | `false` | Rebuild client + restart server on `/reload` |\n| — | — | `askUserPromptTimeoutSeconds` | `300` | `ask_user` prompt timeout in seconds. `≤ 0` (e.g. `-1`) = wait indefinitely |\n| — | `PI_CODING_AGENT_SESSION_DIR` | `piSessionsDir` | `~/.pi/agent/sessions` | Pi sessions root the dashboard scans. See [Pi sessions directory](#pi-sessions-directory) |\n\nThe bridge also honours `PI_DASHBOARD_URL=ws://host:port` to point at a remote server instead of localhost.\n\n#### Pi sessions directory\n\nThe dashboard is a separate process from pi, so it resolves **one** sessions root to scan. When pi's sessions live somewhere other than the default, point the dashboard at them via the following precedence (first match wins; blank values fall through, leading `~/` expands against `$HOME`):\n\n1. `config.json#piSessionsDir` — operator's explicit dashboard override.\n2. `PI_CODING_AGENT_SESSION_DIR` — pi's session-dir env var, if inherited by the dashboard process.\n3. `PI_CODING_AGENT_DIR` + `/sessions` — pi's agent-dir relocation env var.\n4. `~/.pi/agent/sessions` — built-in default.\n\nOmit `piSessionsDir` (or leave it blank) to fall through to the env vars and default. Per-invocation `--session-dir` flags on other pi processes are not observable to the dashboard and are out of scope.\n\n### Minimal `config.json`\n\n```json\n{\n  \"port\": 8000,\n  \"piPort\": 9999,\n  \"autoStart\": true,\n  \"autoShutdown\": false,\n  \"shutdownIdleSeconds\": 300,\n  \"spawnStrategy\": \"headless\",\n  \"tunnel\": { \"enabled\": true, \"reservedToken\": \"auto-created-on-first-run\" },\n  \"devBuildOnReload\": false,\n  \"askUserPromptTimeoutSeconds\": 300,\n  \"openspec\": {\n    \"pollIntervalSeconds\": 30,\n    \"maxConcurrentSpawns\": 3,\n    \"changeDetection\": \"mtime\",\n    \"jitterSeconds\": 5\n  }\n}\n```\n\n### Authentication (optional)\n\nOAuth2 authentication guards external (tunnel) access. Localhost is always unguarded.\n\n```json\n{\n  \"auth\": {\n    \"secret\": \"auto-generated-if-omitted\",\n    \"providers\": {\n      \"github\":   { \"clientId\": \"...\", \"clientSecret\": \"...\" },\n      \"google\":   { \"clientId\": \"...\", \"clientSecret\": \"...\" },\n      \"keycloak\": { \"clientId\": \"...\", \"clientSecret\": \"...\", \"issuerUrl\": \"https://keycloak.example.com/realms/myrealm\" }\n    },\n    \"allowedUsers\": [\"octocat\", \"user@example.com\", \"*@company.com\"]\n  }\n}\n```\n\n| Key | Required | Description |\n|-----|----------|-------------|\n| `auth.secret` | No | JWT signing secret (auto-generated if omitted) |\n| `auth.providers` | Yes | Map of provider → `{ clientId, clientSecret, issuerUrl? }` |\n| `auth.allowedUsers` | No | Allowlist: usernames, emails, or `*@domain` wildcards. Empty = allow all |\n\n**Supported providers:** `github`, `google`, `keycloak`, `oidc` (generic OIDC with `issuerUrl`).\n\n**Callback URL:** register `https://<tunnel-url>/auth/callback/<provider>` in your OAuth provider settings. The tunnel URL is stable across restarts (reserved shares are auto-created).\n\n> **Security note:** `/api/spawn-failures` is reachable to any caller on deployments without auth; entries contain `cwd` paths. Enable auth before exposing via tunnel.\n\n### Tunnel (zrok)\n\nThe dashboard auto-connects a [zrok](https://zrok.io/) tunnel on start when `tunnel.enabled` is `true`. Install with `brew install zrok` (macOS) and run `zrok enable <token>` to enrol — the dashboard reads zrok's own config (`~/.zrok2/environment.json`), no keys are stored in the dashboard. Reserved shares provide persistent URLs across restarts.\n\n### OpenSpec background polling\n\nTune how often the server polls known directories for OpenSpec updates (`openspec` block):\n\n| Key | Default | Range | Description |\n|-----|---------|-------|-------------|\n| `pollIntervalSeconds` | `30` | `5–3600` | How often each known directory is polled |\n| `maxConcurrentSpawns` | `3` | `1–16` | Cap on concurrent `openspec` CLI invocations |\n| `changeDetection` | `\"mtime\"` | `\"mtime\" \\| \"always\"` | `mtime` skips unchanged proposals; `always` polls unconditionally |\n| `jitterSeconds` | `5` | `0–60` | Per-directory phase offset so polls don't align on the same tick |\n\nLive-reconfigurable via Settings → Advanced → \"Background polling (OpenSpec)\" or `PUT /api/config` — no server restart needed. See [docs/architecture.md](docs/architecture.md) for the cost model.\n\n### Tool overrides\n\nThe dashboard resolves every external tool it calls (`pi`, `pi-coding-agent`, `openspec`, `npm`, `node`, `tsx`, `git`, `zrok`, `pi-dashboard`) through a single `ToolRegistry`. Each tool has an ordered strategy chain (override → managed install → bare-import / npm-global → PATH search), and every resolution records a diagnostic trail.\n\n**Inspecting and overriding** — Settings → General → **Tools** shows every resolved tool, its source, and the trail. You can set a per-tool override path, rescan individually or all at once, and export the full diagnostic report.\n\n**Overrides file** — `~/.pi/dashboard/tool-overrides.json`:\n\n```json\n{\n  \"version\": 1,\n  \"overrides\": {\n    \"pi\":              { \"path\": \"C:\\\\custom\\\\pi.cmd\" },\n    \"pi-coding-agent\": { \"path\": \"D:\\\\dev\\\\pi-coding-agent\\\\dist\\\\index.js\" }\n  }\n}\n```\n\nThe file is deliberately separate from `config.json` so machine-specific paths don't follow a dotfiles sync. Invalid overrides (path doesn't exist) are recorded in the trail and the registry falls through to the next strategy automatically.\n\n---\n\n## Using the model proxy\n\nThe dashboard exposes an OpenAI-compatible HTTP proxy on the same port as the dashboard UI (`/v1/...`). Any LLM client that accepts a custom `base_url` can use it.\n\n```bash\n# Example: point an OpenAI-compatible client at the dashboard\nexport OPENAI_BASE_URL=http://localhost:8000/v1\nexport OPENAI_API_KEY=pi-proxy-<your-proxy-key>\n```\n\n**Setup:** open Settings → API Proxy in the dashboard UI, enable the proxy, and create an API key.\n\n**Endpoints:**\n- `GET /v1/models` — list available models (requires `models:list` scope or `all`)\n- `POST /v1/chat/completions` — OpenAI chat completions, streaming + non-streaming\n- `POST /v1/messages` — Anthropic messages, streaming + non-streaming\n\n**Auth:** proxy API keys only (`pi-proxy-*` prefix). Dashboard JWT is never accepted on `/v1/*`.\n\nFor migration from `@blackbelt-technology/pi-model-proxy`, see [`docs/migration/from-pi-model-proxy.md`](docs/migration/from-pi-model-proxy.md).\n\n## Usage\n\n### Auto-start (default)\n\nThe bridge extension **automatically starts the dashboard server** when pi launches if it's not already running. Disable with `\"autoStart\": false` in `~/.pi/dashboard/config.json`.\n\nIn the Electron app, if the initial launch attempts fail (or the server is stopped externally), the **loading page exposes a Start server button**, an **Open Doctor link**, and a collapsible **Server log** panel showing the last 20 lines of `~/.pi/dashboard/server.log`. The system tray menu also includes a **Start server / Restart server** item that reflects current server state. All entry points share a single idempotent launch routine in the Electron main process.\n\n**Debugging the Electron app via CDP.** The desktop app accepts an opt-in `--debug-cdp[=<port>]` CLI flag (and equivalent `PI_DEBUG_CDP` env var) that exposes Chromium's Chrome DevTools Protocol on a loopback-only port (default `9222`) so `agent-browser`, Playwright, Chrome DevTools, or any CDP client can attach to the *installed shell* — not just a separate browser pointed at `http://localhost:8000`. The flag wins if both flag and env are set. CDP is **off by default**, never binds beyond `127.0.0.1`, and logs a one-line `[debug-cdp]` warning to stderr when active. **Single-instance contract:** CDP must be enabled at first-instance launch; passing the flag to an already-running instance cannot enable CDP retroactively and only logs a warning — fully quit and relaunch. From this repo, `cd packages/electron && pnpm run dev:cdp` launches the dev Electron with CDP on. The bundled universal `browser` skill (shipped by the bridge extension) contains a worked-example recipe for attaching `agent-browser` to the Pi Dashboard app.\n\n**Doctor diagnostics.** Help → Doctor (or the loading-page link) opens a styled `BrowserWindow` (`doctor.html`) that runs the same checks the Electron app already performed — grouped into sections (Runtime, Pi, Server, Bundles, Diagnostics) with status pills, paths, and per-row suggestion callouts; toolbar offers Re-run, Copy as Markdown / Plain, Open server log, Open doctor log, Run setup wizard. The web client exposes the portable subset at **Settings → Diagnostics**, which fetches `/api/doctor` and renders the same sections (Electron-only rows omitted). Both surfaces share `packages/shared/src/doctor-core.ts`, so a check defined once shows up everywhere.\n\n### Daemon mode\n\n```bash\npi-dashboard start           # background daemon (production)\npi-dashboard start --dev     # dev mode (proxy to Vite, fallback to production build)\npi-dashboard stop            # stop daemon (also kills stale port holders)\npi-dashboard restart         # restart (production)\npi-dashboard restart --dev   # restart in dev mode\npi-dashboard status          # daemon status\n```\n\nDaemon stdout/stderr is logged to `~/.pi/dashboard/server.log` (append mode with timestamped headers per start).\n\n### Manual server start\n\n```bash\nnpx tsx packages/server/src/cli.ts\nnpx tsx packages/server/src/cli.ts --port 8000 --pi-port 9999\nnpx tsx packages/server/src/cli.ts --dev   # proxy to Vite dev server\n```\n\n### Graceful restart via API\n\n```bash\n# Restart in the same mode\ncurl -X POST http://localhost:8000/api/restart\n\n# Switch to dev / production\ncurl -X POST http://localhost:8000/api/restart -H 'Content-Type: application/json' -d '{\"dev\":true}'\ncurl -X POST http://localhost:8000/api/restart -H 'Content-Type: application/json' -d '{\"dev\":false}'\n\n# Check current mode\ncurl -s http://localhost:8000/api/health | jq .mode\n```\n\nThe restart endpoint waits for the old server to exit, starts the new one, and verifies health. It works identically on Windows, macOS, and Linux (no `sh` / `lsof` / `curl` dependency).\n\n### Dev mode with production fallback\n\nWhen started with `--dev`, the server proxies client requests to the Vite dev server for HMR. If Vite is **not running**, it automatically falls back to serving the production build from `dist/client/`:\n\n- `pi-dashboard start --dev` **always works** — no 502 errors\n- Start/stop Vite independently without restarting the dashboard\n- Start Vite later and refresh the browser to get HMR\n\n### Dev build on reload\n\nSet `\"devBuildOnReload\": true` in `config.json` for a one-command full-stack refresh:\n\n```\n/reload → build client → stop server → reload extension → auto-start fresh server\n```\n\n> Blocks pi for ~2–5s during the build. The server shutdown affects all connected sessions — they auto-reconnect when one restarts the server.\n\n### Session spawning\n\n**Headless** (default) — runs pi as a background process with no terminal attached. Interaction through the web UI.\n\n**tmux** — runs pi inside a tmux session named `pi-dashboard`, each spawned session as a new window:\n\n```bash\ntmux attach -t pi-dashboard                # attach\ntmux list-windows -t pi-dashboard          # list windows\n# inside tmux: Ctrl-b n / p / w           # next / prev / picker\n```\n\nSwitch with `\"spawnStrategy\": \"tmux\"` in `~/.pi/dashboard/config.json`.\n\n### Slash commands (`/dashboard:*`) from a pi session\n\nThe bundled `pi-dashboard` skill ships a `/dashboard:*` slash-command namespace\nfor driving the dashboard from any pi session without hand-writing curl.\n\nTwo classes:\n\n- **LLM-free** (read-only, zero token cost) — the command body runs as bash and\n  renders directly in chat; the LLM is never invoked. A footer\n  *\"ℹ ran locally — LLM not invoked\"* appears beneath the output. Examples:\n\n  ```\n  /dashboard:session-list          # table of every session\n  /dashboard:session-info abc123   # all fields for a session (by id-prefix)\n  /dashboard:server-health         # pid + uptime\n  /dashboard:git-branches          # branches in the current dir\n  ```\n\n- **LLM-bound** (mutations / judgment) — the command expands into a user message\n  the agent interprets, then calls the matching REST endpoint. Examples:\n\n  ```\n  /dashboard:session-tell abc123 please run the tests\n  /dashboard:session-spawn          # new session in the current dir\n  /dashboard:session-abort-all      # asks scope before aborting\n  ```\n\nLLM-free templates opt in via `executable: bash` frontmatter and get\n`PI_DASHBOARD_PORT` / `PI_DASHBOARD_BASE` injected. Full list:\n[`.pi/skills/pi-dashboard/references/slash-commands.md`](.pi/skills/pi-dashboard/references/slash-commands.md).\n\n### Keyboard shortcuts in chat input\n\nBash-style history recall and per-session draft persistence:\n\n| Key | Action |\n|-----|--------|\n| `Enter` | Send the prompt |\n| `Shift+Enter` | Insert a newline |\n| `ArrowUp` | Recall previous user prompt (caret on first line, no dropdown open). Repeat to walk back |\n| `ArrowDown` | Walk forward through history (caret on last line). Past the newest entry, restores the in-progress draft |\n| `Escape` | Restore in-progress draft and exit history mode; also cancels pending prompt / dismisses dropdown |\n| `Tab` / `Enter` in dropdown | Accept the highlighted `/command` or `@file` suggestion |\n\nDrafts (typed-but-unsent text) are persisted per session in `localStorage` under `chat-draft:<sessionId>` and survive navigation (Settings, OpenSpec preview, diffs, …) and full page reloads. Drafts never leak between sessions.\n\n---\n\n## Recommended extensions\n\nThe dashboard integrates tightly with a small, curated set of pi extensions — for custom tool rendering, the Flow dashboard, and anthropic-messages protocol compatibility. The Electron wizard installs them in one go; the **Packages** tab and a top-of-page banner keep them discoverable afterwards.\n\n| Extension | Source | Status | Unlocks |\n|---|---|---|---|\n| `pi-anthropic-messages` | `git@github.com:BlackBeltTechnology/pi-anthropic-messages.git` | **required** | Tool calls on Claude-model Anthropic OAuth / 9Router `cc/*` / pi-model-proxy providers. Without it, tool calls fall back to Claude Code's built-in `bash_ide` sandbox and fail. |\n| `pi-dashboard-subagents` | `https://github.com/BlackBeltTechnology/pi-dashboard-subagents.git` | optional (bundled) | `Agent` tool card UI, subagent inspector (inline expand + popout), agent-md path display |\n| `pi-flows` | `git@github.com:BlackBeltTechnology/pi-flows.git` | strongly suggested | Flow dashboard, role aliases (`@planning`, `@coding`, …), subagent / flow_write / flow_results / agent_write / ask_user / skill_read / finish tools |\n| `pi-web-access` | `npm:pi-web-access` | strongly suggested | `web_search`, `code_search`, `fetch_content`, `get_search_content` |\n| `pi-agent-browser` | `npm:pi-agent-browser` | optional | `browser` tool (open, snapshot, click, screenshot) |\n\nAuthoritative source: `packages/shared/src/recommended-extensions.ts`. Descriptions, versions, and installed-state are enriched live via `GET /api/packages/recommended` (offline fallback).\n\n---\n\n## Authoring a dashboard plugin\n\nThe dashboard's UI is composed of named **slots** that plugins claim with React components. To create a new plugin, install the scaffolding skill:\n\n```bash\nnpm i -g @blackbelt-technology/pi-dashboard-plugin-skill\n```\n\nThen, from any pi session:\n\n```\n/skill dashboard-plugin-scaffold\n```\n\nThe skill has two modes:\n\n- **`new`** — scaffold a fresh `packages/<id>-plugin/` inside this monorepo. Pick which of the 10 React slots to claim (`session-card-badge`, `content-view`, `settings-section`, `tool-renderer`, …); the skill renders package.json (with `pi-dashboard-plugin` manifest), `src/client.tsx` with stubs, optional `src/server/index.ts`, optional `src/bridge/index.ts`, `configSchema.json`, and tests.\n- **`augment`** — retrofit an existing pi-extension project on disk. The skill greps for TUI surface (`ctx.ui.*`, `pi.registerTool`, …), drives the agent through a canonical mapping table, asks per-callsite what to port, then injects a manifest field into `package.json` and adds `src/dashboard/`. Purely additive — your existing TUI keeps working in pure-pi sessions.\n\nFor the slot taxonomy, the manifest schema, and the plugin context API, see the skill's reference docs (or the runtime: [`@blackbelt-technology/dashboard-plugin-runtime`](https://www.npmjs.com/package/@blackbelt-technology/dashboard-plugin-runtime)). The reference fixture is [`packages/demo-plugin/`](packages/demo-plugin/).\n\n---\n\n## Troubleshooting\n\n### Dashboard server doesn't start\n\nIf `pi` launches but the dashboard never becomes reachable, inspect the launch log:\n\n```bash\ncat ~/.pi/dashboard/server.log                          # Linux / macOS\ntype %USERPROFILE%\\.pi\\dashboard\\server.log             # Windows\n```\n\nThe log is append-mode with timestamped headers per start attempt, so previous crashes are preserved. Common issues:\n\n- **`ERR_UNSUPPORTED_ESM_URL_SCHEME` on Windows** — fully fixed in 0.4.0+. The 0.2.10 release wrapped the `--import` loader position as a `file://` URL, but the entry-script position stayed a raw Windows path — which crashed Node on non-`C:` drives (`A:\\`, `B:\\`, …) because the drive-letter heuristic has gaps there. 0.4.0 routes all four server-spawn call sites through a single `spawnNodeScript` / `toFileUrl` helper that wraps both positions unconditionally, and a repo-level lint test prevents regression. Upgrade the package.\n- **`Cannot find pi's TypeScript loader`** — pi is not installed globally. Run `npm install -g @mariozechner/pi-coding-agent`.\n- **Fastify crash at startup** — you're on Node 22.0.0–22.17.x or 24.1.0–24.2.x which are affected by [nodejs/node#58515](https://github.com/nodejs/node/issues/58515). Upgrade to 22.18+ or 24.3+.\n\n### Port already in use\n\n- **Windows:** `netstat -ano | findstr :8000` then `taskkill /F /PID <pid>`\n- **Unix:** `lsof -t -i :8000 | xargs kill`\n- Or change `port` in `~/.pi/dashboard/config.json`.\n\n### UI is empty or stuck after switching servers\n\nSince the `safe-server-switch` release, switching servers via the header dropdown is **transactional**: the UI verifies the target through a short-lived staging WebSocket (5 s timeout) **before** clearing state or writing `localStorage`. If the target is unreachable, nothing changes — a toast appears and you stay on the previous server.\n\nIf the currently-active server drops for more than 3 s, a yellow **“Disconnected from \\<host\\>. Retrying…”** banner appears at the top with a **Switch server** button — use it to pick a reachable server.\n\nYou should no longer need to manually `localStorage.removeItem(\"pi-dashboard-last-server\")` to recover from a bad switch. If you still get stuck, please file an issue.\n\n### Windows: sessions die when the dashboard restarts\n\nSince the `consolidate-windows-spawn-and-platform-handlers` release, pi sessions on Windows **survive dashboard restart**, matching macOS/Linux behaviour. Previously, killing the dashboard process (Task Manager, Ctrl+C, `/api/restart`, crash) terminated every running pi session because the children were in the server's libuv kill-on-close Job Object. The fix uses `detached: true` so children are excluded from the parent's job.\n\nIf you previously relied on \"closing the dashboard cleans everything up,\" use the per-session **Force Kill** action instead (or `POST /api/session/:id/force-kill`).\n\n### Windows Terminal tab doesn't appear\n\nInstall Windows Terminal (`wt.exe`) for tabbed interactive sessions — the dashboard prefers it over WSL tmux / headless when available. Windows 11 ships with it; on Windows 10 install from the Microsoft Store.\n\nIf `wt.exe` is on PATH but launching does nothing, check **Settings → Apps → Advanced app settings → App execution aliases**. If the \"wt\" alias is disabled, `wt.exe` is found but can't be executed. Enable the alias or uninstall/reinstall Windows Terminal.\n\n### Sessions don't group under my pinned folder\n\nSince v0.3+, session grouping uses OS-aware path equality (`platform/paths.ts`). Sessions group correctly under a pinned folder even across trailing-separator, separator-style, or case differences (on Windows and macOS).\n\nIf you still see two entries for what should be one folder, the paths are likely on different Windows drives (`A:\\Foo` and `B:\\Foo` are different filesystems and never merge) — that's correct behaviour. If the paths really are the same filesystem, file an issue with both the pinned path (Settings → Tools → Export diagnostics) and the session `cwd` from `/api/sessions`.\n\n### Tool not found (pi / openspec / npm / …)\n\nOpen **Settings → General → Tools**, click the chevron next to the failing tool to see the full `tried[]` trail, then either (a) install the missing tool on PATH / in the managed location shown in the trail, or (b) set an explicit override via the row's path input. Hit **Rescan** to pick up the change without a server restart.\n\n### Recommended extensions: \"Permission denied (publickey)\"\n\n`pi-flows` and `pi-anthropic-messages` install via SSH (`git@github.com:…`). If your system has no GitHub SSH key, set one up following [GitHub's SSH docs](https://docs.github.com/en/authentication/connecting-to-github-with-ssh), or substitute the equivalent HTTPS URL in the manifest if your fork is public.\n\n---\n\n## Architecture\n\n```mermaid\ngraph LR\n    subgraph \"Per pi session\"\n        B[Bridge Extension]\n    end\n\n    subgraph \"Dashboard Server (Node.js)\"\n        PG[Pi Gateway :9999]\n        BG[Browser Gateway :8000]\n        HTTP[HTTP / Static Files]\n        MEM[(In-Memory Store)]\n        JSON[(JSON Files)]\n    end\n\n    subgraph \"Browser\"\n        UI[React Web Client]\n    end\n\n    B <-->|WebSocket| PG\n    UI <-->|WebSocket| BG\n    UI -->|HTTP| HTTP\n    PG --- MEM\n    PG --- JSON\n    BG --- MEM\n```\n\n| Component | Location | Role |\n|-----------|----------|------|\n| **Bridge Extension** | `packages/extension/` | Runs in every pi session. Forwards events, relays commands, auto-starts server, hosts PromptBus. |\n| **Dashboard Server** | `packages/server/` | Aggregates events in-memory, persists metadata to JSON, serves the web client, manages terminals. |\n| **Web Client** | `packages/client/` | React + Tailwind UI with real-time WebSocket updates. |\n| **Shared** | `packages/shared/` | TypeScript types, protocols, and utilities shared across all packages. |\n| **Plugin Runtime** | `packages/dashboard-plugin-runtime/` | Plugin loader, slot registry, slot consumers, plugin context API, and Vite plugin. |\n\nFirst-party features can live as separate monorepo packages by declaring a `pi-dashboard-plugin` field in their `package.json`. The Vite plugin auto-discovers these manifests at build time and generates a static registry (`packages/client/src/generated/plugin-registry.tsx`) using named imports for tree-shaking. During server startup, `loadServerEntries()` dynamic-imports each plugin's server entry and invokes `registerPlugin(ctx: ServerPluginContext)`. See [docs/architecture.md](docs/architecture.md#plugin-architecture) for the full plugin data flow.\n\nSee [docs/architecture.md](docs/architecture.md) for detailed data flows, reconnection logic, and persistence model.\n\n### Auto-start flow\n\n```mermaid\nflowchart TD\n    A[pi session starts] --> B[ensureConfig]\n    B --> C[loadConfig]\n    C --> D{TCP probe :piPort}\n    D -->|Port open| E[Connect to server]\n    D -->|Port closed| F{autoStart?}\n    F -->|false| G[Skip]\n    F -->|true| H[Spawn server detached]\n    H --> I[\"Notify: 🌐 Dashboard started\"]\n    I --> E\n```\n\nThe server is spawned detached (`child_process.spawn` with `detached: true`, `unref()`), so it outlives the pi session. Duplicate spawn attempts from concurrent pi sessions fail harmlessly with `EADDRINUSE`.\n\n---\n\n## Monitoring\n\nThe health endpoint provides server and agent process metrics:\n\n```bash\ncurl -s http://localhost:8000/api/health | jq\n```\n\nReturns:\n- `mode` — `\"dev\"` or `\"production\"`\n- `server.rss`, `server.heapUsed`, `server.heapTotal` — server memory\n- `server.activeSessions`, `server.totalSessions` — session counts\n- `agents[]` — per-agent metrics (CPU%, RSS, heap, event loop max delay, system load)\n\nAgent metrics are collected every 15s via heartbeats and include `eventLoopMaxMs` — useful for diagnosing connection drops during long-running operations.\n\n---\n\n## Development\n\n### Commands\n\n```bash\ncorepack enable       # once: activate the pinned pnpm (packageManager field)\npnpm install          # Install dependencies\npnpm test             # Run all tests (vitest)\npnpm run test:watch   # Watch mode\npnpm run build        # Build web client (Vite)\npnpm run dev          # Start Vite dev server (HMR)\npnpm run lint         # Type-check (tsc --noEmit)\npnpm run reload       # Reload all connected pi sessions\npnpm run reload:check # Type-check + reload all pi sessions\n```\n\n### Typical local dev workflow\n\n```bash\n# Terminal 1: Dashboard server in dev mode\npnpm exec tsx packages/server/src/cli.ts --dev\n\n# Terminal 2: Vite dev server (HMR for the web client)\npnpm run dev\n\n# Terminal 3: pi with the bridge extension\npi -e packages/extension/src/bridge.ts   # or just `pi` if installed\n\n# Open http://localhost:8000 (server proxies to Vite for SPA routes + assets)\n# Or http://localhost:3000 (Vite directly, proxies API/WS to :8000)\n```\n\n### Deploy after changes\n\n```bash\n# After client changes (production mode)\npnpm run build\ncurl -X POST http://localhost:8000/api/restart\n\n# After server changes (runs TypeScript directly, no build needed)\ncurl -X POST http://localhost:8000/api/restart\n\n# After bridge extension changes\npnpm run reload\n\n# Full rebuild (e.g., after pulling updates)\npnpm run build\ncurl -X POST http://localhost:8000/api/restart\npnpm run reload\n```\n\n### Extension UI events\n\nYour own extensions can broadcast UI events to the dashboard:\n\n```typescript\npi.events.emit(\"dashboard:ui\", {\n  method: \"notify\",\n  message: \"Deployment complete!\",\n  level: \"success\",\n});\n```\n\nSupported methods: `confirm`, `select`, `input`, `notify`.\n\n### Project structure\n\nMonorepo with npm workspaces — top-level layout only. See [AGENTS.md](AGENTS.md) for the full file-by-file index.\n\n```\npackages/\n├── shared/      # Shared TypeScript types, protocols, config, session-meta helpers\n├── extension/   # Bridge extension (runs inside pi) — WS client, PromptBus, event forwarding, auto-start\n├── server/      # Dashboard server — HTTP + dual WebSocket gateways, in-memory store, terminals, auth, tunnel\n├── client/      # React + Tailwind web client — 80+ components, hooks, event reducer\n└── electron/    # Electron desktop wrapper — wizard, system tray, auto-update, bundled Node.js\n```\n\n---\n\n## Building the Electron app\n\n> **Prerequisites:** Node.js 22.12+; platform-specific tools handled by Electron Forge automatically.\n\n### Native build (current platform)\n\n```bash\npnpm run electron:build                    # Build for current platform & arch\npnpm run electron:build -- --arch x64      # Override architecture\npnpm run electron:build -- --skip-client   # Skip client rebuild\n```\n\nOr step by step:\n\n```bash\npnpm run build                        # Build web client\ncd packages/electron\nbash scripts/download-node.sh         # Download Node.js for bundling\npnpm run make                         # Build installer\n```\n\nOutput by platform:\n\n| Platform | Output | Location |\n|----------|--------|----------|\n| macOS | `.dmg` | `packages/electron/out/make/` |\n| Linux | `.deb` + `.AppImage` | `packages/electron/out/make/` |\n| Windows | `.zip` | `packages/electron/out/make/` |\n\n### Cross-platform builds (Docker)\n\nFrom macOS or Linux, build installers for all platforms:\n\n```bash\npnpm run electron:build -- --all              # macOS (native) + Linux + Windows (Docker)\npnpm run electron:build -- --linux            # Linux .deb + .AppImage only\npnpm run electron:build -- --windows          # Windows .zip only\npnpm run electron:build -- --linux --windows  # Both, skip native\n```\n\n### Building both macOS DMGs locally (`--mac-both`)\n\nOn an Apple Silicon mac, produce both the arm64 and Intel x64 DMGs in one invocation:\n\n```bash\npnpm run electron:build -- --mac-both\n```\n\nRequires Rosetta 2 (`softwareupdate --install-rosetta --agree-to-license`) so node-pty's x64 prebuilt binary can be unpacked during the cross-arch run. The script wipes per-arch caches between the two builds (`resources/.last-arch` sentinel) so back-to-back runs don't accidentally ship arm64 binaries inside an x64 DMG. Intel macs cannot cross-build arm64 locally (Rosetta is one-way) — use CI for arm64 validation.\n\nDocker builds use a Node 22 Debian container for Windows cross-compilation. Output goes to `packages/electron/out/make/`.\n\n### Electron dev mode\n\n```bash\n# Start the dashboard server and Vite dev server first\npi-dashboard start --dev\npnpm run dev\n\n# Then launch Electron pointing at the dev server\ncd packages/electron\npnpm run start:dev\n```\n\n### Regenerating icons\n\nAll platform icon variants are generated from the master icon at `packages/electron/resources/icon.png`:\n\n```bash\ncd packages/electron\npnpm run icons    # Generates .icns (macOS), .ico (Windows), and resized PNGs\n```\n\n---\n\n## CI/CD & releasing\n\nSee [`docs/release-process.md`](docs/release-process.md) for the full cut-a-release workflow.\n\n### Continuous integration\n\nEvery push to `develop` and every pull request against `develop` triggers [`ci.yml`](.github/workflows/ci.yml):\n\n1. `pnpm install --frozen-lockfile` — install dependencies\n2. `pnpm run lint` — type check\n3. `pnpm test` — run tests\n4. `pnpm run build` — build web client\n\n### Releasing\n\nThe publish workflow ([`publish.yml`](.github/workflows/publish.yml)) triggers on `v*` tags:\n\n```bash\nnpm version patch   # or minor / major\ngit push --follow-tags\n```\n\nThis runs CI, publishes to npm with `--provenance` for supply-chain transparency, and builds Electron installers for all platforms on native runners:\n\n| Runner | Platform | Outputs |\n|--------|----------|---------|\n| `macos-14` | macOS arm64 | `.dmg` (Apple Silicon) |\n| `macos-15-intel` | macOS x64 | `.dmg` (Intel; last GitHub-hosted x86_64 image, EOL 2027-08) |\n| `ubuntu-latest` | Linux x64 | `.deb` + `.AppImage` |\n| `ubuntu-24.04-arm` | Linux arm64 | `.deb` |\n| `windows-latest` | Windows x64 | `.zip` |\n| `windows-latest` | Windows arm64 | `.zip` (x64 Node.js via WoW64) |\n\nAll artifacts are uploaded to a **draft GitHub Release**. Release notes are extracted automatically from the matching `## [<version>]` section of [`CHANGELOG.md`](CHANGELOG.md).\n\n### On-demand Electron build (CI dispatch)\n\nBuild a one-off installer for a feature branch. No release, no publish, no tag.\n\nWorkflow: [`.github/workflows/ci-electron.yml`](.github/workflows/ci-electron.yml). Trigger from GitHub Actions tab → **CI Electron (on-demand)** → **Run workflow** button.\n\nOptional `legs` input narrows the matrix (default `all`; accepts `darwin`, `linux`, `win32`, or comma-list like `darwin-arm64,linux-x64` for cheap iteration).\n\nVersion slug: `<base>-ci.<UTC-stamp>.<branch-slug>.<sha7>` (e.g. `0.5.3-ci.20260525-143000.feature-foo-bar.abc1234`). Prerelease segment SemVer-ranks below `<base>`.\n\nDownload installers from the Actions run page → **Artifacts** section. 14-day retention.\n\nSafe by construction: no npm publish, no GitHub Release, no auto-update impact. `electron-updater` default `allowPrerelease: false` skips `-ci.` slugs — installed users unaffected.\n\n### Trusted Publisher (OIDC) setup\n\nThe publish workflow uses **[npm Trusted Publishers](https://docs.npmjs.com/trusted-publishers)** over OIDC — **no `NPM_TOKEN` secret required**. Short-lived, workflow-scoped credentials are exchanged between GitHub and npm at publish time, and every release carries automatic [npm provenance](https://docs.npmjs.com/generating-provenance-statements) tying the published artifact to the exact workflow run.\n\n**Requirements** (already configured in [`publish.yml`](.github/workflows/publish.yml)):\n\n```yaml\npermissions:\n  contents: write   # draft GitHub Release + tag push\n  id-token: write   # OIDC token exchange with the npm registry\nenvironment: npm-publish\n```\n\nTrusted Publishing requires **npm CLI ≥ 11.5.1**. The workflow upgrades npm automatically (`npm install -g npm@latest`) before publishing.\n\n**One-time npm-side setup** — repeat once per published package (five scoped workspaces; `@blackbelt-technology/pi-dashboard-electron` is private and skipped):\n\n| Package |\n|---|\n| `@blackbelt-technology/pi-agent-dashboard` (root) |\n| `@blackbelt-technology/pi-dashboard-shared` |\n| `@blackbelt-technology/pi-dashboard-extension` |\n| `@blackbelt-technology/pi-dashboard-server` |\n| `@blackbelt-technology/pi-dashboard-web` |\n\nFor each:\n\n1. Go to [npmjs.com](https://www.npmjs.com/) → the package → **Settings** → **Trusted Publisher** → **GitHub Actions**\n2. Fill in:\n   - **Organization or user:** `BlackBeltTechnology`\n   - **Repository:** `pi-agent-dashboard`\n   - **Workflow filename:** `publish.yml` *(filename only, not the full path)*\n   - **Environment name:** `npm-publish` *(must match the `environment:` field in the workflow)*\n3. Save\n\n**GitHub Environment (recommended)** — configures an optional human-approval gate on every release:\n\n1. GitHub repo → **Settings** → **Environments** → **New environment** → name `npm-publish`\n2. Optionally add **required reviewers** and/or **deployment branch/tag protection rules** (e.g. restrict to `v*` tags)\n\nNo secrets to rotate, no tokens to leak.\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}