{"_id":"@bacnh85/pi-cron","_rev":"12-4c2603538d50a0ee07fab265e53224cf","name":"@bacnh85/pi-cron","dist-tags":{"latest":"0.3.10"},"versions":{"0.2.0":{"name":"@bacnh85/pi-cron","version":"0.2.0","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"license":"MIT","_id":"@bacnh85/pi-cron@0.2.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"367a358cc0217f0837d2c4193d1971e1946976fc","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.2.0.tgz","fileCount":8,"integrity":"sha512-Oe81xln20WrMPSSiukxytWnUlK6V/G5jvn86ZjsJvvWWNSOYCD2L0XwK6Qvy/MTeDHYpXeTPzusFbGxhPeCVXQ==","signatures":[{"sig":"MEUCIGEcNQ4Z0FPhidPKowCR83ffVgJ3c57ar2aCSFTrGi4EAiEA8Kgy5txkLOwyLlEJwRX85PkAXFOhKeGNJs6AsA52qOc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36637},"gitHead":"69ae7f05df0b3821f81e919840ada22650017858","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.85.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <0.86.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-cron_0.2.0_1789004268054_0.7967634223110649","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bacnh85/pi-cron","version":"0.3.0","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"license":"MIT","_id":"@bacnh85/pi-cron@0.3.0","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"fd864f725e5d16ceff1bdd5c2940dbceae3312e1","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.3.0.tgz","fileCount":8,"integrity":"sha512-v0Qm2yjlONDiJxeXZPEMWwzw9yvzTMKwg6ppQVA0l3U3yXATNTjfb4hDOW95Ltxpr1cbsHoMxwBrhp/0ZXRXPg==","signatures":[{"sig":"MEUCIF8dyA7Xuf4aiV7C3pstDfCUhDBcjs4i7F9WvlSAw98zAiEAx9OtJVXl633mvDmDaC6XiQJctTfieFoWwRdLoOfTF8I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39672},"gitHead":"9db47f04d5755cdfb71353ed4d069fe6103a3446","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.85.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <0.86.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-cron_0.3.0_1789056238002_0.7612632529189862","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@bacnh85/pi-cron","version":"0.3.1","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"license":"MIT","_id":"@bacnh85/pi-cron@0.3.1","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"f4cd39c69ee0cfc6dff147f687c87dbea1f8a7b5","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.3.1.tgz","fileCount":8,"integrity":"sha512-Jj6xQWR6B5Yrl0MA4SaVzGQ3ie9ulEVU3nMpkmCIKgwjWN6tqqVy1sGIeHH12CruhIY0jva2hm7Ce9oOWb0m/Q==","signatures":[{"sig":"MEYCIQD5FUrPEXl3XcjXv7uR7YMhmd5wZcU8S5XpuSPeyx7XagIhAMihUeg7xu2JFOk4/4BjSZ59eAa8onI0SX/BldLnDYQE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD1LadCKFrN8tkt+GGyMbolRyMEtr0XHoUdoBfQKCaAVgIgGjMUavfQbWQTAzxvI/zG19dPXDqRPwINhsFLsdCqvmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40583},"gitHead":"1b9a30247c0ab140a62efbaa9bf5f77d0f4495c7","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.85.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <0.86.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-cron_0.3.1_1789083247870_0.5378624067165381","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@bacnh85/pi-cron","version":"0.3.2","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"license":"MIT","_id":"@bacnh85/pi-cron@0.3.2","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"dc15965c19ce95c97a96e7742388ade46e4bf876","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.3.2.tgz","fileCount":8,"integrity":"sha512-tlPRSDz7p8bxt+cgcoetnPbiJSeGsuRlyq8WKBZxmbR03cXhnQMs7rkxqM0OB0LnNLHAuyXD29xvURnGgdBgPA==","signatures":[{"sig":"MEUCID6A2ER7TNap3+MxZNF/6+NpKa/+HyLtNSa5s+1jmtm1AiEAkZquTPemNDvNLJQPEBWS6pEL3U1pNhftNe/WBEI68as=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGUGiNG+B1BvToIou+KsrTOeHR1eWBilIKaUeOYMty1LAiAAnsp7C1TzARirvD6XHMFY25/4LTGl9gS0jOjI8FMUGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42143},"gitHead":"014c762f4a0ba5a5066f0d0e8f040e144f7f8e75","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.85.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <0.86.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-cron_0.3.2_1789602766427_0.2633398791125394","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@bacnh85/pi-cron","version":"0.3.3","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"license":"MIT","_id":"@bacnh85/pi-cron@0.3.3","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"c9d81543eea5d257026a17ecc797101563e27c27","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.3.3.tgz","fileCount":8,"integrity":"sha512-hhmy/2Cus+B9SwCkC1Wicp2ES/d6b4/cJHC5lUCOgnNr16UqnPR9K/VNbfq/xPce+Z9tuhpoYAUjLoG7MVs9wA==","signatures":[{"sig":"MEYCIQCHMuGzZ5rDbLvrIigXtBw5a2BRlB/tdWXlbS5aBnLH8AIhAJJEojxT7YKwt1ZUCTpDt2PKpDzatxBFNFFzXJU7YXP6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICkufoycBIXFD+EcccN2g/P2lWOGAuR6yODEljdTTyitAiBr+FoxCnqdSJl035aP7uTuTQiDhcdpvIE6MyBX4pEU8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42498},"gitHead":"f36d4311eb8679c2529d87746cb2c37aba9c8479","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.86.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <0.87.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-cron_0.3.3_1789884015532_0.22913460847409595","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@bacnh85/pi-cron","version":"0.3.4","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"license":"MIT","_id":"@bacnh85/pi-cron@0.3.4","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"86daba88cb4b2bfdf0f12a5d84dda6fcc7acca9a","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.3.4.tgz","fileCount":8,"integrity":"sha512-iLds9irvVD9Nqs/oJuAWZTA06Hh+Gy9BPWfbiK+LvfYb6uBUFWPZNGeKUeiAQOOF4i929O4rcTbvJ4DKmOUEbQ==","signatures":[{"sig":"MEUCIQCIGVnHcAgWgbrwkf1p0eDAgRAO1yPbA625eJZsBPX40gIgTRAQcHZ7opOtKKelkiqyKl0QiT5Rurpd7sPYzZHaMIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCGrua4Jvd1kEdCT1VcgjD/pUOHD1H5USyVlt+ihimk9QIgBFO9zSjI4DAn3txl4rihR2yMUz9xgny2uC3JnT/SJtY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42686},"gitHead":"f8eb312610b129b82caee02fa689a220e9202b12","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.87.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <0.88.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-cron_0.3.4_1790040667201_0.83607412409066","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@bacnh85/pi-cron","version":"0.3.5","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"license":"MIT","_id":"@bacnh85/pi-cron@0.3.5","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"d1a378e4b2d881786128bbf2aafec0a40ea03d3b","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.3.5.tgz","fileCount":8,"integrity":"sha512-U599oeti3SkAm/Gpdmg7zhsevsAs101/FUd1hUlN8F3XKNSDkke43hhQjAP9kvU2zlYTCaKdWmUG8/xIZfoYyw==","signatures":[{"sig":"MEYCIQCfNwgEKqY1vFX/x9iqgFsptvwW8cdmiK2vLO00qY+MawIhAKsVw7uIxwT2iYJjDHOSA5k4OoZ3k38SjjZuqJ0uE4Zs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEBnO8HspqT/H8yh7PrpHuyMddtd25+YRxaLqy7L4EegAiEAtQPJRZISXVg/UbPv/6BRIU6+7FBPkbjvRmFECSvu2rs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43774},"gitHead":"e0ab9215e2df54e5fa42f1c6cc6f616124fdea95","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.87.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <0.88.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-cron_0.3.5_1790123342816_0.9621022084717725","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@bacnh85/pi-cron","version":"0.3.6","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"license":"MIT","_id":"@bacnh85/pi-cron@0.3.6","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"73abd0692a66b181e2e3f813ae5a2e75a36bdad0","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.3.6.tgz","fileCount":8,"integrity":"sha512-bMhUN9sCkfPMxuA6E3lDjY6L9bhC0UeCC96KG9g8bIbJLF4p7TpwpNLOEf71D4goihF7oWpYNxlE4CA0iRtpug==","signatures":[{"sig":"MEQCIBntcF3A9NLsz6sR/8bfJBV7qNXVuQ4ekWoZcYRHnueSAiAzArcCXObS916jnDD5cFMj97zCh3rEYFFyB5a2RqAaVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHpjPBlNFHCNHwa6G9F6ar30mdlF0OUlx/Qo+7YFgHLgAiEAm1s+OUTfyBnVJVPMAswwcFj7DpQiM8mq9kQ2dVYWOrU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44704},"gitHead":"47ee5073837a97916572d769f13d86f55d54ef00","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.87.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <0.88.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-cron_0.3.6_1790209536128_0.09259885894730324","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@bacnh85/pi-cron","version":"0.3.7","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"license":"MIT","_id":"@bacnh85/pi-cron@0.3.7","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"80abce3eaa7f251727000d47e8b43c1c5fbd0179","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.3.7.tgz","fileCount":8,"integrity":"sha512-n0SXzJ5SUdtr2lMJBtBcLmDgS1eTmIALx2b3jO7q4577ejd40ElfYd8zUkDYYOfsM/kFYOjBmEDRdiL+FgquJw==","signatures":[{"sig":"MEUCIQDRivu9WeaIWSiQQZzMC6iePgahbS7tzvrFRtyoVJ8qpQIgPt7cR+jn4NBbrufNtbAj7FX8YTPo9mIxloPJJcNb5wI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC9w3JfRDBZZ/E0P0RaPVD7mjs16MFmRVgArCyPhhqFZQIhALhOKJkRyu3vofWAO15RmcDO8IgP8GYxqBKvPq9W64Co","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46760},"gitHead":"edad246dd00bc061afdca0cd50782d3883535f96","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.87.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <0.88.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-cron_0.3.7_1790386944033_0.1620021410373742","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@bacnh85/pi-cron","version":"0.3.8","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"license":"MIT","_id":"@bacnh85/pi-cron@0.3.8","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"523b1a8daed6955d328afc1062ad4cc707fe24c6","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.3.8.tgz","fileCount":8,"integrity":"sha512-MWlyCZtVEG3bWuwXTE5nMQ+No1bIgU9NN+bAXuCFrAW7RSCK5+UP6lQTyukguEgjwwpB/UwxOi5oj0lwIH+TTA==","signatures":[{"sig":"MEUCIG1EcCRfTdCNAe+a/pWLWu3m63dh2wP2QhhL/PSWc8t8AiEAuopz6t5dF0KCqMRvM7OAa3Hp0fGtldXoDWAbGEcWTWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDnP4BDaDRPN6J70Ehrq8Xb1ybe1UfXookdZCcekfKrwAiBV/YPbxrhjvJ1kr6Nw1t2z5Z7Qa91k1c9fLRfy/6lRFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47085},"gitHead":"96408d174879a677b06eed011e02b3b0ddaafa03","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.87.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <0.88.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-cron_0.3.8_1790479403808_0.8560607611859845","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"@bacnh85/pi-cron","version":"0.3.9","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"license":"MIT","_id":"@bacnh85/pi-cron@0.3.9","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"dist":{"shasum":"9e4e6064451d474a18f90ab0dcccaf94157765ed","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.3.9.tgz","fileCount":8,"integrity":"sha512-JQGz/FqG0mj4WL6TFVctgtTZQioEAXz2CmfA0iCif25UzWFCDrvQN7Ns+4xN6jULgbOZBpGzJ4baV2XhRqJ6nA==","signatures":[{"sig":"MEUCIQDyjGxmum5FQPPJCi/zyyUHEcP4c3N51/K1TKH+S77UgQIgONeMJiuLNaOtChjYySp/6CBlbsinL1T3icWVk/ZiM88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDtpTHcSCdxz1cEGsEat4SYYNhVB+m6xPZtDq9YfToVQwIhAIFwUXIpnjxeLOOdHB0FXxe5tmNx0W9+njBkKc8UHd8T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49517},"gitHead":"90930b50f5fc0a4491a748ee1692db40f7ec358a","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.87.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <0.88.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-cron_0.3.9_1790555269630_0.9142126201067569","host":"s3://npm-registry-packages-npm-production"}},"0.3.10":{"pi":{"skills":["./skills"],"extensions":["./extensions/index.ts"]},"_id":"@bacnh85/pi-cron@0.3.10","bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"dist":{"shasum":"0f60ba67fae955b8ea0b178205af0f04aa0b97c5","tarball":"https://registry.npmjs.org/@bacnh85/pi-cron/-/pi-cron-0.3.10.tgz","fileCount":8,"integrity":"sha512-cKRQaAazEW8dUgsGxzjkOzHPApbcr/Wu/deH+lG0+YG5ZxmBz1BXuIMQVHFQuk+alyshlzXsD3toSeibfW+d4Q==","signatures":[{"sig":"MEUCIGEHMhFrm1VV/SbBnTpq/btO3jvuNN+oew+6S4sZeYDvAiEAxoBYIl2PmxVh81dpDBR9dOw+YuEgTzHqO39DcVyHUiY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDYYNlT9uagnA+idK+74MI1fu52aW0Rj2b4VjhOBmaBTAiEAh0rdaW2F0P3rZKp1WHlM+pCDDQUO4JDOqQ3mA5WOJ5k="}],"unpackedSize":50642},"name":"@bacnh85/pi-cron","gitHead":"5388a5f1987873fe1355064f72021452c4347c72","license":"MIT","scripts":{"test":"cd extensions && npx mocha","typecheck":"tsc --noEmit"},"version":"0.3.10","_npmUser":{"name":"bacnh85","email":"mail@bacnh.com"},"homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"overrides":{"diff":"^8.0.3","js-yaml@>=4.0.0 <4.3.1":"^4.3.1","brace-expansion@>=2.0.0 <2.1.4":"^2.1.4","serialize-javascript@>=5.0.0 <7.0.5":"^7.0.5"},"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"_npmVersion":"10.9.8","description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","directories":{},"maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"_nodeVersion":"22.23.2","dependencies":{"cron-parser":"^5.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","mocha":"^11.8.0","typescript":"^5.9.3","@types/node":"^20.19.43","@types/mocha":"^10.0.10","@earendil-works/pi-coding-agent":"^0.99.1"},"peerDependencies":{"typebox":"*","@earendil-works/pi-coding-agent":">=0.84.3 <1.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-cron_0.3.10_1790729292098_0.03775631350950981"}}},"time":{"created":"2026-09-10T01:37:47.841Z","modified":"2026-09-30T00:48:12.339Z","0.2.0":"2026-09-10T01:37:48.208Z","0.3.0":"2026-09-10T16:03:58.150Z","0.3.1":"2026-09-10T23:34:07.974Z","0.3.2":"2026-09-16T23:52:46.507Z","0.3.3":"2026-09-20T06:00:15.620Z","0.3.4":"2026-09-22T01:31:07.280Z","0.3.5":"2026-09-23T00:29:02.892Z","0.3.6":"2026-09-24T00:25:36.221Z","0.3.7":"2026-09-26T01:42:24.115Z","0.3.8":"2026-09-27T03:23:23.900Z","0.3.9":"2026-09-28T00:27:49.717Z","0.3.10":"2026-09-30T00:48:12.166Z"},"bugs":{"url":"https://github.com/bacnh85/pi-extensions/issues"},"license":"MIT","homepage":"https://github.com/bacnh85/pi-extensions/tree/main/pi-cron","keywords":["pi-package","pi-extension","cron","scheduler","automation"],"repository":{"url":"git+https://github.com/bacnh85/pi-extensions.git","type":"git","directory":"pi-cron"},"description":"Scheduled jobs for Pi — cron-style jobs that fire a prompt into the live session while pi is running, with past-due catch-up and crontab export for 24/7 needs.","maintainers":[{"name":"bacnh85","email":"mail@bacnh.com"}],"readme":"# @bacnh85/pi-cron\n\nScheduled jobs for Pi — cron-style jobs that fire a prompt **into the live\nsession** while pi is running, with past-due catch-up and crontab export for\n24/7 coverage.\n\n## Install\n\n```bash\npi install @bacnh85/pi-cron\n```\n\n## Usage\n\nThe `cron` tool (and `/cron` command) manages jobs stored in\n`<agentDir>/cron/jobs.json`:\n\n| Action | What it does |\n|---|---|\n| `add` | Create a job: `name`, `schedule` (5-field cron), `prompt` (fired as a standalone turn), optional `cwd`, optional `model` / `thinking` pins. |\n| `remove` | Delete a job by `name`. |\n| `list` | Show name, schedule, next/last fire, enabled, last run status (`[ok]` / `[FAIL: reason]`), model pin. |\n| `run` | Fire a job manually right now (also the retry for a failed job). |\n| `enable` / `disable` | Toggle a job. `disable` pauses (schedule kept; skipped by ticks and export); `enable` recomputes the next fire from now — no surprise catch-up fire. `add` also accepts `enabled:false` to create a disabled job. |\n| `test` | Preview the next 5 fire times of a schedule. |\n| `logs` | Tail the newest run log of a job — see what a failed run printed. |\n| `export` | Print crontab lines so jobs also run while pi is closed (headless `pi -p --no-session`, logs under `<agentDir>/cron/logs/`). |\n\nExample: *\"every weekday at 9, check CI status and summarize failures\"* → the\nagent converts that to `cron add schedule:\"0 9 * * 1-5\" prompt:\"...\"`, verifies\nwith `test`, and adds it.\n\n**Execution model:** a 30s in-process timer fires due jobs as follow-up turns\nin the open session; past-due jobs catch up once on the next tick (if pi was\nclosed at the scheduled time). Jobs only run while a pi process is open — use\n`export` + system crontab for unattended schedules.\n\n**Model & thinking pins (Hermes-style):** set `model:\"provider/id\"` and/or\n`thinking:\"high\"` on a job and it runs **headless in its own pi process**\n(`pi -p --no-session --model … --thinking …`) instead of the live session —\nuseful for cheap/fast models or isolated runs. Output is logged under\n`<agentDir>/cron/logs/` (default 10 min, configurable via cron.timeoutMs) and the result is delivered\nback into the session as a follow-up. `export` includes the pins in crontab\nlines. Headless children run with `PI_CRON_DISABLED=1`: the cron scheduler is\noff inside them (no parent/child races on `jobs.json`) and job mutations\n(`add`/`remove`/`run`/`enable`/`disable`) are refused — a fired run can never\nschedule more jobs.\n\n**Loop guard:** for 30s after a fire is armed, `add`/`remove`/`run`/`enable`/`disable`\nare refused. This is a time window, not in-flight immunity — a fired turn running\nlonger than 30s can still mutate. Treat fired prompts as trusted inputs, same as\nany tool call the session makes.\n\n**Working directory:** unpinned jobs only deliver into a session whose cwd matches the\njob's recorded `cwd`. A session opened elsewhere skips the fire and marks it\n`[FAIL: cwd mismatch …]` (visible in `cron list` / `logs`) instead of running the\nprompt against the wrong project. For cross-cwd reliability, pin\n`model`/`thinking` — pinned jobs run headless in `job.cwd` no matter which\nsession ticks first.\n\n**Single session per agent dir:** the jobs store has no cross-process lock.\nRunning multiple pi sessions that share an agent dir can double-fire jobs or\nlose concurrent edits — use one cron-active session per agent dir, or give\neach session its own `PI_CODING_AGENT_DIR`.\n\n## Configuration\n\n`settings.json`:\n\n```json\n{ \"cron\": { \"enabled\": true, \"tickMs\": 30000, \"timeoutMs\": 10800000 } }\n```\n\n- `enabled` — global kill switch for the scheduler.\n- `tickMs` — tick interval (clamped 5s–10min).\n- `timeoutMs` — hard cap for headless (pinned) child runs — SIGTERM at the cap, SIGKILL after a 5s grace (clamped 1min–24h, default 10min). Raise it for long pinned jobs.\n\n## Notes\n\n- Every fired job spends model tokens on a real turn — keep prompts short.\n- Schedule validation and fire-time math use `cron-parser`.\n- Headless cron children run with `HERDR_ENV` stripped (and `PI_CRON_DISABLED=1`), so they never auto-delegate to herdr panes — subagents in cron jobs always run in-process.\n","readmeFilename":"README.md"}