{"_id":"pi-supernova","_rev":"27-3003d394d008822dcd019b4c032232ee","name":"pi-supernova","dist-tags":{"latest":"0.10.2"},"versions":{"0.0.1":{"name":"pi-supernova","version":"0.0.1","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.0.1","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"bd084ee122c1e77348b9b6d5cbcf31780165c84d","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.0.1.tgz","fileCount":17,"integrity":"sha512-ql6RkU9kDJG03+XjDjwA8kavifAbx/56gNl6cLGZvoY8yJDMKUo571tBTb+cd8jx+KEX9EiS0bfglx5h20rcSg==","signatures":[{"sig":"MEYCIQCoIlfTO4D+j4E7A0neFkVi8GjMKAIhYHA6PCEkxfpYMwIhAO+lTH0mrRt4HTMZ+o/vzr4IVF728esE67DTm+uxn8Hc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97778},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"a7713a45c9f2e1f6301e41d7943dfa9d8b8c53a2","scripts":{"test":"node --test test/*.test.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"Dual-host CodeMode for Pi/OMP: progressive tool discovery, result bottleneck, and Amdahl Auto parallel.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","@earendil-works/pi-tui":"^0.84.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.0.1_1788480861070_0.1581407520602507","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"pi-supernova","version":"0.0.3","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.0.3","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"ba1f6a81006173bd82d9e6d881c910f88358fae9","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.0.3.tgz","fileCount":19,"integrity":"sha512-HLP/Y4+PlRuyZZtCVWL4V4op4R4brKg0q0+MzDYR9vWXFkGja6w+oQiNLs6i0tp3ZLPJCWp07+GOgEaXXznKcg==","signatures":[{"sig":"MEYCIQCNm3sARgltW1tLekeUgTkPLQ0tkm64BCQrxPlJHjQNVgIhALB3bcYpRnI6noTSe2H9FRBFelAOkBIneui0btOzYth+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117577},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"7ce3725ea58041028b53438635bd10d56f153095","scripts":{"test":"node --test test/*.test.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"Dual-host CodeMode for Pi/OMP: progressive tool discovery, result bottleneck, and Amdahl Auto parallel.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","@earendil-works/pi-tui":"^0.84.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.0.3_1788482405869_0.49370761826840326","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"pi-supernova","version":"0.0.4","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.0.4","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"16fccf1f657985ce6b15d7ae2165e6f89756d5e7","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.0.4.tgz","fileCount":19,"integrity":"sha512-4NxCHWLB3PmWa2Kryu42YSMiCAgT6AiNytSasillHBC8BpoVU+H3dgOKjQPnqjKNLPCwwBNHwWQQEHu1vxbwDg==","signatures":[{"sig":"MEUCIEXdGVVRqZxw0PUQkO1gyryqepTNrrfzI1SCznnM0XliAiEAkh1mpb3ADzjvCE4q2+kRINfXTm2Zbz7SHtlNDLNN9k8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116394},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"7ce3725ea58041028b53438635bd10d56f153095","scripts":{"test":"node --test test/*.test.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"Dual-host CodeMode for Pi/OMP: progressive tool discovery, result bottleneck, and Amdahl Auto parallel.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","@earendil-works/pi-tui":"^0.84.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.0.4_1788482721848_0.6065773112805839","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"pi-supernova","version":"0.0.5","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.0.5","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"651fcdb69e98ad8c51ea74fbe9b575ef900283d8","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.0.5.tgz","fileCount":19,"integrity":"sha512-IBzidfQdnmWTi6tkHxJqkgblNfzbTzLhLOS16ez0ETlF/kSvB7PJvtFt5oWhVqMT3eFC29myhera/FZ+NF12Og==","signatures":[{"sig":"MEUCIQCwMiijZjtsOGoZfgUWhq40ka/IeVWDrGaX+NJ9/CUcNwIgFpRQnlkCmxjOTFK7zIHUmuS6DEwBWg6b6OL17e+S/As=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125638},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"4b3e004926f657d61d2f98d4a41f5862dfba02b6","scripts":{"test":"node --test test/*.test.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"Dual-host CodeMode for Pi/OMP: progressive tool discovery, result bottleneck, and Amdahl Auto parallel.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","@earendil-works/pi-tui":"^0.84.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.0.5_1788487758841_0.6060871840197417","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"pi-supernova","version":"0.0.6","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.0.6","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"975dbf129f86f5f3db3f2577f8a3aaed66459950","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.0.6.tgz","fileCount":19,"integrity":"sha512-auCcKsJna3pWt4VYLsjKI/3Qwhk/Ktxdk5fHRc2rqlzgaX1l20b6y2PRYKswY+Z6i4wqGXBttI4t5YQWCeLWgA==","signatures":[{"sig":"MEQCIDIAXgojb1tuBRDnPoJ0mKD2ROlPwSaTN/67QuJV1lJBAiB0dAC4G26tC0Wh7KWlhkWa1Me0m/fLfH0ZE93bwxaIVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120611},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"f44f63604c7f93d671ff513fe9f158f929734b2b","scripts":{"test":"node --test test/*.test.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"Dual-host CodeMode for Pi/OMP: progressive tool discovery, result bottleneck, and Amdahl Auto parallel.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0"},"peerDependencies":{"typebox":"*"},"peerDependenciesMeta":{"typebox":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.0.6_1788492132806_0.2744267338736017","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"pi-supernova","version":"0.0.7","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.0.7","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"2d9a27ef9494d984081f7317f93bbdf0237295b1","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.0.7.tgz","fileCount":19,"integrity":"sha512-l5kTIiFKtxA5E+DCG386S2Jjb8o1r6w6vyB6ZBxbTRKCXoUVO2Mp1i6rTG6l3hpaeI2qZRcifu9voyFu55qY2g==","signatures":[{"sig":"MEYCIQDaE9TTI4vsMiexq4h5NARvUp2MvLaFJg9cOdKozYM6rAIhALaoWVb15UGM1VlHOcudoG3gMnie4lcq7ITAt/zKfOtg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121556},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"625c81d0a890f488dbf64bc7f21750fbfcb03361","scripts":{"test":"node --test test/*.test.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"Dual-host CodeMode for Pi/OMP: progressive tool discovery, result bottleneck, and Amdahl Auto parallel.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0"},"peerDependencies":{"typebox":"*"},"peerDependenciesMeta":{"typebox":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.0.7_1788492393129_0.35074939029085894","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"pi-supernova","version":"0.0.8","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.0.8","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"797da4d3acf6f0994287da96b063b04ad4840061","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.0.8.tgz","fileCount":24,"integrity":"sha512-R+TZ4QVv/IlM3aFKWuMBSwDaoO6UOdAzrmb8P0z5chkMcIeAYfIoKACHCBiE/VwlJOJOfKRqw1AkgVx5Js0Mwg==","signatures":[{"sig":"MEQCIH/ywseSj53u6f4Ww79Nr6eRhQprnmgKagQhsfYXZv8rAiBdy5+bX5Z/6ICzo0bkARKKidHjzelvLSNH5sFSFGwDcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150647},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"4d2ff4d26a7ca26ce8365d61f41794ef229dd7c3","scripts":{"test":"node --test test/*.test.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"Dual-host CodeMode for Pi/OMP: progressive tool discovery, result bottleneck, and Amdahl Auto parallel.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0"},"peerDependencies":{"typebox":"*"},"peerDependenciesMeta":{"typebox":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.0.8_1788514210506_0.6560340080390712","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"pi-supernova","version":"0.0.11","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.0.11","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"227d1379a884280aea13c949cf71a57f809b6e51","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.0.11.tgz","fileCount":26,"integrity":"sha512-OivbKilzXz5tVL4cYhTQTe+vPrY6LgNupz/3gwktpNJ6dIosgLmbzfA0873sp1KCPDd89GhE07uGkiiDfJmsDg==","signatures":[{"sig":"MEUCIQCCBkpyGxTU9LzPQiuioriAdveGMcMootCwvrACKShNmAIgdIpm09+fyeRZV9ZW13DRxwzL6NogwQRpId2pUAw3kEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186824},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"601e91c467d75847e46c85aa2b187967bfe3f458","scripts":{"test":"node --test test/*.test.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"Dual-host CodeMode for Pi/OMP: progressive tool discovery, result bottleneck, and Amdahl Auto parallel.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0"},"peerDependencies":{"typebox":"*"},"peerDependenciesMeta":{"typebox":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.0.11_1788516680821_0.7918541007231961","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"pi-supernova","version":"0.0.15","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.0.15","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"3dedcb7693fb52e00d0244c96df2553947d5166d","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.0.15.tgz","fileCount":31,"integrity":"sha512-rmPm+nWN+nHwFxhaavj4QbgXflu9/oid7CI2EU4f4MTqcqFMBE+awWBXSLuni4lImH3wXOYu0y8jwFZNd1x2Hg==","signatures":[{"sig":"MEQCIF9PsCtfLvrjS/b0U5XFPY+dSumNgE51zKELCAdSW8qUAiB9XH6pbbjIUJlJ5UTL4O4YkGmLELQHBoy2HUK8n1E5SA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228607},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"8521b1884c9772a5ff59c2687f7205ad9b7f18a5","scripts":{"test":"node --test test/*.test.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"Dual-host CodeMode for Pi/OMP: progressive tool discovery, result bottleneck, and Amdahl Auto parallel.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0"},"peerDependencies":{"typebox":"*"},"peerDependenciesMeta":{"typebox":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.0.15_1788519344618_0.7602816550736615","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"pi-supernova","version":"0.1.0","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.1.0","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"f4847230a4c018deb0b6bbc4ad21cc70ca4eb55b","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.1.0.tgz","fileCount":31,"integrity":"sha512-p9sCnWO9Y2BP3d4j7nwqezQXOlDs4T6tBc7eYbpRvBktpQkjcZ8N5eBnDekPmqreKATHuK+unBpD/I+wnn4T6w==","signatures":[{"sig":"MEQCICstHPljQw2gDy7TtNPvSbnXp1wOKVFsQRjve1DFzj5yAiB9lqoVEjBcPL7ZqxqiKDtm/JoOCKcJwPIvYFh8I/LFKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":241261},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"50a0799e49d6583dad94fd981aabd859b3d06ac1","scripts":{"test":"node --test test/*.test.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"Dual-host CodeMode for Pi/OMP: progressive tool discovery, result bottleneck, and Amdahl Auto parallel.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0"},"peerDependencies":{"typebox":"*"},"peerDependenciesMeta":{"typebox":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.1.0_1788555980878_0.03613143575122679","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"pi-supernova","version":"0.2.0","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.2.0","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"ce5e943261c436394ab293120df31ee442af490b","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.2.0.tgz","fileCount":31,"integrity":"sha512-Ft0QQc3NsmlytvS1iLfB41/69DEoBSd4upfdQabpdYK8O0agbAN4raDa0xLTBcmnvRdj+0ETvEg+r5jkXS2HOA==","signatures":[{"sig":"MEYCIQDWXUeteQknKq/OoZKN0BPAXfa/RsuFmERE9Y041xFWRwIhAIsmFg1Hm363HEc9jyt31PS8JOYR2bI/SI3gCDdO3Gh5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247371},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"50a0799e49d6583dad94fd981aabd859b3d06ac1","scripts":{"test":"node --test test/*.test.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, write, edit, and bash with source selection and bounded results.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0"},"peerDependencies":{"typebox":"*"},"peerDependenciesMeta":{"typebox":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.2.0_1788560546449_0.8558810247158168","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"pi-supernova","version":"0.3.0","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.3.0","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"554fe73ab9a754097d597a2938a876feb3d801d6","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.3.0.tgz","fileCount":33,"integrity":"sha512-D94TqQ3DFfAkTr2grOmazWb6/YOZcDf1aRARYSwNcHuKigouBEUI/7QTHQ9NYDP2YiBPETjxd/s2jkW+w8v9TA==","signatures":[{"sig":"MEUCIQCUM8uA0IHN5uLO6o/cc/MWOoHml4rZiCvpDsEMtjwZZQIgV23LoDcG6nZpy8QrvZFdvRCha2JknqHTZVRbXkGDNAU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":290583},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"276588cc307747f7e6553f128bb5c92486e58734","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"One CodeMode invocation for Pi and OMP, with four guest commands, automatic read batching and source context.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.3.0_1788684740625_0.3565870074364117","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"pi-supernova","version":"0.3.1","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.3.1","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"2a9c18390aff61c10d9da7f4f3d6f31b29d5cc48","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.3.1.tgz","fileCount":33,"integrity":"sha512-5L7ru7taj4/+Mp0sCTxf9/65Il8c8POHxNkviYO8MnSKmOWxiMOg9yxiREgTo0UZUAUTccmyAXmRFeTh5LH95g==","signatures":[{"sig":"MEUCIFBjmPcj3w0IhQqTn+H544H0HguArePtWnJv1QBPGAqQAiEA3MYEf0GKYVuPJ3R4wnPzD95lmBOVs38GRZTPyNQ5a5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":291367},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"413f802ef75586fad3075aaa43700a053a5bd2c9","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"One CodeMode invocation for Pi and OMP, with four guest commands, automatic read batching and source context.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.3.1_1788687684896_0.6419593695548675","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"pi-supernova","version":"0.3.2","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.3.2","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"1aaa357c243e81775fbf0c60116b794da6a802ff","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.3.2.tgz","fileCount":33,"integrity":"sha512-wzyT3MATo6qloEDWbALqcf7kev8O4+QIVrK1LcW56QGeJyJyxm/iwoLiR65da5I3hvGHUf3RNYxKlyUCCx72fw==","signatures":[{"sig":"MEUCIES9/KbBvKQMZ6DIacvpl2JW7qxdtDS3US9HvdpkqWPmAiEAwyFWNONfatCniQJkKuyFy4kMZzMNqV4TRHUojVUoYlM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305454},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"22be671b42b0347ce53d63a8dea21d48a1b763f8","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"One CodeMode invocation for Pi and OMP, with four guest commands, automatic read batching and source context.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.3.2_1788768279428_0.8810633265307244","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"pi-supernova","version":"0.4.0","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.4.0","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"8152c0e54c20f5baf83e74376d9c16498344f2a4","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.4.0.tgz","fileCount":38,"integrity":"sha512-/TrcnwnL+tO05QirzW5qu2ik9BqR0XtiMJFy8mQgyjrGjVmo89RCYftltjMy3gKi4Rd8zhkK6wEgNhrxs0/eYw==","signatures":[{"sig":"MEQCIFSKvto7TPRMDy2bCzi6Ix6DhhjAdY4vfi18Picqie2pAiBcA9KtQRHD+sRgDBv1rySD6DkOTzS0/5LW4Id8ZImTOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358482},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"cae0087287bc3ba4a56b3f29f003cf8ad59eb7c9","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"One CodeMode invocation for Pi and OMP, with four guest commands, automatic read batching and source context.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.4.0_1789083421259_0.525747965132952","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"pi-supernova","version":"0.5.0","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.5.0","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"8050d7086480acf3aa36449dca1ebcfc3011489d","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.5.0.tgz","fileCount":39,"integrity":"sha512-CPoGLv4Js5YwDxHujAXfIBV9Zc3vmZ4zWV7LH5KYAqyPlu3jxWAN5oJngXbxXgsWLRtkuyV7S/Z/51Fho3KU5g==","signatures":[{"sig":"MEYCIQDNMS/A0PqIKgEOW6DpSq45yQ7aq4nQWjfP63OTirne/gIhAIH7KRvEgGXL1wN3wSEmdViPdBTVpGHeoBtf8Cb+ehBn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":372421},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"1fc4453149a6068d89013ef088cd36e51050dada","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"One CodeMode invocation for Pi and OMP, with four guest commands, automatic read batching and source context.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.5.0_1789196627766_0.5278616263378986","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"pi-supernova","version":"0.6.0","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.6.0","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"5b90ca6936c214f03a8232ad4af232b602648aba","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.6.0.tgz","fileCount":39,"integrity":"sha512-D5C3lKiif2aIR6nQjSfLO7+uHmrzLsEhFgeHPhcHi4ZGf+nLf0OahX+1Ezvs6CiAYR3WhUVA+70CrxhBHqKLEQ==","signatures":[{"sig":"MEUCIA8JghfCVznyWYuXlQ/troGhvjzO4ceAsOOkNLzeF3kAAiEAoREyAelJcP1DOU/6+ps6qEbl7o5kYDqYP/daaH5pXTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFixs+JxjqpCQ2Mj0T7gwSQn0ndKeDQsm+TMr61+sxkXAiEA7yBNzaR79hhSG7p0CMs3MYrPjOdAnZeD+XzB0BU5t78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":434131},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"b7334ba9832b91184f939fcff69689b0bfac4930","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.6.0_1789459267356_0.30280931414116297","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"pi-supernova","version":"0.7.0","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.7.0","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"28213f5534d4bf2592f986abd8e2581c21330a16","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.7.0.tgz","fileCount":54,"integrity":"sha512-QwrpS0Tqt0XhaGuE71d7aXw91Y7/IbtZLYy/4z4n+xOIszpU+yNAqwvp/9DK2/Lhz4vOVZx5WTlz5+HNAyH3ng==","signatures":[{"sig":"MEUCIQCtOumniSQBt5aLJp4TN/Iz4jhEHjoCUtWZJC6+Mv21aAIgRVbsvI2ieoNZ/s+WIiRFdJg/lhg2oEjfOraNo+TF91I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAoMNDWCRuC4ahMjxfSR8o3jS+1XAMbc5nAShJUcspIXAiEAp4Wd3siwImylDNsU8v8gbe6O8+UU20bRFAijY//b7qg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":480606},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"19ae8f27d0808c571b0b303f19a8e85b3613fce0","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.7.0_1789625155819_0.25281319280199166","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"pi-supernova","version":"0.7.1","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.7.1","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"cc898d7ea15ad1db7938b01b4ff43760a2cc4bbc","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.7.1.tgz","fileCount":54,"integrity":"sha512-G3cZkw1HWPXeqEDGT+0P6Sbk82MfgoQ19UFAm2orlnOQK1BYABVbfrt0x+SfeMYoh9WnoSuvmGI0TiqZ56tRGA==","signatures":[{"sig":"MEQCID+uos0Fxu9JguNw+3AFj4LeZ4+W0h3F/S9ujxvBhVGHAiBOXJkSUCfYC4xOnhD7uV0cb1vi8gqNLa10QPntHdJ0+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCsXPFhIDhMsbEts0UkZqkR4u1oz1D8vIsllji1PA6UvgIhANiugJDSoFu9cWz/jckPZPWIS3/yj+XmTtbBcEggSCmV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":481268},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"bb6dc48100500f14fa1a9f9f72f226440ed82d92","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.7.1_1789631026005_0.6097917668878754","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"pi-supernova","version":"0.8.0","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.8.0","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"57641f1802bf9bb56b904c0bf648500b11130c5c","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.8.0.tgz","fileCount":54,"integrity":"sha512-oI2BzZGXgvQkDilV6sSQh8JN+MY6v05l1iuG9J1KSt8BKBZHu/nN0npa3yMEQdBKYqk98Di7ccTchLt6fEZQNA==","signatures":[{"sig":"MEUCIQCFLOAl6q44IVBdSarwToFoOZG4fOxoF93EmuCryurOPAIgQ5TTQaam6VMS7C7i5hH2B4JNo0w44drDWHGOks1bLWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAsplDB+28Sw5gVyIjcys07emd9wtTaH01ePPkNRLQStAiBi9bFh5RtpPKkb2yqpsySuRLNLxJkoq9XLQYGp7p/BEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":504820},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"cdfa8e646c1012c5c8e93b3e53475dfd2b2217b8","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.8.0_1789802674660_0.6902947257571774","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"pi-supernova","version":"0.8.1","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.8.1","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"ec5e267e5fe6d465de03461cbcc599cd986a4daf","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.8.1.tgz","fileCount":56,"integrity":"sha512-he9pOf+YE0V3c/A1V6ozjLYVCJ3pyJ65Xn9jA6F9y3HZWxeDDs6N2jTI7Vhy9SjHVLFknuEtA8sxVzWEp/LVeA==","signatures":[{"sig":"MEUCIAYujmJfBWJk2zn0WFyR56TphpIVadd6HTllPnmkeCKNAiEAv8IipfGjpsbkR0mV4DhjCwTprJpWlcbIg9MvlO9gDuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHLlMceuA7jObBtuigwoL4P6OeuKgDGJwbDY8KIYclcbAiBoQmGY6u2tmCJ13a8rPhvVPGjQkeUBXiXD9Zl2gND3ZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":517413},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"ffca430b8d97384bc35d118863d7f60ab227fe22","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.8.1_1789806192229_0.4611655464403923","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"pi-supernova","version":"0.8.2","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.8.2","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"3497828925333175968298db387790941c73b096","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.8.2.tgz","fileCount":56,"integrity":"sha512-bh/xWJSbxYmE9zImC4mvQaFAk/eV4OYF94y0wNwWW4DzKUzMryxwv9h8qL0Sy3uvEBvhGiBZUJiHIS3dMU+g5g==","signatures":[{"sig":"MEUCIQCX82bXxU3atbTfJ8MNZ52F9MMyKizrU2CbORhSs5gbEQIgVzJ+JIrKv6KJ7DCEtohjjtp/jKXtCu8W50dY7DeN3eg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAwn1LB4luVo/533z31WKbXwvwnWo1bz9rni9PyaSbOvAiBWnwAP+md29eeWVjG/4GMyPc6K9TJPpxCUcPmdwdyKAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":524454},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"45c8040fd868a1ce24444e52f7921c1f6665f41b","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.8.2_1789861943777_0.13368287301328086","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"pi-supernova","version":"0.9.0","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.9.0","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"7b70da8066b819039c866e2d9810ac883ff1c432","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.9.0.tgz","fileCount":90,"integrity":"sha512-fvjtbbN2T6I1dGigq/kyBOT/wk4WniPYAld1ySmsf74o6mkmNWbNVQ03UyIbCh5PaCxpXcazYiTewI0B/ySHcA==","signatures":[{"sig":"MEUCIQC44i2j3mnzud1fNKXb0RQI0NB989R2n9//0fDSUmBAQwIgcZ036NXUk8sfIk+SF4LUmwMhbrgDwrPq6fgHJ2M3LuA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICyAH+HTQcRIbJDpJ8m51JA0y/X5fXCU4dJdzMwZwlOgAiAeIgBB+Kzk/1ztXh6eE02CpXjAwJQH62iJeJ+FbEUsGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":562362},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"57abd522ad826aa864d34ddf146cb87b8b88f4b2","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","sharp":"0.35.4","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.9.0_1789952497629_0.5785001433225527","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"pi-supernova","version":"0.9.1","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.9.1","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"178038b63a00816ea143a1ed2e2844dc1c104016","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.9.1.tgz","fileCount":90,"integrity":"sha512-bmTyLX4rJMlsBHuqON2PE/jCwhdJ35LDlAdR0SkKsJV8bQB7s2o4DBjfiCUvgcbyuiSb3COuIfGZ3vf7iKfLgQ==","signatures":[{"sig":"MEUCIQCT2GGTX4KNXnb3pZh0co58WlM6r8TGwpX5EQQrXni1+QIgUcre/NtBH/98P+IkEo2yz+cGkQAtyqjee/Ftlqbsgds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBNnNi7m1uyndp+V0Ex+z++73TLKz3zxPMLyeM3jpwmcAiEA8AwoqlbQ/zIKrJW54zv8HHXqE1Oy1rtMuZuziYG8zfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":566272},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"6802b916e2e619fc62c0cf6e54b2edbe144cfa21","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","sharp":"0.35.4","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.9.1_1790065962720_0.6653178957550587","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"pi-supernova","version":"0.10.0","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.10.0","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"73ee4ff331b391c78f393e7f36c74ba4149e249e","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.10.0.tgz","fileCount":92,"integrity":"sha512-13TN0BqHRk519Y0zlKQ0asPzKtECg6/0fEh9+by5A7B6236kLaTDiA1VEcqY7zUb0kTCGsl1D2SyHSHVqKpZjg==","signatures":[{"sig":"MEUCIQCkCtwwcELXiZhMI0xHye4Zx0kpeD4fD7fdANZVuajubgIgZOIjdqlSjAp9Lg2dkN0SxLF0TXr65I780kRKAbA06wg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCV7UKbXHzQmtRa9XK/IexTR/tiwODjrnG5RouP4LIOzgIgOnHepV8b+HeLltlxd+VHehkaFmMWcvEFP2xO8J8RKjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":599400},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"abc7c7e9ebead2ad41a719e01a5fc23466eb5761","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","sharp":"0.35.4","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.10.0_1790126584728_0.6683889291496954","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"pi-supernova","version":"0.10.1","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"author":{"name":"AdityaVG13"},"license":"MIT","_id":"pi-supernova@0.10.1","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"pi":{"extensions":["./index.js"]},"omp":{"extensions":["./index.js"]},"dist":{"shasum":"c424af56b6fd4ee86f7d21acef2ebef5aa352a64","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.10.1.tgz","fileCount":92,"integrity":"sha512-O6M9+CtLQQuergtehqXywCkg7v606/gBK8QjEP4ito5Xwv5CDZrlXGt7/+suBT4E3EFlC2EsO4IZ4m6HTSwDxQ==","signatures":[{"sig":"MEUCICTrt1AK6kWL/rYd9GwgI6Mrt+AcWVOQa9cwR/eT5kjbAiEAhaNzGjuov72gQypgR66cM/6bq1F5GZPVoPFCY5leTTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIB4eHwlUhsqKwqoRSSSEYcsTcgqcVt3Cd2N4SJugNRC1AiAA5HSzui5RYp+yY0E8Wg0EEFISyG9R90C/CHQlnfuAjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":601604},"main":"./index.js","type":"module","engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"e265d96b382d07b29d02362916843f2f07af869e","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","sharp":"0.35.4","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-supernova_0.10.1_1790185375157_0.6229738287461892","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"pi":{"extensions":["./index.js"]},"_id":"pi-supernova@0.10.2","omp":{"extensions":["./index.js"]},"bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"dist":{"shasum":"14cd55e8263e3ef6ca25d2b56c83d23d4c044b96","tarball":"https://registry.npmjs.org/pi-supernova/-/pi-supernova-0.10.2.tgz","fileCount":92,"integrity":"sha512-UiA0tcULP/hsRT8iuKlLRl9kuV08ERiEBvF7HkBb6sO5WuVSNg3N2uu+XJgtvTP0xRClw7EXVDz2slBXdI3LqQ==","signatures":[{"sig":"MEYCIQCy8hAtWA21nOll4BeLTr6BB1+AdD24CXZ8wrvqC80TQAIhALOjiztQii+kZe26E2hy8Grf7NszYrYPb6PZfmygoROn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCrpBYCIy0gR+og/+xVPiNakWZR6RzQZqVZzly//04HogIhAKu0+5nquWVw1Y5rZ92q0iZ5N48j5Sw0Lm2HU/xftY/z"}],"unpackedSize":596255},"main":"./index.js","name":"pi-supernova","type":"module","author":{"name":"AdityaVG13"},"engines":{"node":">=22.0.0"},"exports":"./index.js","gitHead":"4789900b8d9e6cff72a7b1bc69c4c6f2a052dbd6","license":"MIT","scripts":{"test":"node --test tests/*/*.test.mjs","measure":"node tests/efficiency/measure.mjs","test:hosts":"node tests/hosts/verify.mjs","test:tokens":"node tests/efficiency/tokens.mjs","prepublishOnly":"npm test && node ../../scripts/preflight.mjs"},"version":"0.10.2","_npmUser":{"name":"adityavg13","email":"adityavgcode@gmail.com"},"homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"_npmVersion":"11.19.0","description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","directories":{},"maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"_nodeVersion":"26.7.0","dependencies":{"acorn":"^8.18.0","sharp":"0.35.4","string-width":"^8.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.0.0","js-tiktoken":"1.0.21"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-supernova_0.10.2_1790238452480_0.6902254261936269"}}},"time":{"created":"2026-09-04T00:14:20.874Z","modified":"2026-09-24T08:27:32.985Z","0.0.1":"2026-09-04T00:14:21.207Z","0.0.3":"2026-09-04T00:40:06.019Z","0.0.4":"2026-09-04T00:45:21.979Z","0.0.5":"2026-09-04T02:09:18.973Z","0.0.6":"2026-09-04T03:22:12.971Z","0.0.7":"2026-09-04T03:26:33.250Z","0.0.8":"2026-09-04T09:30:10.627Z","0.0.11":"2026-09-04T10:11:20.982Z","0.0.15":"2026-09-04T10:55:44.826Z","0.1.0":"2026-09-04T21:06:21.028Z","0.2.0":"2026-09-04T22:22:26.580Z","0.3.0":"2026-09-06T08:52:20.776Z","0.3.1":"2026-09-06T09:41:25.025Z","0.3.2":"2026-09-07T08:04:39.556Z","0.4.0":"2026-09-10T23:37:01.426Z","0.5.0":"2026-09-12T07:03:47.920Z","0.6.0":"2026-09-15T08:01:07.476Z","0.7.0":"2026-09-17T06:05:55.931Z","0.7.1":"2026-09-17T07:43:46.094Z","0.8.0":"2026-09-19T07:24:34.799Z","0.8.1":"2026-09-19T08:23:12.306Z","0.8.2":"2026-09-19T23:52:23.876Z","0.9.0":"2026-09-21T01:01:37.729Z","0.9.1":"2026-09-22T08:32:42.805Z","0.10.0":"2026-09-23T01:23:04.813Z","0.10.1":"2026-09-23T17:42:55.261Z","0.10.2":"2026-09-24T08:27:32.577Z"},"bugs":{"url":"https://github.com/AdityaVG13/pi-stack/issues"},"author":{"name":"AdityaVG13"},"license":"MIT","homepage":"https://github.com/AdityaVG13/pi-stack/tree/main/packages/pi-supernova#readme","keywords":["pi-package","pi","omp","oh-my-pi","pi-coding-agent","pi-extension","extension","codemode","supernova","progressive-discovery"],"repository":{"url":"git+https://github.com/AdityaVG13/pi-stack.git","type":"git","directory":"packages/pi-supernova"},"description":"CodeMode for Pi and OMP: read, edit, write and bash, with transactional files, source views and shared-input program batches.","maintainers":[{"name":"adityavg13","email":"adityavgcode@gmail.com"}],"readme":"# pi-supernova\n\n**One `supernova` invocation. Inline code, a workspace program, or an explicit program batch. Four commands inside CodeMode.**\n\n```javascript\nconst source = await read(\"validateRefreshToken\");\nreturn source;\n```\n\nThe model submits JavaScript, not four separately advertised native tools.\nOrdinary JavaScript control flow remains available; the guest command bindings\nare only `read`, `edit`, `write`, and `bash`. Supernova supplies retrieval,\ntransactional file operations, batching, bounded results and the grouped nova UI.\n\n## What is new in 0.10.2\n\n- Results print the `mutations:` line only when it informs: files committed or\n  rolled back, an uncertain filesystem outcome, or shell side effects left behind\n  by a failed program. It had appeared on most results, usually all zeros.\n- Clearer guest errors: naming a variable after a command (`const read = await\n  read(...)`) says so, `supernova(...)` inside a program says to call the\n  commands directly, and an empty `oldText` explains how to insert.\n\nEarlier releases: [changelog](https://github.com/AdityaVG13/pi-stack/blob/main/packages/pi-supernova/docs/CHANGELOG.md).\n\n## Tokens: native tool calls vs Supernova\n\nFixed 13-program workload (inspect, reproduce, repair, verify; JSON report update;\nfive-term audit), full tool-history replay, `js-tiktoken`. Regenerate with\n`npm run test:tokens --prefix packages/pi-supernova`.\n\n| Workload | Tokenizer | Without Supernova batching | Through Supernova 0.10.2 | Reduction |\n|---|---|---:|---:|---:|\n| Mixed 13-program workload | o200k_base | 28,130 | 9,631 | **65.8%** |\n| | cl100k_base | 27,841 | 9,476 | **66.0%** |\n| 16 programs, shared source + data (32 files) | o200k_base | 17,771 | 3,559 | **80.0%** |\n| | cl100k_base | 17,595 | 3,493 | **80.1%** |\n| 8 programs sharing a 48-path input | o200k_base | 16,309 | 5,471 | **66.5%** |\n| | cl100k_base | 14,649 | 5,157 | **64.8%** |\n| Standing tool definition per request | o200k_base / cl100k_base | 908 / 901 | 617 / 606 | 32.0% / 32.7% |\n\nAll rows deliver identical complete outputs and files; only call and argument\nplacement change. The baseline is a frozen non-batched snapshot, not a separate\nproduct. Excludes provider envelopes, unrelated conversation, reasoning tokens and\ncaching; no model-quality claim. Method and speed measurements:\n[TOKEN_COSTS.md](https://github.com/AdityaVG13/pi-stack/blob/main/packages/pi-supernova/docs/TOKEN_COSTS.md).\n\n## Install and update\n\nInstall the published package in your host:\n\n```bash\npi install npm:pi-supernova\nomp install npm:pi-supernova\n```\n\nLocal checkout installs are for development, not distribution:\n\n```bash\npi install /path/to/pi-stack/packages/pi-supernova\n```\n\nImage reads and returned images are validated with Sharp: at most 32 million\ndecoded pixels across all frames, one image at a time, in a subprocess with a\n5-second kill deadline; text-only work never loads it. Keep Sharp's\nplatform-specific optional dependencies enabled. For a local checkout, refresh dependencies before starting\nthe host:\n\n```bash\nnpm install --prefix /path/to/pi-stack/packages/pi-supernova --include=optional\n```\n\nInstall dependencies on each target machine rather than copying `node_modules`\nbetween operating systems or CPU architectures. Published-package installation\nresolves these dependencies through the host's package manager.\n\nGit pushes do not update npm installations. Publish the new npm version first,\nthen reinstall it in your host. To pin **0.9.0** once it is published:\n\n```bash\npi install npm:pi-supernova@0.9.0\nomp install npm:pi-supernova@0.9.0\n```\n\nIn Pi, `pi list` shows the configured package sources. A local path uses that\ncheckout directly; an npm source uses the installed npm copy. Do not assume that\npushing a checkout or running `/reload` updates the copy executing in your host.\n\nBoth host manifests use `index.js`. The old `src/bridge/pi-extension.ts` path\nremains a compatibility entrypoint but no longer imports Pi tool factories.\nAfter updating JavaScript sources, fully exit Pi and resume in a new process.\nPi 0.85.1 can retain native ESM modules across `/reload`, even after its extension\nfactory cache is cleared; `/reload` alone is not sufficient in that case.\nOMP uses the same shared engine; restart it after updating the link as well.\n\nFor deferred-context-engine, pin `supernova` in `alwaysActive` and `neverDefer`.\nRemove the four native names from those pins and restore their previous blocks\nif you want the wrapper to be the only file/shell surface. Preserve unrelated\nsettings. The runtime does not silently rewrite your tool policy.\n\n## Four guest commands\n\n| Function | Examples and behavior |\n| --- | --- |\n| `read` | `read(path, offset?, limit?)`, `read({path,offset,limit})`; one-based line windows |\n| `read` | `return await read(\"plot.png\")`; displays images directly, without a browser |\n| `read` | `read({path,json:\".verdict\"})`; parse full JSON before bounded field selection |\n| `read` | `read(directory)`, `read(\"symbol or question\")`, `read(path,{about:question})`; a path is raw text, a symbol is a view |\n| `read` | `read({query,resolve:true})`; same view as `read(\"symbol\")`: status, path, line, lines, text, complete |\n| `read` | `read({query,evidence:true})`; ranked evidence with provenance; optional `path` scopes discovery |\n| `read` | `read({path,outline:true})`; structural declarations |\n| `read` | `read([path1,path2])`; up to 64 paths, ordered values; rejects if any path fails |\n| `edit` | `edit(path,oldText,newText)`, `edit({path,edits:[{oldText,newText}]})`; unique in the file |\n| `edit` | `edit(view,text)` CAS-replaces that span; `edit(view,old,new)` is unique inside it |\n| `edit` | `edit({path,patch})`; unified patch application |\n| `edit` | `edit(async () => {...})`; filesystem-only checkpoint, described below |\n| `write` | `write(path,text)`, `write({path,content})`; atomic replacement |\n| `bash` | `bash(command,{cwd,timeoutMs})`, `bash({command,timeoutMs})`; bounded output, nonzero exits throw |\n| `bash` | `bash({command,args:[...]})`; literal executable argv, without shell expansion of argument strings |\n\n`bash` also accepts `timeout` in seconds for familiar object arguments. `timeoutMs`\nis milliseconds and takes precedence. The owned adapter launches executable argv\ndirectly on every supported OS, including Windows; use the string form for shell\nbuiltins, functions or startup hooks. Literal argv never enters a captured shell\nexecutor. Windows string commands require native Git Bash on `PATH`, not WSL's\n`System32/bash.exe`; source search requires a spawnable native `rg.exe`. Put their\nreal executable directories before WSL or broken WinGet links in the host's `PATH`.\nWindows limits process command lines to 32K characters; use a workspace script file\nfor larger payloads. Argument payloads are not repeated in owned direct-execution errors;\nstdout/stderr, exit status and source context remain. Session environment variables are taken\nfrom the current execution context, not inherited from a different parent session.\n\nShell strings are executed unchanged, including quoted executable paths. For inline\nPython/Node scripts, prefer literal argv with `data` instead of nested shell quotes:\n\n```json\n{\n  \"code\": \"return await bash({command:\\\"python3\\\",args:[\\\"-c\\\",data.script]});\",\n  \"data\": {\"script\": \"q = {'name': 'example'}\\nprint(f\\\"{q['name']}\\\")\\n\"}\n}\n```\n\nShell syntax errors keep the original diagnostic and suggest argv or a quoted\nheredoc; commands are never automatically rewritten or retried. Invalid timeouts\nand null-byte arguments fail before flushing staged changes. Failure labels are\nbounded so a large script cannot crowd out its stderr.\n\nSource questions locate a declaration in one command. An exact\ndeclaration match uses one bounded direct ripgrep search, without a prerequisite\nfile listing, persistent index, embeddings or summarization. A transient filename\nlisting is a fallback for unmatched content or unresolved bare filenames. Natural-language\nquestions reuse lexical stemming. Source questions and focused `about` reads\naccept at most 16 keywords. Ripgrep must be available on PATH.\n\n`read(path)` stays raw text. `read(\"symbol\")` is the same view as\n`read({query, resolve:true})` -- not the file, not a path/range header:\n\n```javascript\nconst v = await read(\"validateRefreshToken\");\nif (v.status !== \"found\") return v;\nawait edit(v, v.text.replace(\"token.length > 3\", \"token.length > 5\"));\n```\n\nThe view contains `status`, `path`, the matching `line`, span `lines`, unchanged\n`text`, `complete`, and `nextOffset` when a model-facing preview continues.\nThe internal view is not shortened to fit the display. A declaration\nsnap is that span (`complete` is false unless the span is the whole file). Uncertain\nresults report `ambiguous`, `not_found` or `incomplete` with no selected path.\nUse `{path: directory, about: question}` to narrow the scope. Scoping a query\ndoes not relabel a selected span as a complete file. Newly staged files and large\nstaged source participate in discovery before commit. Raw offset/limit windows\npreserve LF/CRLF endings and the final newline; focused views add line labels.\nA matching window too large for the output budget is reported as budget-limited,\nnot as an absent match. Do not combine incompatible modes such as `outline:true`\nand `evidence:true`.\n\nOrdinary reads stay self-contained. Outlines and graph evidence remain explicit\noptions, not mandatory stages of source resolution. Ordinary calls also get:\n\n- Bounded fuzzy filename hints when a bare source name has no literal match. Existing\n  frecency/directory ranking orders hints; fuzzy matches never select a path. This\n  reuses filename discovery, examines at most 1024 paths and reports incomplete hints.\n- Post-edit source windows and structural warnings for both replacement and patch\n  edits. Body-only edits reuse local declaration spans for lexical reference hints.\n  Up to three names share one bounded, cancellable search; staged callers override disk.\n  These hints do not build an index, are not semantic caller resolution, and report\n  unavailable/truncated searches rather than silently claiming completeness.\n- Structural warnings on writes without echoing successful file contents.\n- Fresh workspace source around up to four failure locations, including shell\n  timeouts and paths relative to the command cwd. Implicit snippets exclude external\n  symlink targets and files over 1 MiB.\n\nDistant edit regions have separate windows and continuation pointers for omitted\nlines. Structural warnings and source windows are not substitutes for tests.\n\n### Safe read-modify-write\n\nA plain file read returns its complete text up to the **64 MiB UTF-8 I/O limit**,\nindependently of model-facing character budgets. Explicit `offset`/`limit` reads\nreturn exact line windows, including long lines and LF/CRLF endings, or fail at\nthe same byte ceiling. Staged and on-disk data obey the same ceiling.\n`complete:true` additionally rejects a window that omits part of the file.\nFor larger files/JSONL, use a bounded parser through `bash({command,args})`.\n\nCompute on the full value and return only what the model needs. A direct large\nreturn is an explicitly truncated display, not a complete artifact to parse or\nwrite back. `resolve:true` source previews retain path/range/continuation metadata;\nclipped previews are not editable. Prefer `edit` for replacements.\nA write after reading that path still requires `edit` or explicit `replace:true`.\nWrites reject Supernova truncation markers, including legacy host-result markers.\nFor intentionally writing literal marker documentation only, opt in with\n`write({path,content,allowReadArtifacts:true})`. This is a data-loss guard, not\nfull dataflow tracking or a security sandbox.\n\nRead/modify/write conflict checks retain a signature of the actual disk bytes,\nincluding for partial and large-file reads. A fresh explicit text read refreshes\nthat observation; internal receipt reads and body-cache eviction do not. Commits\nreject changed content and conflicting symlink aliases, including new file paths.\nThese checks do not provide a cross-process lock or make shell/import mutations\ntransactional. Extensionless filenames also support `complete:true`, for example\n`read({path:\"LICENSE\",complete:true})`.\n\nDirectory reads return complete string-entry arrays up to **10,000 unique entries**.\nLarger listings fail with a path and bounded-parser guidance rather than silently\nreturning an incomplete array. Metadata lookups overlap eight at a time.\n\nExplicit read arrays reject missing/failed paths. For typed partial outcomes use\n`Promise.allSettled(paths.map(path => read(path)))`. Successful arrays remain arrays.\nFor literal file content or scripts, prefer the optional tool-level `data` parameter:\n\n```json\n{\n  \"code\": \"await write(data.path,data.content); return await bash({command:\\\"python3\\\",args:[data.path]});\",\n  \"data\": {\n    \"path\": \"probe.py\",\n    \"content\": \"print(\\\"literal `backticks` and ${braces}\\\")\\n\"\n  }\n}\n```\n\n`data` crosses the worker boundary as JSON, never as JavaScript source. For a\nsingle program its JSON-encoded length is capped separately at `maxCodeChars`;\nbatches use the combined admission budget described below. Split larger inputs.\nThe binding exists only when supplied, so older programs declaring their own `data`\nremain valid. Syntax errors run no commands and give quoting guidance. For inline\nsource, use `String.raw` (escaping backtick delimiters) or JSON-quoted strings.\n\nOn hosts exposing `sessionManager.getArtifactsDir()`, bare `agent://<id>` and\n`artifact://<number>` read files from the calling session's artifact directory.\nThey preserve ID casing and support offset/limit and structured continuation.\nThese resources are read-only; ambiguous artifact IDs and escaping symlinks fail.\nA single `?q=.answer` (URL-encoded when needed) selects JSON from either resource\nusing the same bounded projection as `read({path,json})`. The resource must contain\nvalid JSON; ordinary Markdown is not parsed heuristically. This is not the full\nOMP URI language: full jq, cross-session search and other schemes are not implemented.\nHosts without an artifact directory report that limitation rather than treating the URI as a local path.\n\nFor unstructured logs/text, `read(path,{about:\"STT database\"})` returns bounded,\nline-numbered matching windows, or explicitly reports no matching text. It is not\na complete-file read. Write temporary investigation files under the workspace\n(e.g. `.work/probe.py`): ordinary `write`/`edit` paths cannot escape it, including\nabsolute `/tmp` paths. Shell execution is a separate trusted boundary, not a sandbox.\n\n### Reuse a program without resending its source\n\nSave a trusted JavaScript async body or arrow in the workspace, then invoke it:\n\n```json\n{\"file\":\".work/audit.js\",\"data\":{\"paths\":[\"src/a.js\",\"src/b.js\"],\"term\":\"TODO\"}}\n```\n\nSupply exactly one of `code` or `file`. File programs get the same four commands,\noptional `data`, limits, deadlines and transaction semantics. Each invocation\nrereads the file and starts a fresh guest; there is no implicit last-program\nstate, auto-replay, or retained heap. Paths inside the program still resolve from\nthe calling workspace, not the script directory. This runs a Nova program, not\nan arbitrary JavaScript module or a Python/shell script.\n\nProgram files must be regular UTF-8 files inside the workspace, including symlink\ntargets. Invalid encoding, oversized input and syntax errors fail before commands;\nno truncated prefix is executed. Review untrusted source before running it.\nUse ordinary `edit` to revise saved programs. This is explicit source reuse, not\nconversation compression: prior calls and read results remain intact. Creation\ncosts an additional call unless combined with other work, so prefer inline code\nfor short one-off operations. See [token measurements](https://github.com/AdityaVG13/pi-stack/blob/main/packages/pi-supernova/docs/TOKEN_COSTS.md).\n\n### Batch already-known continuations\n\n~~~json\n{\n  \"programs\": [\n    {\"code\": \"return await edit(data.path,data.oldText,data.newText);\", \"data\": {\"path\":\"src/config.js\",\"oldText\":\"limit = 8\",\"newText\":\"limit = 16\"}},\n    {\"code\": \"return await bash(\\\"npm test\\\");\"},\n    {\"file\": \".work/audit.js\", \"data\": {\"paths\":[\"src/config.js\"],\"term\":\"limit\"}}\n  ],\n  \"timeoutMs\": 60000\n}\n~~~\n\nSupply 1--32 `programs` entries. Top-level `code` OR `file` supplies an optional\nsource default; an entry's own `code` OR `file` replaces it. Without a shared\nsource, every entry still requires its own. A shared file is reread when each\nentry runs, so earlier commits can create or update it.\n\nTop-level `data` supplies an optional input default. By default, explicit entry\n`data` replaces it entirely, including null, false, 0 and empty strings. With\n**`mergeData:true`**, both the default and every explicit entry input must be\nobjects: own entry fields override default fields in a **shallow** merge. Nested\nobjects are replaced, not recursively merged. Each guest receives its own copy;\nmutations cannot leak between guests or back into caller-owned inputs.\n\nThe JSON-encoded array plus any shared code/file/data must fit `maxCodeChars`.\nCommon source/input counts once, before expansion. Every entry is validated\nbefore any program runs. Result representations and output limits are unchanged.\nEntries run sequentially in fresh guests and commit separately. A successful\nentry can create the file executed by a later entry. No implicit retries,\nreordering, shared heap or nested batches are introduced.\n\nFor independent audits that use the same inputs, send them once:\n\n```json\n{\n  \"data\": {\"paths\": [\"src/a.js\", \"src/b.js\"]},\n  \"programs\": [\n    {\"code\": \"return await read(data.paths);\"},\n    {\"code\": \"return await Promise.all(data.paths.map(path => read({path, outline:true})));\"}\n  ]\n}\n```\n\nThis avoids repeating literal arguments, without a compression codec or result elision.\nMutating `data` in one guest cannot affect the next. An entry with `data:null`\nreceives null, not the shared object; there is no implicit object merge.\n\nFor the same program with varying inputs, no temporary script or input file is\nneeded. For example, audit both files with a common term:\n\n```json\n{\n  \"code\": \"const text=await read({path:data.path,complete:true}); return {path:data.path,found:text.includes(data.term),text};\",\n  \"data\": {\"term\":\"TODO\"},\n  \"mergeData\": true,\n  \"programs\": [\n    {\"data\":{\"path\":\"src/a.js\"}},\n    {\"data\":{\"path\":\"src/b.js\"}}\n  ]\n}\n```\n\nThe complete source is still returned twice, once for each requested file; shared\narguments do not authorize result deduplication or context rewriting. Existing\nprograms that depend on whole-input replacement keep that behavior unless the\ncaller explicitly requests `mergeData:true`.\n\nThe batch stops on the first failed entry, cancellation/deadline, or exhausted\nlog/image budget. Display-text clipping does not stop execution or mark a\nsuccessful batch failed. Earlier successful commits remain; only the active\nprogram's uncommitted writes roll back. Admission errors throw before any program.\nExecution failures return a **typed stop report**, rather than throwing away prior\nresults/images: isError and details.ok identify failure, details.programs contains\nevery attempted result, and details.attempted/total identifies unstarted work.\nSingle code/file invocations retain their existing throwing behavior.\n\nSet `parallel: true` with `programs` to run independent entries concurrently\n(up to 8 at once). Each still gets a fresh guest and its own commit; results stay\nin submission order. A failed entry does not stop siblings. Two entries writing\nthe same file race: the losing commit reports a conflict. Sequential remains the\ndefault. `parallel` and `mergeData` are invalid on a lone `code` or `file` call.\nLog/image budget overflow marks the batch failed and stops queued entries;\nalready-running entries settle and their completed commits remain. Text overflow\nonly clips the displayed result and sets `details.returnTruncated`; queued entries\nstill run. Parallel execution does not multiply the aggregate allowances.\n\nThe outer deadline, host-call budget, log allowance, text budget and image limits\nare shared across the batch. Individual read budgets are not reduced. Every\nattempted program's text is assembled in length-delimited blocks, then the combined\ndisplay is clipped if necessary. Images retain program/image labels. Return\nsummaries or use focused windows when you need every result to fit on display.\n\nBatch only continuations already chosen by the agent, such as edit then known\nverification, or create then run known audits. Keep a separate call whenever new\nsource/results are needed to decide the next action. This does not lower reasoning\nsettings, hide observations, or infer a plan on the agent's behalf.\n\n### Large inputs and report outputs\n\nThe default program limit is 48,000 UTF-16 code units (configurable via\n`maxCodeChars` and exposed in the tool schema). The same cap applies separately\nto serialized JSON `data`, including quote/newline escaping and object keys.\nOversized input fails before commands run and reports its actual serialized size.\nSplit larger documents into\nseparate invocations: first `write(path, firstChunk)`, then\n`write({path,content:nextChunk,append:true})`. Append uses the complete internal\nfile buffer, never a bounded model-facing read; it retains conflict checks and\nper-program rollback. Missing files are created. Multiple invocations are not\none atomic transaction: for an all-or-nothing publication, assemble a new staging\nfile and publish it only when complete. External write overrides reject append.\n\nSupernova supports bounded foreground execution and session-owned background terminals\n(see below), not durable jobs across host restarts. For long archive scans, use a\nbackground terminal or resumable chunks and write progress records under `.work`.\nForeground shell commands inherit the current program `timeoutMs` unless they\nspecify their own; increasing the outer deadline no longer\nleaves a hidden 60-second shell cap. Set the inner `bash` timeout shorter than the\nouter program timeout (for example 10 seconds inside a 20-second program). The outer\ndeadline covers **all** waits and commands, including `sleep`; a shell's own `timeout`\ncommand does not extend it. On a deadline or cancellation, the worker stops and\npending host calls get a bounded 250ms drain to retain owned-shell diagnostics and\nfinalize process termination. Non-cooperating host executors may still outlive that\ndrain. Cancellation is reported separately from timeout; neither triggers a retry.\nProgress files survive shell execution but staged VFS writes may roll back.\nOn macOS/Linux, foreground and background commands share process-group cleanup:\nnormal leader exit, cancellation and timeout retire ordinary descendants before\nreporting completion. A shell's `command &` does not create a durable job; launch\nthe long-running command itself with `background:true` instead.\n\nLarge returned objects are bounded previews, not retained artifacts. Select fields\nand array windows before returning, rather than parsing a truncated preview.\n\n## Background terminal sessions\n\nStart a command without waiting for it to finish:\n\n```js\nreturn await bash({command:\"npm test\", background:true});\n// {sessionId, pid, status:\"running\", pty:false, output, outputStart, cursor,\n//  truncated:false, exitCode:null, signal:null}\n```\n\nUse `pty:true` for interactive programs that require a terminal, such as a\nbrowser/passkey publisher. Literal argv remains supported:\n\n```js\nreturn await bash({command:\"npm\", args:[\"publish\"], background:true, pty:true});\n```\n\nStarting a publish still requires the user's authorization. This API does not\napprove commands, bypass shell overrides or provide credentials. PTY mode uses\n`/usr/bin/script` on macOS/Linux and fails explicitly if unavailable; it adds no\nnpm/native dependency. Pipes are the default. PTY output includes terminal echo,\nANSI escapes and CRLF; it is a transcript, not a full-screen terminal renderer.\nPTY commands start at 80 columns by 24 rows; dynamic resizing is not supported.\n\nControl the returned ID in a later Supernova invocation:\n\n```js\nreturn await bash({sessionId:data.sessionId, action:\"poll\", cursor:0, waitMs:1000});\n// waitMs waits for new output/exit only when cursor is at the current end.\n```\n\n```js\nawait bash({sessionId:data.sessionId, action:\"write\", input:\"yes\\n\"});\nreturn await bash({sessionId:data.sessionId, action:\"poll\", cursor:data.cursor});\n```\n\n```js\nreturn await bash({action:\"list\"});\n// Or: return await bash({sessionId:data.sessionId, action:\"stop\"});\n```\n\n- Results are objects, not encoded JSON or foreground text. `poll` returns\n  `running`, `exited`, `stopped`, `timed_out`, or `failed`, with nullable `exitCode`\n  and `signal`. A nonzero child exit does not throw from `poll`; inspect it.\n  Invalid arguments/IDs, startup failures and failed controls do throw. In PTY\n  mode, `exitCode` is the system `script` utility's status; signal termination\n  may be encoded there instead of in `signal` and is platform-dependent.\n- `cursor` is an absolute UTF-16 output offset. Pass the previous cursor for\n  incremental output, or omit it to replay retained output. stdout/stderr share\n  a 65,536-character tail. `truncated:true` and `outputStart` disclose discarded\n  history; polling does not consume it. `waitMs` is 0--30,000 (default 0).\n- Input is literal, at most 16,384 characters per call. Include `\\n` for Enter\n  and `\\u0003` for Ctrl-C in a PTY. Input is not echoed into tool traces, but\n  the child/terminal may echo it into output. Do not send secrets casually.\n- Up to 8 running jobs and 32 retained sessions per extension instance. Oldest\n  completed sessions are evicted when needed. `list` returns metadata without\n  replaying output. IDs are scoped to the originating Pi session and workspace;\n  controls still waiting when that session closes reject rather than returning\n  results from the closed session.\n- A job defaults to a **30-minute deadline**, independently of the starting\n  Supernova call. Set its `timeoutMs` explicitly to change that deadline.\n  Outer program timeouts/cancellation still bound start and control calls;\n  cancelling a poll does not stop its job. Use `stop` to terminate it.\n- Launch, input and stop are external-mutation barriers; staged edits flush\n  first. List/poll do not flush staged edits. None runs inside an edit checkpoint.\n  Background effects are not transactional and may race edits; ordinary CAS\n  checks still detect changed file bytes, not all external side effects.\n- On macOS/Linux, normal exit, explicit stop, job deadline and session shutdown\n  clean up owned process groups, escalating to kill when necessary. Completion\n  is reported only after cleanup, so ordinary orphaned children are not left\n  running. Failed cleanup remains listed and consumes a job slot until a later\n  stop/shutdown succeeds; it is not silently discarded. Windows pipe cleanup is\n  best-effort (`taskkill` while the leader is alive), not POSIX group supervision.\n  Jobs do not survive reload, session\n  replacement, host restart or crash as managed sessions. Deliberately detached\n  daemons are not a supported supervision model. Cleanup errors are reported.\n  Launches and controls from an old session generation are rejected, including\n  after a reload that retains the same Pi session ID. A guest started before\n  replacement cannot list, poll, write to or stop the replacement's jobs.\n  Identity is captured once per tool invocation, including queued sequential and\n  parallel batch entries, rather than reread from a mutable host SessionManager.\n  Replacement invalidates the whole guest bridge: further commands, delegated\n  calls, session-resource lookups and pending commits are rejected. Queued commits\n  recheck identity after waiting, and staged replacements recheck before each\n  installation; a failed transaction restores any earlier replacements. Delegated\n  executors recheck immediately before dispatch. External effects that already\n  started or committed are not rolled back by a session change.\n- Background actions require Supernova's owned shell adapter. A registered shell\n  override is rejected rather than silently ignoring background options or\n  bypassing the override's permissions.\n\n\n## JSON reports and targeted text audits\n\nFor JSON, select fields inside the read adapter, **before** output budgeting:\n\n```js\nconst [verdict, values] = await read({path:\"report.json\",json:[\".verdict\",\".values[5000:5003]\"]});\nreturn {verdict, values};\n```\n\nSelectors support \".\" (root), .field, .nested[0], .items[0:10], and .[\"quoted.key\"].\nUse json:true for the complete parsed value. Put the selector in `json`\n(`json:\".field\"`), not a second `selector` key; a leftover `selector` folds\nwhen `json` is absent, `true`, or `\".\"`. Selectors are not full jq: pipes,\nfilters, wildcards and negative indices fail explicitly. Missing keys and indices\nfail; false, zero and null remain values. Slices use an exclusive end and clamp to\narray length. Only own JSON properties are traversed; nothing is evaluated.\n\nInputs are capped at 16 MiB, including staged files. JSON reads require regular\nfiles and reject named pipes without waiting for a writer. The entire input must\nbe valid JSON before any selection. Each selector is budgeted before allocating\nthe next slice; sparse selector/path/edit arrays are rejected. Selections have a\nseparate **64 MiB estimated storage limit per read**, including aggregate\nmulti-selector expansion. Within it, arrays/objects/scalars retain their actual\nvalues, even when larger than the display. No routing object is substituted:\n`.map` and `.filter` work on the selected array. Multi-selector values remain\nindependently mutable. The input/storage safety limits throw with guidance.\nPlain .json reads are raw text, including malformed JSON; parsing is requested\nonly by `json`. Explicit line windows are not necessarily JSON documents.\nDo not combine json with complete, line windows, or source views. External read\noverrides reject JSON projection rather than silently ignoring the option.\nExplicit `read({path:\"TOKEN\"})` / `read({target:\"TOKEN\"})` and path arrays mean\nfilesystem reads even for extensionless names. Missing files throw, including\nwith `resolve:false`, `complete:true` or line windows. Only a bare string without\nthose options guesses between a filename and a symbol; use `{query:\"symbol\"}`\nor `resolve:true` when source search is intended.\nSource reads protect the resolved file from accidental `write` replacement even\nwhen the result is text or arrives in a streamed batch. JSON document fields such\nas `path` and `status` are data, never evidence that another file was read.\n\nUncaught read errors abort the program, including `return {a:await read(...),\nb:await read(...)}`; earlier successful values are not an implicit partial return.\nFor optional sources, explicitly return `await Promise.allSettled(paths.map(path =>\nread(path)))`. This keeps successful text and per-path errors without weakening\nrollback for uncaught failures.\n\nOther read options, even false-valued flags, do not bypass a captured external\nread executor; its policy, transforms and failures remain authoritative.\n\nFor focused Markdown/log audits, use read(path,{about:\"document path\"}) or\nexplicit offset/limit. Use complete reads for computation within the 64 MiB\nceiling, and return a summary. JSON over 16 MiB needs a streaming parser via bash. Arbitrary returned objects still have bounded previews, not implicit\ncontinuation handles.\n\n## Execution and automatic batching\n\n```js\nawait Promise.all([\n  edit(\"src/a.js\", \"oldA\", \"newA\"),\n  edit(\"src/b.js\", \"oldB\", \"newB\"),\n]);\nreturn await bash(\"npm test\");\n```\n\nPut already-known independent reads and checks in **one** Supernova program using\n`Promise.all` (or `Promise.allSettled` when failures should remain independent).\nSequence edits and their known verification in that same program. Start another\ninvocation only when the returned evidence is needed to decide what to do next;\nuse focused read windows to keep the combined result within its output budget.\n\nCompatible independently started reads coalesce at the worker/host boundary.\nNo additional batching command is required. Individual promises preserve their\nvalues, errors and per-read safety limits. Reads and known native mutations to\ndisjoint files overlap up to eight operations; same-file mutations stay ordered.\nRead/mutation transitions, shells, checkpoints and overrides remain barriers.\n\nThis does **not** reorder sequential `await`s or predict future model decisions.\nExplicit path arrays and automatic coalescing share the same typed delivery.\nSmall batches retain the single-reply fast path; beyond 64 KiB estimated storage,\nitems stream to the guest with acknowledgements. Delivery holds its I/O slot\nuntil acknowledged, and the final read waits for its host barrier to settle.\n\nEvery program runs in a fresh worker. One pristine worker is prepared for the next\ninvocation, then disposed on session shutdown. Executed workers are never reused,\nso guest globals cannot leak into a later program. Worker preparation still costs\nCPU and memory; it is moved off the next invocation's critical path, not eliminated.\n\n`maxHeapMb` sets Node's native worker heap cap. A worker-local check also limits\nheap plus external buffers to 1.5 times that value, sampled every 50 ms and before\nhost calls and final results. Process-wide RSS is never charged to an individual\nguest. These samples are best-effort: Bun does not enforce Node's native heap cap,\nand non-yielding code can prevent sampling until it reaches a command or returns.\nThe outer deadline still terminates non-yielding workers. This is not a hard\nprocess-memory or security boundary.\n\nFile changes are staged until program success. A throw before an external-mutation\nbarrier rolls them back. Shell execution flushes preceding changes; external shell\nside effects cannot be rolled back. Stale commits fail explicitly rather than\nsilently overwriting successful concurrent changes. This is not a cross-process\nfilesystem lock. Outcomes explicitly report committed/rolledBack **file versions**\n(counted per flush/checkpoint, not unique paths) and external-call attempts. A\nsuccessful inner checkpoint merges into the program, not necessarily onto disk.\nPending commits or failed recovery are reported as uncertain: inspect disk and\nrecovery backups before retrying. Import-based mutations and shell side effects\nare outside the VFS counters; this is not a filesystem audit.\n\n`edit(async () => {...})` creates a nested filesystem checkpoint. It returns\n`{ok:true,committed:true,value}` on success. On failure it rolls back and rethrows\nthe cause, so an ignored failed checkpoint cannot report program success. Use\n`try { await edit(async () => {...}); } catch (error) {...}` for deliberate recovery.\nShell commands (including background terminal controls), overlapping/nested\ncheckpoints, and concurrent commands outside the active callback are rejected.\nAwait the checkpoint before running shell checks. A checkpoint cannot roll back\nexternal shell effects. For a temporary mutation test, save the original text,\nedit and run the check outside a checkpoint, then explicitly restore it. Catch\nthe check failure, restore, and let that program succeed so the restoration\ncommits before reporting the failure. A `finally` restoration followed by an\nuncaught error is only staged and rolls back too. Keep a backup: cancellation\nor a worker deadline can prevent cleanup from running.\n\n## Context, caching and failure fidelity\n\n- Plain reads are not replaced with earlier-context references. A local cache hit\n  is not proof the model still retains an earlier result after compaction.\n- Text and JSON computation is independent of display limits. Source previews\n  provide exact continuation; raw displayed text can be clipped and must not be\n  parsed as a complete file. I/O/storage limits still fail explicitly.\n- Model attachments support PNG, JPEG, GIF and WebP. BMP and other unsupported\n  MIME types fail before attachment or commit, rather than causing a provider\n  HTTP 400 on the next request. Convert those sources to PNG first; Supernova\n  does not silently convert, resize or modify the original image.\n- Returned images remain image content blocks, including in arrays/objects. Images\n  not returned by the program stay out of model output. Returned images are limited\n  to 16 attachments / 20 MiB. Overflow fails the program with the aggregate count\n  and byte size, returns no images, and rolls back pending writes. Resize or return\n  fewer images when necessary.\n- Dense multiline string arrays can render as verbatim source blocks instead of\n  escaped string literals. Each block gives its array index and exact UTF-16 length;\n  strings and result types are unchanged. This is output framing, not source\n  compression. It is chosen only when shorter in characters than escaped output;\n  it does not guarantee lower billed tokens for every tokenizer or input.\n  Nested multiline strings use the same approach: the complete value structure\n  references `raw[n]`, followed by length-delimited verbatim string blocks. Literal\n  `\"raw[0]\"` values stay quoted; duplicate source is never deduplicated. Small values\n  keep their existing format. Machine-facing result values are unchanged.\n- Intermediate values stay inside CodeMode unless returned or logged. Final text,\n  errors and logs are bounded with explicit truncation. Details support rendering;\n  they are not a second model-facing transcript.\n- Source indexing/caching remains internal. Reads after mutations invalidate stale\n  state. There is no claim of provider-cache or total-task token savings.\n\nDefault limits are in `src/config/config.default.json`. Configuration loads from\n`~/.pi/agent/supernova.json`, the configured host directory, or `PI_SUPERNOVA_CONFIG`.\n\nCitation elision is **disabled by default** (`seenWindow: 0`): each result remains\nself-contained within the normal output budgets. A positive `seenWindow` explicitly\nopts into an experimental ledger with known retention gaps: hidden message details,\nlater context transforms and missing citation targets can invalidate its assumptions.\nIt is not a proven lossless optimization and is not recommended for production.\nText limits are character budgets, not tokenizer counts. `/supernova` reports\nprograms and output characters without labelling characters as tokens.\n\n## Optional workspace change notifications\n\nSupernova works without another search package. On hosts exposing `pi.events`, it\nprovides an advisory `workspace:changed` event for independent cache/index consumers:\n\n```js\n{ version: 1, cwd: \"/absolute/workspace\", paths: [\"/absolute/workspace/file.js\"] }\n```\n\n`cwd` identifies the calling workspace. `paths` contains absolute file paths after\na successful disk flush; paths may contain filesystem aliases. The frozen event\nand path array contain no source text. Checkpoint merges, restored rollbacks, and\nread-only programs emit nothing. A shell boundary can flush paths before a later\nprogram failure, so notifications are not conditional on overall tool success.\n\n`paths: null` means the changed paths are unknown: shell or delegated mutation\nattempts emit this even on failure, as does an incomplete commit recovery. Consumers\nshould invalidate conservatively, not interpret it as an empty change list or a\nguarantee that shell effects stayed inside `cwd`.\n\nSubscribe with `pi.events.on(\"workspace:changed\", handler)`. Mark cached state dirty\nsynchronously, then refresh when queried; asynchronous listeners are not awaited.\nObserver failures cannot roll back writes. This is an optional extension convention,\nnot a built-in host standard, durable event log, or cross-process filesystem watcher.\nThere is no dependency on or automatic routing to any consumer package.\n\n## Security and host boundary\n\nCodeMode executes trusted JavaScript in a terminable worker, **not a security\nsandbox**. The four adapters constrain writes/edits to the workspace and allow\nexplicit external reads. Absolute temporary-directory paths outside the workspace\nare not write destinations: use a workspace path such as `.work/verification.log`,\nor a separately authorized external command. Errors identify the rejected path\nand workspace, including symlink escapes. JavaScript imports and shell commands still have process\nprivileges. Do not run untrusted programs as though these adapters isolate them.\n\nPi preflights the outer `supernova` call. Internal primitives do not emit ordinary\nnative `tool_call` events, so third-party guards that only recognize top-level\n`edit` or `bash` need CodeMode-aware handling. Configured exclusions and supported\nhost-session execution safeguards remain enforced. Guards inspecting code/file\ninputs must also understand the programs array; its entries do not emit separate\ntop-level tool_call events. Actual-host smoke checks are\nnot a claim that every third-party permission extension has been validated.\n\n## Development and evidence\n\nImplementation is grouped under `src/`; all replacement tests are under `tests/`.\nRead-budget assertions now test the deliberate 0.9.0 contract: complete internal\nvalues and bounded model-facing output. Frozen token snapshots are unchanged.\nStrict regressions cover batching fidelity, image/context retention, checkpoints,\nmutation ordering, external symlinks, deadlines, worker isolation, bounded read\ndelivery, and execution-context environment.\n\n### Module boundaries\n\n| Responsibility | Modules |\n|---|---|\n| Registration and session lifecycle | `index.js` |\n| Program admission and batching | `runtime/program.js`, `runtime/batch-input.js`, `runtime/program-batch.js` |\n| Worker ownership and guest RPC | `runtime/runtime.js`, `runtime/worker-pool.js`, `runtime/guest-worker.js`, `runtime/guest-api.js` |\n| Host permissions, ordering and trace | `bridge/host-bridge.js`, `bridge/tool-registry.js`, `bridge/trace.js` |\n| Read routing and typed readers | `adapters/read.js`, `adapters/read-{text,json,image,focus}.js` |\n| Image validation and isolated decoding | `shared/png.js`, `shared/image.js`, `shared/image-worker.js` |\n| Bounded I/O and atomic transactions | `fs/file-io.js`, `fs/read-window.js`, `fs/vfs.js`, `fs/commit.js` |\n| Foreground/background process ownership | `fs/workspace.js`, `fs/process-tree.js`, `fs/background.js` |\n| Source search and ranking | `context/query.js`, `context/snap-search.js`, `context/source-entry.js`, `context/evidence-{graph,rank}.js` |\n| Model output and host rendering | `output/final.js`, `output/outcome.js`, `ui/host-render.js`, `ui/trace.js`, `ui/render.js` |\n\nPaths above are relative to `src/`, except `index.js`. Layer tests require an\nacyclic import graph and prohibit context modules from importing runtime code.\n\n### Verification\n\n**Portability pass, 2026-09-22:** the current product sources, including the\nin-flight terminal-poll shutdown guard, passed the package suite on real hosts:\n\n| Host | Node | Bun 1.4.0 |\n|---|---|---|\n| macOS, Node 26.7.0 | 357 passed | 355 passed |\n| DGX Spark, Linux arm64, Node 24.16.0 | 357 passed | 355 passed |\n| Windows x64, Node 24.16.0 | 348 passed, 9 skipped | 346 passed, 9 skipped |\n\nA fresh Pi 0.87 loader followed the configured Supernova symlink into this\ncheckout, registered its single `supernova` tool, and executed read/write.\nThe restarted active extension also completed a pipe job and interactive PTY\nwith stdin, output, and exit code 7. This does not inspect Pi's in-memory\nmodule cache or test remote provider sessions.\n\nCommands: `npm test --prefix packages/pi-supernova` locally; in the standalone\nremote package, `node --test tests/*/*.test.mjs`; for Bun, `bun --run test`\non a clean tree. The remote archive contained macOS AppleDouble\n`._background.test.mjs` metadata, which Bun mistakenly discovered as a test;\nthe successful Spark/Windows Bun reruns explicitly selected real files with\n`bun test tests/*/[!.]*.test.mjs` (PowerShell constructed the same filtered\nfile list on Windows). New macOS verification archives should use\n`tar --no-mac-metadata --no-xattrs` to prevent AppleDouble entries. Final\nfixture-only changes were additionally checked on macOS/Spark with\n`node --test tests/codemode/{papercuts,guest-contracts}.test.mjs` (59 passed)\nand `bun test tests/codemode/{papercuts,guest-contracts}.test.mjs` (57 passed);\nWindows reran the full suite. Totals are reported by each runtime's test runner.\n\nWindows verification selected native Git Bash and the real ripgrep executable\ndirectory in the test process's `PATH`. Its SSH token's backup/restore privileges\nwere disabled only for the test process so real deny-read/execute/write ACLs\ncould exercise permission errors. No machine-wide configuration was changed.\nBun 1.4.0 was installed into the temporary Windows verification directory;\nthe machine's older Bun 1.3.14 test runner is not a passing result.\n\nThe nine Windows skips remain explicit POSIX/platform-specific cases: shell\nstartup/quoted-script behavior, FIFO admission, alias and descendant semantics,\nand the large JSON allocation case. Windows literal argv now runs the same\nownership/malformed-argument tests as POSIX. PTY tests verify explicit Windows\nrejection rather than silently skipping or treating pipes as terminals.\n\nMutation checks rejected lost native-argv ownership, missing-parent and source/\nevidence-path regressions, dropped cleanup errors, and unmapped launch failures.\nA surviving ambiguous-source-path mutant led to a stronger regression. Tests also\nexercise both synchronous Windows and asynchronous POSIX launch failures.\nThese results do not claim native Windows PTYs, exhaustive interleavings, or\nnew Pi/OMP/provider end-to-end coverage on the remote hosts. Root release gates\nwere not run in this pass.\n\nThe historical 0.9.0 release candidate was verified on **macOS**:\n\n| Check | Result |\n|---|---|\n| Node 26.7 package suite | 315 passed; zero failures or skips |\n| Bun 1.4 package suite | 315 passed; zero failures or skips |\n| Pi 0.86.1 / OMP 18.2.6 | Actual host execution checks passed; Pi TUI checks passed |\n| Clean production-only tarball installation | Node/Bun and actual Pi/OMP smoke checks passed |\n| Lint, frozen token gates, repository release check and publish preflight | Passed |\n\nFailure-first regressions cover corrupt image data, malformed base64, MIME\nmismatches, decoded-pixel limits and nonfatal batch-text clipping. Additional\nchecks cover animated images, content-based validation reuse, cancellation,\ndecoder-watchdog recovery, and real failures after clipped output. The compiled\nOMP native-module issue is covered by the actual-host checks, not only unit tests.\n\n**Coverage limits:** a live Codex round-trip and Linux/Spark smoke checks were not\nrerun after the final image-validation changes. These results are not a claim of\nexhaustive platform coverage or guaranteed acceptance by every model provider.\n\nTest user-visible contracts through registered programs: exact source, on-disk\nresults, failure/rollback, isolation, bounded output, and usable host rendering.\nInject filesystem faults only to exercise real failure paths; do not prescribe\nprivate helper layouts, staging filenames, or syscall counts. New regressions must\nfail before the fix; for existing behavior, verify that a named deliberate defect\nmakes the intended test fail before accepting it. Preserve existing assertions unless an explicitly requested contract changes;\nthen test both the new behavior and the retained safety boundary. Cost gates\ncover avoidable search processes, per-read safety limits and\nprogress flooding; latency claims belong in the explicit measurement lane, not\narbitrary wall-clock assertions.\n\n```bash\nnpm test --prefix packages/pi-supernova\nnpm run lint:supernova\nnpm run measure --prefix packages/pi-supernova\nnpm run test:tokens --prefix packages/pi-supernova\n\nPI_SUPERNOVA_PI_ROOT=/path/to/pi-coding-agent \\\nPI_SUPERNOVA_OMP=/path/to/omp \\\nnpm run test:hosts --prefix packages/pi-supernova\n```\n\nThe explicit host runner requires macOS network sandboxing and fails, rather than\nskips, when prerequisites are absent. Verified locally against Pi 0.86.1 and OMP\n18.2.6: CodeMode execution, four primitives, automatic read coalescing, checkpoints,\nimages and failed execution. Pi's actual loader/runner and TUI are exercised; OMP\nruns in a disposable process through its actual session registry, with networking\ndenied. The Pi runner supplies a minimal tool registry, not a full provider session.\n\nThe local measurement compares identical eight-file programs with coalescing off,\ncoalescing on, and a pristine-ready worker. It reports latency percentiles,\nobserved maxima, raw samples and bridge calls. Set `SUPERNOVA_MEASURE_SAMPLES`\n(20 to 10000; default 200) for longer runs. Maxima describe the measured sample,\nnot hard real-time guarantees.\nIt excludes model latency, provider tokens and prewarm time; it is not a universal\ncomparison against every CodeMode implementation.\n\nSee [the changelog](https://github.com/AdityaVG13/pi-stack/blob/main/packages/pi-supernova/docs/CHANGELOG.md) for changes and compatibility notes.\n\n## Research and prior art\n\nThese references describe internal algorithms, not additional guest commands.\n\nThe existing implementation references are retained below. Mechanisms requiring\nan additional model call are not silently invoked by the tools.\n\n| Work | What we use it for | Where |\n|------|--------------------|-------|\n| **Zero-Mem: Zero-Token Memory Operations for LLM Agents**, Xiao, Zhu, Zhang, Chen, Hong, Zhuang, Zhang, Chen, Ouyang, Ren, Huang (arXiv:2607.29377) | Evidence selection: entity–context graph with co-occurrence weights (eq. 3–4), turn/window/episode hierarchy as line/span/file (eq. 5, 11), query profile and relational/local routing (eq. 6–7), lexical entity alignment and one propagation step (eq. 8–9), personalized PageRank over spans (eq. 10), per-view normalisation and ρ-weighted fusion (eq. 12–13), closure with bridges and neighbours (eq. 14), deterministic calibration (eq. 15). Top-K = 5 follows the paper's Top-5 ≈ Top-10 finding. | `src/context/evidence.js` |\n| **Agent Zero Memory: Provenance-Aware Long-Term Memory for LLM Agents**, Zhu, Wu (arXiv:2608.29606) | Every returned unit carries provenance (path, line range, verbatim text); the L0→L1→L2 read discipline (`read(query)` → `read(path, {about})` → `read(path, offset, limit)`); the citation-lock idea that a model should only cite what it actually opened. | `src/context/evidence.js`, `src/context/outline.js`, tool guidance |\n| **Harness-of-Harness: Multi-Day Autonomous Software Development with Continual Improvement**, Yan, Su, et al. (arXiv:2609.01481) | Progressive disclosure (index first, detail on demand) and carrying evidence forward instead of reconstructing it from code. | outline / result shaping |\n| **Act More, Decide Less: Skill-Guided Adaptive Action Chunking for Long-Horizon LLM Agents**, Yang, Jin, Zhao, et al. (arXiv:2609.02042) | Framing: one supernova program is an action chunk (one model decision, many primitive actions, stop at the first failing one). | runtime design |\n| **fff**, Dmitriy Kovalenko, MIT, <https://github.com/dmtrKovalenko/fff> | File search. We reimplemented fff's ranking in plain JavaScript after reading its Rust sources (`crates/fff-core/src/score.rs`, `dbs/frecency.rs`, `path_utils.rs`); the formulas and constants are fff's, the code is ours, and nothing runs out of process. Bounded fuzzy filename hints now run automatically for unmatched bare source names, using in-memory frecency and directory distance without extra filesystem probes. The full internal search implementation also retains typo-tolerant fuzzy path matching with boundary/consecutive/case bonuses; smart-case; exact-filename +40% and filename +20% bonuses; frecency boost `base·f/100` with fff's AI-mode decay (3-day half-life, 7-day window) and modification-recency steps (30s/5m/15m/1h/4h); git-modified +15%; directory-distance penalty from the current file (−1 per hop, floor −20); definition-first result hinting; fuzzy fallback on zero literal matches; weak-match cutoff; watcher-driven index refresh. Git/mtime boosts and full indexed grep are not mandatory stages of ordinary reads. Not ported: fff's SIMD/frizbee matcher (ours is an fzf-style greedy match with backward tightening), LMDB persistence (frecency is per session), and the MCP/Neovim surfaces. | `src/context/fuzzy.js`, `src/context/repo-index.js`, `src/bridge/host-bridge.js` |\n\n## License\n\nMIT. fff is © Dmitriy Kovalenko and contributors, also MIT.\n","readmeFilename":"README.md"}