{"_id":"@cjvnjde/pi-fresh-loop","_rev":"4-07b4fece1a2028389c29ce6391b7e2b0","name":"@cjvnjde/pi-fresh-loop","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@cjvnjde/pi-fresh-loop","version":"0.1.0","keywords":["pi-package","pi-extension","loop","fresh-context","automation"],"license":"MIT","_id":"@cjvnjde/pi-fresh-loop@0.1.0","maintainers":[{"name":"cjvnjde","email":"vitalij.nykyforenko@gmail.com"}],"homepage":"https://github.com/cjvnjde/pi-fresh-loop#readme","bugs":{"url":"https://github.com/cjvnjde/pi-fresh-loop/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"bb42cbec30dd42d2240b00911685034d5ad6dfae","tarball":"https://registry.npmjs.org/@cjvnjde/pi-fresh-loop/-/pi-fresh-loop-0.1.0.tgz","fileCount":4,"integrity":"sha512-CokpRJk3/vWHnBE6c4UNXe60jGW5La5KY/mn/jUdULLxlp4YrNvZtRrmwpzCqKxEErVfpRmbk0O1UU5hOWhvgg==","signatures":[{"sig":"MEYCIQCNbADP4QPm3syaECBlQ5WMWqATLuv+XRf1P7x3M5OJ9wIhANOyiu55FR4p5GZWtQ3iH6/KF0zsU+EmtI3hU7uxWbJ0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13836},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"91fb582f79761570c541bc4a5097bb3edfa16f02","scripts":{"test":"vitest run","check":"npm run typecheck && npm test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"cjvnjde","email":"vitalij.nykyforenko@gmail.com"},"repository":{"url":"git+https://github.com/cjvnjde/pi-fresh-loop.git","type":"git"},"_npmVersion":"11.17.0","description":"Run one prompt repeatedly in fresh Pi sessions until its stop condition is met.","directories":{},"_nodeVersion":"26.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typebox":"^1.1.38","typescript":"^5.9.3","@types/node":"^24.0.0","@earendil-works/pi-coding-agent":"^0.80.7"},"peerDependencies":{"typebox":"^1.1.38","@earendil-works/pi-coding-agent":"^0.80.7"},"_npmOperationalInternal":{"tmp":"tmp/pi-fresh-loop_0.1.0_1784057803413_0.5001666772016278","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cjvnjde/pi-fresh-loop","version":"0.1.1","keywords":["pi-package","pi-extension","loop","fresh-context","automation"],"license":"MIT","_id":"@cjvnjde/pi-fresh-loop@0.1.1","maintainers":[{"name":"cjvnjde","email":"vitalij.nykyforenko@gmail.com"}],"homepage":"https://github.com/cjvnjde/pi-fresh-loop#readme","bugs":{"url":"https://github.com/cjvnjde/pi-fresh-loop/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"502eb75765d4db231be809124c1ed5b8cc3482d3","tarball":"https://registry.npmjs.org/@cjvnjde/pi-fresh-loop/-/pi-fresh-loop-0.1.1.tgz","fileCount":4,"integrity":"sha512-mDXg2D2Dcgm3R13IUXJ4q6FVdkTUmZPIIGdYgRU4Dq2bfLHIHuFZdeEDKZkdfGd3wrakGni3EU0VLsdJLDC9vw==","signatures":[{"sig":"MEUCIDHuzXHGbUu3I8UFSMSkuKZ/TSmlQ7ASdj51hN/KyIEwAiEAsepGSPTvQxx84roHHxDrl7EePnQrcGtgpxuPsYYpFvI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cjvnjde%2fpi-fresh-loop@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13858},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"2ade6132e3c83895b44b3a0016510246ea7bb55a","scripts":{"test":"vitest run","check":"npm run typecheck && npm test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:021f62ca-82b5-4e01-9858-42d845e53fc6"}},"repository":{"url":"git+https://github.com/cjvnjde/pi-fresh-loop.git","type":"git"},"_npmVersion":"11.16.0","description":"Run one prompt repeatedly in fresh Pi sessions until its stop condition is met.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typebox":"^1.1.38","typescript":"^5.9.3","@types/node":"^24.0.0","@earendil-works/pi-coding-agent":"^0.80.7"},"peerDependencies":{"typebox":"^1.1.38","@earendil-works/pi-coding-agent":"^0.80.7"},"_npmOperationalInternal":{"tmp":"tmp/pi-fresh-loop_0.1.1_1784100306505_0.11306688994924019","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cjvnjde/pi-fresh-loop","version":"0.1.2","keywords":["pi-package","pi-extension","loop","fresh-context","automation"],"license":"MIT","_id":"@cjvnjde/pi-fresh-loop@0.1.2","maintainers":[{"name":"cjvnjde","email":"vitalij.nykyforenko@gmail.com"}],"homepage":"https://github.com/cjvnjde/pi-fresh-loop#readme","bugs":{"url":"https://github.com/cjvnjde/pi-fresh-loop/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"b73e0ae5794ed22f75329ac90aa62a50b798c650","tarball":"https://registry.npmjs.org/@cjvnjde/pi-fresh-loop/-/pi-fresh-loop-0.1.2.tgz","fileCount":4,"integrity":"sha512-LXWjUj8MhwR/dxxTvHzWBWjSuLWXwcvKzs9vZbO38p80CcZSYbVGskh9VOI9G9ez61IFDqcUjLxrsAvB5snNHQ==","signatures":[{"sig":"MEUCIE03oMnBoioU8qhaw8XXnTWIAkgpPB8iwVFv/lbkPTiQAiEAo5w755r/YsyGl08xykkQ8v0xpJyfIv4oKNW5lCjeL30=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cjvnjde%2fpi-fresh-loop@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15561},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"22d23175ad54bd11c6acecd15dcd690d5d92079a","scripts":{"test":"vitest run","check":"npm run typecheck && npm test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:021f62ca-82b5-4e01-9858-42d845e53fc6"}},"repository":{"url":"git+https://github.com/cjvnjde/pi-fresh-loop.git","type":"git"},"_npmVersion":"11.16.0","description":"Run one prompt repeatedly in fresh Pi sessions until its stop condition is met.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typebox":"^1.1.38","typescript":"^5.9.3","@types/node":"^24.0.0","@earendil-works/pi-coding-agent":"^0.80.7"},"peerDependencies":{"typebox":"^1.1.38","@earendil-works/pi-coding-agent":"^0.80.7"},"_npmOperationalInternal":{"tmp":"tmp/pi-fresh-loop_0.1.2_1784568423093_0.7765733708722142","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@cjvnjde/pi-fresh-loop","version":"0.1.3","description":"Run one prompt repeatedly in fresh Pi sessions until its stop condition is met.","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/cjvnjde/pi-fresh-loop.git"},"homepage":"https://github.com/cjvnjde/pi-fresh-loop#readme","bugs":{"url":"https://github.com/cjvnjde/pi-fresh-loop/issues"},"publishConfig":{"access":"public"},"keywords":["pi-package","pi-extension","loop","fresh-context","automation"],"pi":{"extensions":["./src/index.ts"]},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","typebox":"*"},"devDependencies":{"@earendil-works/pi-coding-agent":"^0.80.7","@types/node":"^24.0.0","typebox":"^1.1.38","typescript":"^5.9.3","vitest":"^4.1.9"},"scripts":{"test":"vitest run","typecheck":"tsc --noEmit","check":"npm run typecheck && npm test"},"engines":{"node":">=22.19.0"},"gitHead":"5a8291d211af05ba9016e875826f884e25cac289","_id":"@cjvnjde/pi-fresh-loop@0.1.3","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-F2PEB6bRSusGBIjCNKphvnCFyb1Tp+L3qmsfgyNgT3qZEDnOKOFeuIGp4N5tB+b6Q6GpcUmrwIGmCV6blBpobw==","shasum":"f347e5276d78c14f6a685dd5e61e91b28c46ac96","tarball":"https://registry.npmjs.org/@cjvnjde/pi-fresh-loop/-/pi-fresh-loop-0.1.3.tgz","fileCount":4,"unpackedSize":15604,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cjvnjde%2fpi-fresh-loop@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG+zY79MYo+v3T1Te/3JUWk6yD5jIY76Z62vuROaCklDAiEAv2JLkXRkSe++StbIYyPP8MTjMd90Hy8NDzbVg0OG2YE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:021f62ca-82b5-4e01-9858-42d845e53fc6"}},"directories":{},"maintainers":[{"name":"cjvnjde","email":"vitalij.nykyforenko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-fresh-loop_0.1.3_1784569289314_0.2259414516838434"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-14T19:36:43.196Z","modified":"2026-07-20T17:41:29.803Z","0.1.0":"2026-07-14T19:36:43.536Z","0.1.1":"2026-07-15T07:25:06.633Z","0.1.2":"2026-07-20T17:27:03.237Z","0.1.3":"2026-07-20T17:41:29.465Z"},"bugs":{"url":"https://github.com/cjvnjde/pi-fresh-loop/issues"},"license":"MIT","homepage":"https://github.com/cjvnjde/pi-fresh-loop#readme","keywords":["pi-package","pi-extension","loop","fresh-context","automation"],"repository":{"type":"git","url":"git+https://github.com/cjvnjde/pi-fresh-loop.git"},"description":"Run one prompt repeatedly in fresh Pi sessions until its stop condition is met.","maintainers":[{"name":"cjvnjde","email":"vitalij.nykyforenko@gmail.com"}],"readme":"# pi-fresh-loop\n\n[![npm](https://img.shields.io/npm/v/%40cjvnjde%2Fpi-fresh-loop)](https://www.npmjs.com/package/@cjvnjde/pi-fresh-loop)\n\nMinimal fresh-context loop extension for [Pi](https://pi.dev).\n\n## Install\n\n```bash\npi install npm:@cjvnjde/pi-fresh-loop\n```\n\nPackage: [pi.dev/packages/@cjvnjde/pi-fresh-loop](https://pi.dev/packages/@cjvnjde/pi-fresh-loop) · [npm](https://www.npmjs.com/package/@cjvnjde/pi-fresh-loop)\n\n## Usage\n\nRun one prompt repeatedly:\n\n```text\n/loop Read TODO.md. Complete one unfinished task and mark it done. When no unfinished tasks remain, stop the loop.\n```\n\nEach iteration:\n\n1. Creates a new empty Pi session.\n2. Re-selects the model active when `/loop` started.\n3. Sends exact original prompt.\n4. Waits for agent to finish.\n5. Starts next iteration immediately.\n\nPrevious conversation and tool output never enter next iteration. Project files remain shared, letting iterations coordinate through task files, checklists, Git state, or other durable state.\n\nInclude stopping condition in prompt. Agent can stop loop when condition becomes true.\n\n## Stop manually\n\n```text\n/loop stop\n```\n\nStop request takes effect after current iteration finishes. No next iteration starts.\n\n## Notes\n\n- One loop can run at a time.\n- Model is pinned at loop start, so model changes from other Pi instances do not affect later iterations.\n- Starting loop while agent is busy is rejected.\n- Esc/abort, provider errors, reload, resume, or manual session switching stop loop.\n- Iteration sessions remain available in Pi session history.\n","readmeFilename":"README.md"}