{"_id":"@4fu/pi-python","_rev":"14-5a03f00eb472880ef25283132639872e","name":"@4fu/pi-python","dist-tags":{"latest":"0.4.10"},"versions":{"0.1.0":{"name":"@4fu/pi-python","version":"0.1.0","keywords":["pi-package","pi-extension","python","background-jobs"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.1.0","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"458595fda96ffaf719952c721989ed1b1f06f39b","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.1.0.tgz","fileCount":6,"integrity":"sha512-/jvaWXfbbtfjoozGuar3OwcOpl7dj+x4Rpc7HOWhzrKy3MdN7uFgDKDJZLFUWhxuHhXl7O1OPHnPcrEF02JJcQ==","signatures":[{"sig":"MEQCIH5bKynGrfTdTMwhUB9Jna7BpDYWyM5pWMLP6IIFqkKJAiAGhbrbCBVLkY+dguwAVy/rwypMSXVVyZDa2r4FSPJ/Qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30689},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"256c969607b83302c146cbba6328814e689a235f","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"11.16.0","description":"Execute Python code in pi with persistent background jobs","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-coding-agent":"^0.81.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.1.0_1785829103401_0.4208922419100687","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@4fu/pi-python","version":"0.2.0","keywords":["pi-package","pi-extension","python","background-jobs"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.2.0","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"16b134ea1bfded481234e52be3e56663945ebcb0","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.2.0.tgz","fileCount":6,"integrity":"sha512-0wgiVIzQpwb+sDMTal/ZAwHE7ZywYWlJ8m25YlO1svgOpcWkRb7og9of7NK3OVnb2VOinUIfRqqXOKPhVhN+sA==","signatures":[{"sig":"MEYCIQDvpfrrXqeEuQ9G13CNCvvkTESQJ2Vee49d71suevj2QAIhAJH2pjaNQi4kIGDmsIs0u+tKsqpBIJrdhLck2rOlMQGi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42643},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"81e04d3fd9632dee4bfc6e0f2366bc9b7b813fdd","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"11.16.0","description":"Execute Python code in pi with persistent background jobs","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.81.1","@earendil-works/pi-coding-agent":"^0.81.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.2.0_1785835521454_0.7509207586416387","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@4fu/pi-python","version":"0.3.0","keywords":["pi-package","pi-extension","python","background-jobs"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.3.0","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"a6048b72f8d8aca505a096f4e8ae68cd3cc414fd","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.3.0.tgz","fileCount":8,"integrity":"sha512-zcGD65sK6MEjfUMupVkCFOUKRAv62Aakh9RN1h+VXMNBCRvVPhKrvMCwjcfL3ajVaRJBwnckxr6fVR0ejn28GA==","signatures":[{"sig":"MEYCIQD1Nkfvpujn3KUHLsp46JF9FLgKT5cl7AGNTkwAipE6vQIhAONFkLoZRqlCx29BZtig5SgN2K3vbEedtw25QsrYtiFP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78389},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"5b36a4338cc13d2f7fcf70983394a2e24169b2f3","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"11.16.0","description":"Execute Python code in pi with persistent background jobs","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.81.1","@earendil-works/pi-coding-agent":"^0.81.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.3.0_1786107110539_0.676190558016114","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@4fu/pi-python","version":"0.4.0","keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.4.0","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"a757f3e87961480c7bc8d235f8ecfbced53d87b4","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.4.0.tgz","fileCount":8,"integrity":"sha512-E3k3Uvk6dWZAd+xMn3zUXy3WreSprATONuXGn3q91kJV3EZ+gq2iXlw26AvTqsd8GkpcXGL4pE+9uvSb7iTbzw==","signatures":[{"sig":"MEYCIQChDNqQcnwLn55Yp8lkGn67Bkmqjg4anfdw/WW5m1UY+wIhAJFvol7/zP4UkD1xv/IH7NyHOjRGrSL5dYv0seBe8jbN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73604},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"d3853bb70c641fa54a7a6a60b32ea632c3d97373","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"10.9.9","description":"Execute Python code in pi as persistent background tasks","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.81.1","@earendil-works/pi-coding-agent":"^0.81.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.4.0_1786275757439_0.2655804554651364","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@4fu/pi-python","version":"0.4.1","keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.4.1","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"d3d674b8cc15a7f580adbf6d5dc0bb06a2e5f8da","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.4.1.tgz","fileCount":8,"integrity":"sha512-2MSG5Bzyv1DYt8DRDCz70MsGDh0puhUI0fMDpiX9yTSZSigfWpVJdP8Vy9ovwb//SWGbB60qCfwng54/OTrrtg==","signatures":[{"sig":"MEQCIG2gjDa+TwwV3oLUf7mVUq/K54M9u1lyE0xDQNLbMA7XAiBsJp7m+FVfyqWJuArZ13bPMuJ4GBZqXffCxzLyv0PxEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74552},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"c50d631de6cb665f756911dd7cfbd8bd99572795","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"10.9.9","description":"Execute Python code in pi as persistent background tasks","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.81.1","@earendil-works/pi-coding-agent":"^0.81.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.4.1_1786278498642_0.8778358879515089","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@4fu/pi-python","version":"0.4.2","keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.4.2","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"3cc67fbdce375034303417e68e8f0240c94c9b12","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.4.2.tgz","fileCount":8,"integrity":"sha512-Fr0ur2pWV16HhtcgVsRw9p7e2XH6LiEjemARBSAKTzggZIzLWPAtZ+6psLglTWf4ZB/UriR+LZLvT2YaCFXDyg==","signatures":[{"sig":"MEUCIDdjKFA1tKgi2CY2fjSZJIx8Ih06FYuCo+MIrotEsNrPAiEAt6KbJJn5Y7HwMCgJ9Sfiai/uIwurSmq/ZxI3YEyf034=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74376},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"f079d09d3323aedf326a74e5a8e734db2d2b56d7","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"10.9.9","description":"Execute Python code in pi as persistent background tasks","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.81.1","@earendil-works/pi-coding-agent":"^0.81.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.4.2_1786278900788_0.02441671073539231","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@4fu/pi-python","version":"0.4.3","keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.4.3","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"3ffff8a5451c4986473d5ad651fdb6867616c3fb","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.4.3.tgz","fileCount":8,"integrity":"sha512-BubntW00zTzW+ybgyDAaXsYodZJ6HKUmje7J3CgdiiA/5kvIR/bPawhubjPjfejy7DLId/2Ye0MslX4Bb8AJkA==","signatures":[{"sig":"MEQCIDclAGuJ0gIvvSBWYYSgMOMgShkPwznqvGjyActJnPcXAiAePVd/1iqPVCPlA8Db8o7wS2Ze3alEP4GI6yflWcZlSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74305},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"9dfd170af91d1fcb54b23d8af2717d1b7f1261f2","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"10.9.9","description":"Execute Python code in pi as persistent background tasks","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.81.1","@earendil-works/pi-coding-agent":"^0.81.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.4.3_1786281400794_0.9361948949136791","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@4fu/pi-python","version":"0.4.4","keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.4.4","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"23e8d6c985e1e5966e2004ab0f9a5dc5a0d6b0fc","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.4.4.tgz","fileCount":8,"integrity":"sha512-z4KFHUggeszhLdNPD+SLLyTxDBS19RRglvz14MzIJ4JDRRD+MlpiLb+meI+MBPDIs9qMu79b3XvKlHzhNYw3yg==","signatures":[{"sig":"MEYCIQCKywXD9KcbVgJSJ+X0bKviBZ9ZXDAWnwwlQMr5YHKBVgIhAOq0U2Ft1AWomYITWSgGLXFp5YGPBX/KubijO5xJpLoh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70348},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"33d141c4a78addd67e9a66671c8528545094497b","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"10.9.9","description":"Execute Python code in pi as persistent background tasks","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@4fu/pi-task-coordinator":"0.1.2"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.84.1","@earendil-works/pi-coding-agent":"^0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.4.4_1786292720566_0.4278580595522756","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@4fu/pi-python","version":"0.4.5","keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.4.5","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"3fbe00d35f4f897fd4bb53ec4dd38ef54c104754","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.4.5.tgz","fileCount":8,"integrity":"sha512-Rh+FVWHcHvEHoKvHDSaBKL3/CY1sSpxI6jjpDmsZHkiFQmYgIQodZl0oTYx9KZTa3l9D3106L0nibE5FL8KKoA==","signatures":[{"sig":"MEUCIQDqsrMQJPih0MuD4QsVSVutn3RZtHVishYrYvOdoP7q1wIgDyGdBl1OJlDJSF6kWDm/3C5Lal5awXBTSSkKutQqLCY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70348},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"d1716d029e07b5b165a284ea9172a67f988f9127","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"10.9.9","description":"Execute Python code in pi as persistent background tasks","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@4fu/pi-task-coordinator":"0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.84.1","@earendil-works/pi-coding-agent":"^0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.4.5_1786318279492_0.7315553702582047","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@4fu/pi-python","version":"0.4.6","keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.4.6","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"e784a62c71f9b567dbeea8b43840636f3e5476ec","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.4.6.tgz","fileCount":8,"integrity":"sha512-PSsyE9K/eb/bEzdyEag9f8EN11ff6IGPQ2i8mZi2RN18jNgOUIE+V0Dgu+Yl4ZrOyVPGmDMY0D7KxYXm2BoRnw==","signatures":[{"sig":"MEYCIQDaCdFHw1eCev7XrsyCMres3eAuiAl/j6zeU9wUG7yiQgIhAJZNht8KMUgtsx2p9dndvbmYZzadX9agjqI5gOO3rVt0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73758},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"8cef0d8a6a091222ccb3c3c823b93d2de65a0c78","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"10.9.9","description":"Execute Python code in pi as persistent background tasks","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@4fu/pi-task-coordinator":"0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.84.1","@earendil-works/pi-coding-agent":"^0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.4.6_1786331998560_0.7007655073451371","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@4fu/pi-python","version":"0.4.7","keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.4.7","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"57813d7bb7ecce384b01f25ed9851cb449f22f1a","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.4.7.tgz","fileCount":8,"integrity":"sha512-WH2Cf0oQaBoOG4pzigqlW9nExXQLwwgpEeiwoTrXzAl75Dh00t9tjQlkZ84IWfIX5cflC4RezKNv5YSNZMhnew==","signatures":[{"sig":"MEUCIFVwVvZg3j/RGa1UHYALHnLYWpgEPYZ0d8YVU25W+cm2AiEA+yNZhk5DNrkSyK1hJkaMTZ2W66PxKpbnCa5wkfy+bCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74615},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"090e7cac083b168f72ef157870bd5a28bf4cfb24","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"10.9.9","description":"Execute Python code in pi as persistent background tasks","directories":{},"_nodeVersion":"20.9.0","dependencies":{"@4fu/pi-tasks":"0.1.0","@4fu/pi-task-coordinator":"0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.84.1","@earendil-works/pi-coding-agent":"^0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.4.7_1786360114765_0.8079874254587165","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@4fu/pi-python","version":"0.4.8","keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.4.8","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"31b5c5b1ed85be8dc2c84af9a6c6976c515cb827","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.4.8.tgz","fileCount":8,"integrity":"sha512-khKvTB+wkJ8Q0YxJr81xrGeua7jzhUAkkVm5mqshwbtcbPxPk2sK3CgQUidIsjLgnn52AuC2jKDCEuXTAV2rbA==","signatures":[{"sig":"MEUCIEijv19hHpSYQoQvzIcB1grSJNnp35gvtyoRADN6/UvBAiEA1u7rBIlJvTimg6oqkFCHsdbGfS1JYXA9cicYw5LCq+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74615},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"cfb0d81ae197f28a65a7d919e5db77f27ef9c988","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"10.9.9","description":"Execute Python code in pi as persistent background tasks","directories":{},"_nodeVersion":"20.9.0","dependencies":{"@4fu/pi-tasks":"0.1.1","@4fu/pi-task-coordinator":"0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.84.1","@earendil-works/pi-coding-agent":"^0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.4.8_1786362880651_0.3863749935959495","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"@4fu/pi-python","version":"0.4.9","keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"author":{"name":"4fuu"},"license":"MIT","_id":"@4fu/pi-python@0.4.9","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"homepage":"https://github.com/4fuu/pi-python#readme","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"04a4a41aba0be8bd1275a5c07a94a734ac313e9d","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.4.9.tgz","fileCount":8,"integrity":"sha512-4AWAR57qxxGayiuxVEUsijPS15dMoif/P/R0B6X8941tf0XS75Bic3zm8sJYM/H4srtL3vhSBvQf+sToV4loYg==","signatures":[{"sig":"MEQCID4GBOGFj53qBRzkUVWAeMGUkVd1LcMSUflVw4q+K7ijAiBVIqaIicMFhHqXqGrbvju96vP9zbzOS7z22hl0/ltqVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74615},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"01f69be52989751e43de835a7dd6e331cf10e614","scripts":{"test":"node --test tests/*.test.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"repository":{"url":"git+https://github.com/4fuu/pi-python.git","type":"git"},"_npmVersion":"10.9.9","description":"Execute Python code in pi as persistent background tasks","directories":{},"_nodeVersion":"26.5.1","dependencies":{"@4fu/pi-tasks":"0.1.2","@4fu/pi-task-coordinator":"0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"^1.1.38","typescript":"^5.9.0","@types/node":"^24.0.0","@earendil-works/pi-tui":"^0.84.1","@earendil-works/pi-coding-agent":"^0.84.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-python_0.4.9_1787896302797_0.8728696856832729","host":"s3://npm-registry-packages-npm-production"}},"0.4.10":{"name":"@4fu/pi-python","version":"0.4.10","description":"Execute Python code in pi as persistent background tasks","license":"MIT","author":{"name":"4fuu"},"repository":{"type":"git","url":"git+https://github.com/4fuu/pi-python.git"},"type":"module","engines":{"node":">=22.19.0"},"keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"pi":{"extensions":["./src/index.ts"]},"scripts":{"typecheck":"tsc --noEmit","test":"node --test tests/*.test.ts"},"dependencies":{"@4fu/pi-task-coordinator":"0.2.1","@4fu/pi-tasks":"0.1.2"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*","typebox":"*"},"devDependencies":{"@earendil-works/pi-coding-agent":"^0.84.1","@earendil-works/pi-tui":"^0.84.1","@types/node":"^24.0.0","typebox":"^1.1.38","typescript":"^5.9.0"},"_id":"@4fu/pi-python@0.4.10","gitHead":"34f4aa1855548fd9a49898d2abf9f8802fe93057","bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"homepage":"https://github.com/4fuu/pi-python#readme","_nodeVersion":"26.5.1","_npmVersion":"10.9.9","dist":{"integrity":"sha512-Kve/eJfMy08E2bXr+cmrNZksFvwAmb3T46vBnPiifceZTOw2n6bNkmeL7vJzrkYnxQFdOHABy9jRMJ4ftzutDw==","shasum":"7a3174cb6e18f8e3fbfc167ecbbcb89c8a39318c","tarball":"https://registry.npmjs.org/@4fu/pi-python/-/pi-python-0.4.10.tgz","fileCount":8,"unpackedSize":74616,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBfPmLzi2vbBZGpfxZbQO4FiNmPeSwyAlMNMsCQ5mTPCAiADkDfwJaNfo9jZQWXoWjxmTJX08FVA1WNnf93Ncp2PSg=="}]},"_npmUser":{"name":"4fu","email":"npm@4fwu.com"},"directories":{},"maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-python_0.4.10_1788021111904_0.7901876779739034"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-04T07:38:23.193Z","modified":"2026-08-29T16:31:52.227Z","0.1.0":"2026-08-04T07:38:23.515Z","0.2.0":"2026-08-04T09:25:21.610Z","0.3.0":"2026-08-07T12:51:50.674Z","0.4.0":"2026-08-09T11:42:37.578Z","0.4.1":"2026-08-09T12:28:18.800Z","0.4.2":"2026-08-09T12:35:00.925Z","0.4.3":"2026-08-09T13:16:40.942Z","0.4.4":"2026-08-09T16:25:20.723Z","0.4.5":"2026-08-09T23:31:19.633Z","0.4.6":"2026-08-10T03:19:58.714Z","0.4.7":"2026-08-10T11:08:34.926Z","0.4.8":"2026-08-10T11:54:40.797Z","0.4.9":"2026-08-28T05:51:42.902Z","0.4.10":"2026-08-29T16:31:52.056Z"},"bugs":{"url":"https://github.com/4fuu/pi-python/issues"},"author":{"name":"4fuu"},"license":"MIT","homepage":"https://github.com/4fuu/pi-python#readme","keywords":["pi-package","pi-extension","python","background-tasks","persistent-tasks"],"repository":{"type":"git","url":"git+https://github.com/4fuu/pi-python.git"},"description":"Execute Python code in pi as persistent background tasks","maintainers":[{"name":"4fu","email":"npm@4fwu.com"}],"readme":"# pi-python\n\n[![Latest release](https://img.shields.io/github/v/release/4fuu/pi-python)](https://github.com/4fuu/pi-python/releases/latest)\n\nPersistent Python execution for [pi](https://github.com/earendil-works/pi). Long-running scripts, local analysis, and temporary services keep running while the agent moves on, with results delivered through durable notifications and snapshots.\n\n## Why pi-python\n\nPi can launch Python from a shell, but that does not give the agent a durable execution lifecycle. `pi-python` turns each run into managed work that remains observable after the original tool call has returned.\n\n- **Keep working while Python runs** — execution is detached by default and survives later tool calls, wait timeouts, tool aborts, `/reload`, and pi restarts.\n- **Know when work is ready** — optional literal readiness and automatic terminal notifications remove the need for repeated polling.\n- **Inspect results safely** — every query returns a bounded snapshot of current state and latest output without consuming the log.\n- **Stop the whole workload** — explicit cancellation terminates the Python process and its descendants rather than leaving child processes behind.\n- **Readable in the TUI** — source is syntax-highlighted, output previews are ANSI-safe, and active tasks remain visible with status and duration.\n\nThe extension intentionally manages independent Python processes rather than emulating a shared notebook or REPL session.\n\n## Features\n\n### Persistent Python tasks\n\nEvery Python invocation creates a persistent task and returns immediately unless the current turn explicitly needs to wait. Waiting can end at completion or at an optional case-sensitive readiness phrase, including one split across output chunks; a timeout or cancelled wait never stops the program.\n\nThe returned task ID lets the model inspect the latest snapshot, wait again, or explicitly terminate the complete process tree. Snapshots are bounded and repeatable rather than consumable. Task IDs belong to the parent session that launched them. Active tasks recover across `/reload` and pi restarts, and terminal records are retained for 24 hours.\n\n### Task notifications and TUI\n\nReadiness, completion, failure, and cancellation are reported automatically. Notification state is durable and deduplicated, and notifications aggregate with other installed `@4fu` background-task plugins. Explicitly retrieving a ready or terminal result cancels its pending notification.\n\nTool rows use a compact contiguous layout with Python syntax highlighting, ANSI-safe output previews, duration, and expandable details. Active tasks share the Tasks widget with other installed `@4fu` task plugins; `/tasks` shows active and recently retained terminal tasks. Upgrade related task plugins together so they use compatible shared task presentation packages.\n\n## Configuration\n\nConfiguration is optional. Create `~/.pi/agent/python.json` and run `/reload` after changing it:\n\n```json\n{\n  \"executable\": \"auto\",\n  \"utf8\": true,\n  \"unbuffered\": true\n}\n```\n\n| Setting | Default | Effect |\n| --- | --- | --- |\n| `executable` | `\"auto\"` | Tries `python3`, then `python`. Set an absolute path to select a specific Python 3 executable. |\n| `utf8` | `true` | Defaults `PYTHONIOENCODING=utf-8` and `PYTHONUTF8=1` unless already set. |\n| `unbuffered` | `true` | Defaults `PYTHONUNBUFFERED=1` and launches Python with `-u`. |\n\nEnvironment variables override the JSON file:\n\n| Environment variable | Setting |\n| --- | --- |\n| `PI_PYTHON_CONFIG` | Alternate configuration file path |\n| `PI_PYTHON_EXECUTABLE` | `executable` |\n| `PI_PYTHON_UTF8` | `utf8` |\n| `PI_PYTHON_UNBUFFERED` | `unbuffered` |\n\nBoolean environment values accept `true`/`false`, `1`/`0`, `yes`/`no`, and `on`/`off`. Existing Python environment values win. Configuration is strict: unknown fields, invalid values, or an unavailable configured executable produce a visible error.\n\n## Requirements\n\n- Node.js 22.19 or newer.\n- Python 3, available as `python3` or `python`, or selected with an absolute `executable` path.\n- macOS, Linux, or Windows wherever pi and the selected Python runtime are available.\n\n## Installation\n\n```bash\npi install npm:@4fu/pi-python\n```\n\nTry it for one run without installing:\n\n```bash\npi -e npm:@4fu/pi-python\n```\n\n### From source\n\nRun `npm install`, then add the repository path to `~/.pi/agent/settings.json`:\n\n```json\n{\n  \"extensions\": [\"/path/to/pi-python\"]\n}\n```\n\nRun `/reload` in pi after changing the extension.\n\n\n## Development\n\n```bash\nnpm install\nnpm test\nnpm pack --dry-run\n```\n\nThe test suite covers configuration, schema validation, persistent task recovery, session ownership, snapshots, notifications, readiness matching, waits, and process-tree termination.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}