{"_id":"oira666_pi-limits-wait","_rev":"32-0c392d8e8c021c1b4b4433446e3c5f60","name":"oira666_pi-limits-wait","dist-tags":{"latest":"0.6.5"},"versions":{"0.2.4":{"name":"oira666_pi-limits-wait","version":"0.2.4","license":"MIT","_id":"oira666_pi-limits-wait@0.2.4","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"ebc4e0de38cdf0e33e81140a3ba43837b2940444","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.2.4.tgz","fileCount":4,"integrity":"sha512-FYwNr/PTBXUqbu7AX6Dyw/9P79rn88ljRTcb2tVSiyNoKZkOgyVc8btiu1tDBEZPrV/dbB5Nr/vSrG0j8F2ieA==","signatures":[{"sig":"MEUCIQDZtryxdOslX5HAUp3KKvA7AdfHiJE5eIK/ClnAd2EsQgIgQosPYDUXj7V/YvPPK/F0z9pRurFyqDnugTyMSFV0VcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19524},"type":"module","engines":{"node":">=18"},"gitHead":"a523b30d3f076064e9424647eebfb26534d284ec","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.2.4_1778670097648_0.7722740210637185","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"oira666_pi-limits-wait","version":"0.3.0","license":"MIT","_id":"oira666_pi-limits-wait@0.3.0","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"9e9c2343cc7f57ebda99feb0f868b4586c14bac6","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.3.0.tgz","fileCount":4,"integrity":"sha512-3vuCOt1YNo0ErdiH8RTFUauFEDxLUuOw+PRAPg9TqnKVh4NecYwEzs3jpmJEqpWybUiVQAl/Lh3GE8DPll2q0A==","signatures":[{"sig":"MEYCIQDDgkYzJ5W+54eLi2JLOBNRXKVazOy7JMUW4BygCKNaeAIhAP6VPtviVLzJ+/SmpGWxUuTudrEIRN0txhFNwasWZL0d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21410},"type":"module","engines":{"node":">=18"},"gitHead":"abf3c951bdb9d404af1f149c732171824d2c71a7","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"24.12.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.3.0_1778671459893_0.14155351556995077","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"oira666_pi-limits-wait","version":"0.4.0","license":"MIT","_id":"oira666_pi-limits-wait@0.4.0","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"6dfbcd868995f606b6fa809e364b5b3505a3c900","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.0.tgz","fileCount":4,"integrity":"sha512-IWa94K+ob70CTLurqRZ72dqftmDa/ErR9HiFvWw/30CzY+g0vcdHcjLTpvpPPVQ+M6Djy+d2ocnfAzDsHpE4LQ==","signatures":[{"sig":"MEYCIQDdm+s/etPDKCQl5RiQ64NqJ0ETSdPs0dlUID37Y+V/EwIhAOcLlxxLxplHiZCUoLbcnWM4aUetlqNLVfDp8J6/P0MY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35450},"type":"module","engines":{"node":">=18"},"gitHead":"b3e82d658d8807bc30c4264379c13028ba728cf8","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.0_1779436001774_0.2777211081649056","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"oira666_pi-limits-wait","version":"0.4.1","license":"MIT","_id":"oira666_pi-limits-wait@0.4.1","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"936ceb1801ebe39150d9df3324c6ea63a42d065c","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.1.tgz","fileCount":4,"integrity":"sha512-pnumsxlFg/FlAlm9FFYe2WSjkfhyEcOPm+UqOu1QxmGhvQaPZ03BI2SgIXnIiFaUmaKgJBmxfgo1CPsRxnJuVg==","signatures":[{"sig":"MEUCIQDwfV9p9As292TnmbiD3bsTif38pZHXqSJN32KgvzLFoQIgMTcZJ3hbeVrNCg0dSeR2LJzISWyRAabg/oL3VVp2iwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35458},"type":"module","engines":{"node":">=18"},"gitHead":"397b83a9dcb8a94aa2238c0224756038f2a063d2","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.1_1779436464781_0.6625644581504255","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"oira666_pi-limits-wait","version":"0.4.2","license":"MIT","_id":"oira666_pi-limits-wait@0.4.2","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"f5e6ea502b996c0267519da08cf25d17f1f0360b","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.2.tgz","fileCount":4,"integrity":"sha512-F+LzASe8VsBFkEfLuCyTExBMAtmgm5aHhHp7y/qKkpVsgWzgL9D/xu1gN0wf5PvdXtyL5Rd3IAoMSM/IYfKnVw==","signatures":[{"sig":"MEUCIAhPSUAfEl3ixvzA9JihUSvQbDtvyQstQtOR/sKEcKMVAiEA+mR2vPQm2BMd3qX/7k9Qvzadgx3rIvf+pAelzMebSew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39731},"type":"module","engines":{"node":">=18"},"gitHead":"21eafae86efacf21945057ec0c200bbeb6cf1f4a","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.2_1779545171320_0.6200749154385337","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"oira666_pi-limits-wait","version":"0.4.3","license":"MIT","_id":"oira666_pi-limits-wait@0.4.3","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"a85b3e04857bcf1b264905a5625dd80fff8bced9","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.3.tgz","fileCount":4,"integrity":"sha512-2StycSctugCFarkdZLMu2hAJMYmtbDREymt+00JUqDTzs6fygW7XONeOvyCp1T1a1uB8nzAotdtL8w9QtdmmPA==","signatures":[{"sig":"MEYCIQDAO/rcq/iUpY2StwJVKMgR1pG5gT83HN1/aBZKHvPmkwIhAKi2osUR4X2SoN12xjuWfDA4okuUbnI/4juqvkv6Dmng","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40506},"type":"module","engines":{"node":">=18"},"gitHead":"469eabfb222d95f2777e69022785d1addd8726ce","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.3_1779545611842_0.7470734385303794","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"oira666_pi-limits-wait","version":"0.4.4","license":"MIT","_id":"oira666_pi-limits-wait@0.4.4","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"daf2ca7de6bfeda9f3a4f0b8a44a68cc4d60d7c0","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.4.tgz","fileCount":4,"integrity":"sha512-a55C2BupjrHSLELqMbuQdOhS/aT5aDMYAN7aQfVywVmPGcdK3H6+3XgP4MIrsOv47bR1aljMM8M5Gi2ToBaHAg==","signatures":[{"sig":"MEQCIHD2fhv5Ol1Z6QGICoz7nA7Eb9w9299WhhKmauszktZ0AiBWxwIacMyN4/DvGTpHtH+OkYh1UpSTSo9RIqZHylwPkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40551},"type":"module","engines":{"node":">=18"},"gitHead":"6986413b9981de7d0470c76d182bc04fa02fe9ef","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.4_1779547895755_0.6446697815898341","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"oira666_pi-limits-wait","version":"0.4.5","license":"MIT","_id":"oira666_pi-limits-wait@0.4.5","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"8b7e26c4b6850eaa775c63cbfba14138c1f1fb3a","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.5.tgz","fileCount":4,"integrity":"sha512-rk9TDhf7JI9aTMBhpqgGQCwbSxww+Dx8QFdaadgGeGx1vA8hmEYjfw5RPsKsddnig1SaDWK48UOyzT/3D6HMFg==","signatures":[{"sig":"MEUCIQDRWvYFxPmo0mJyvnPuwPdoZqaLfIgF6PrYrRfnBgvsyQIgUb2ioOulcjB9Jv1kLIao1g6P8lpSNCyqXWvi4IfeYP4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41936},"type":"module","engines":{"node":">=18"},"gitHead":"23cc7b16a60c807d0cc9d9fa3b2857d14f1b966b","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.5_1779702338831_0.45944831931282515","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"oira666_pi-limits-wait","version":"0.4.7","license":"MIT","_id":"oira666_pi-limits-wait@0.4.7","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"2192630edace505baac0b46244ecce846ecdcd95","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.7.tgz","fileCount":4,"integrity":"sha512-1VtVBWcABW3AB1+Wvgunpkdraks678Iwphg+UWUy4dpXGDIZkRPTgGsqHUTWZ2vfhXARiuloo9M973LBrHfKhA==","signatures":[{"sig":"MEUCIQC+TR17PAlMfoi+xymSib17c3aBl3mHt/XMvfFVlT6L8gIgPDqzu9BjOVc0mpPE31cnkcYJ6dniUUxLoe+iigcIUxM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45537},"type":"module","engines":{"node":">=18"},"gitHead":"b0bfdeaf668bf3c6b7598fdb25ab6a15ed58493e","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.7_1779716643038_0.8638674761760925","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"oira666_pi-limits-wait","version":"0.4.8","license":"MIT","_id":"oira666_pi-limits-wait@0.4.8","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"515dd521b87e618644d51410826d17bc4b4187ad","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.8.tgz","fileCount":4,"integrity":"sha512-9vbQVes+5Ao889Ww6P5RCXuLzBkMNaR2hh3U+up4IuOtmk0qJcEPHhU0NRpBEYsN+nRBD88Opven9zakyZdcLw==","signatures":[{"sig":"MEUCIGqgL6fYlmoCKknbYb0+Dj+D/P38mDE7wpVtUp5tCm0EAiEAvEl1d1Y6OzXxTArj/syXnorCCgvMQgK8I24Eb9D1mZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47326},"type":"module","engines":{"node":">=18"},"gitHead":"e517f753f8f753947a84671843d76318535a2a2b","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.8_1780051007226_0.16646820643216476","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"oira666_pi-limits-wait","version":"0.4.9","license":"MIT","_id":"oira666_pi-limits-wait@0.4.9","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"9b7f657cdb0395e18b0bfdbd54f3478248ed9bd0","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.9.tgz","fileCount":4,"integrity":"sha512-kTYqdKRV+nYMSwXA5EXg0nrPJLELTrzcPdBBu+6NFrBXq1WhTCZyEsIXu31xtUphv+TIiU9EBDbRk2PpYd3PhA==","signatures":[{"sig":"MEUCIQCiVJTllaRIVpyroO6KasfhSUz/vu1To0Tfy91VycMX1wIgdKqKitpwSrVG59pktXcUdjgGvBb1xYQcV40usQWQMCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53225},"type":"module","engines":{"node":">=18"},"gitHead":"0185b1913cafc59b845370d7195b709ce5f306f3","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.9_1780059532225_0.3643217522123352","host":"s3://npm-registry-packages-npm-production"}},"0.4.10":{"name":"oira666_pi-limits-wait","version":"0.4.10","license":"MIT","_id":"oira666_pi-limits-wait@0.4.10","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"8a3e4e194bbf713782bf5a50c7546d044f7dd772","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.10.tgz","fileCount":4,"integrity":"sha512-ImtVkr0k/rMNEvcw9M8nrX+m+OrQPIiKXzT3rz/Bi3k3lIVd0tXgENmgR8he8zS/h72JM3gUWieP2y5KUCF3Dw==","signatures":[{"sig":"MEUCIQDcZqPkl0+3pUNSMo/ebDpT3W61CCWRb2helD9GLikqlgIgB3xkMXQ/Equ5hpwFWfupcgVyUE5Onm0CpOkCEXOzPNg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55444},"type":"module","engines":{"node":">=18"},"gitHead":"f224d15d512be568c4be67e4731dfb47308d9343","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.10_1780686586390_0.05861788372030463","host":"s3://npm-registry-packages-npm-production"}},"0.4.11":{"name":"oira666_pi-limits-wait","version":"0.4.11","license":"MIT","_id":"oira666_pi-limits-wait@0.4.11","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"a3c37fa15ce26b5fdff0e1488b0a3638116e2dd1","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.11.tgz","fileCount":14,"integrity":"sha512-fiojNL0n3MOpEY1Qsmy2gTT+4pchJi8NbcJMT2hJ/jkQmITk//uJi+kblqKDT8pnN6CdqZBMLkLW9TUfXLFPkg==","signatures":[{"sig":"MEQCIE3wxnrxlE5HQbe3Q8mN/SH1XDUMcrtsucM0fcjKP21KAiB5giacSDRAVAhWz9QZHW0DNNdiJo+823UVHmMlmtbYjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56225},"type":"module","engines":{"node":">=18"},"gitHead":"6715bb6970e8db4e7868046167acd23af2884b7f","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.13.0","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"24.16.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.11_1781294058898_0.11878006056756885","host":"s3://npm-registry-packages-npm-production"}},"0.4.12":{"name":"oira666_pi-limits-wait","version":"0.4.12","license":"MIT","_id":"oira666_pi-limits-wait@0.4.12","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"a3744752ae010f53b3c0beac6f8e18b18b6e3474","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.12.tgz","fileCount":14,"integrity":"sha512-39jm5GW7lgzR5qziXLlmoHtN4fESc9DqsvWefXVcwgikmOHGaWZBiPQtPCNBxw81VTNcq+I/AYOHHVK6rNvj1Q==","signatures":[{"sig":"MEUCIBLvKIwxrnoxVBibZhPCXOsl+hHJoEN0bA/vITe1WKRQAiEA3FcKXT85tBAczDE/hK+VmkBDHB/RE8xFx3z6aQJZpIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58311},"type":"module","engines":{"node":">=18"},"gitHead":"9b7fd9d9650f7c14af4d7a63a16992b76164c4cb","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.12_1782290969257_0.4065223158800899","host":"s3://npm-registry-packages-npm-production"}},"0.4.13":{"name":"oira666_pi-limits-wait","version":"0.4.13","license":"MIT","_id":"oira666_pi-limits-wait@0.4.13","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"2b3c554fa6e36f1303900301cd2526299cab3557","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.13.tgz","fileCount":14,"integrity":"sha512-kpNUiV+DbgsRbj9sINPkQ77KWUveSUBGeS8kRm+yyflauhuZMz4ydGBi8j5v5l1e+O16xEj2qzERLko4qXKUng==","signatures":[{"sig":"MEUCID0++AIz/dcxSRUUhEeQmcroBAvmm5rN5iVaqWfd56jlAiEA5HZmosA5CodLxoyCdR9F56QrttxuQHX6QHoi9YbppWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58460},"type":"module","engines":{"node":">=18"},"gitHead":"4a26e0cae5593ec399d794581884ab85ab2f6651","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.13_1782376800721_0.19081988493757573","host":"s3://npm-registry-packages-npm-production"}},"0.4.14":{"name":"oira666_pi-limits-wait","version":"0.4.14","license":"MIT","_id":"oira666_pi-limits-wait@0.4.14","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"e45f68ba8050915fb7ce21abc4af907749855521","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.14.tgz","fileCount":14,"integrity":"sha512-X/QtoITfQcY6EiqA1xfuA1kCs5grdK4TIcwWz/xmqpHAY4HXRqh1eRfYm/HM/uYtxyFlWqY1vivqc9twZ0iRDw==","signatures":[{"sig":"MEYCIQDjiH7ClKk74Nc5cv/Onh6AIZPVylUqt5F5BMu/RYE4ggIhAMjZ6IonAixkBmjIGg7KZHJjsEy5aM4lZiVAZK+bCdLV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61877},"type":"module","engines":{"node":">=18"},"gitHead":"70f86c5a025db7036d5d01693c375a10b3e4a7b9","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.14_1782488276733_0.1252732052322234","host":"s3://npm-registry-packages-npm-production"}},"0.4.15":{"name":"oira666_pi-limits-wait","version":"0.4.15","license":"MIT","_id":"oira666_pi-limits-wait@0.4.15","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"05fc1b3eefae288a84a91fe7f369e2e8b27894e1","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.4.15.tgz","fileCount":14,"integrity":"sha512-lAOkFunWxkkXHqqZg4J7qvo/kpyYSZFHe/t8RbkeUIiVK0LVHJzKIwntG4+Ml+h5CfAKUdxBPPqKZpSnTnpcxQ==","signatures":[{"sig":"MEUCIENGViEaRIC6IHif5mIafxo0uugD9w0YhNdQzmHPpPDTAiEAjwQbTWDNomsmY7i4JUaJUU1JF/vnfjy1GM1YPazX2Dk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65538},"type":"module","engines":{"node":">=18"},"gitHead":"8b6226de8c42a49d3c5b369aca737465b4bdb141","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@mariozechner/pi-ai":"^0.66.1","@mariozechner/pi-coding-agent":"^0.66.1"},"peerDependencies":{"@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.4.15_1784284202162_0.15051844154122174","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"oira666_pi-limits-wait","version":"0.5.0","license":"MIT","_id":"oira666_pi-limits-wait@0.5.0","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"0afdc6aec91843f2f0daab3b1da69946ac5c6d69","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.5.0.tgz","fileCount":14,"integrity":"sha512-KwankCxBWs3A5D+6IXnXbnXsSOmQCVtA95XPjzamyy7TctMZUuclzGSFjQOyFPvtmaosfvOeEVNYbhWliyXxcw==","signatures":[{"sig":"MEUCIQC/P3zI0XQ7mCYCtWGJQ19FXjXmx7QRc5tSYufzIHVdowIgXmmlO/mHkLxoZ6e/vcsqUKhrroB9wwoOmTeXcrshdYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69567},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"d094b64b8fb801445b0311f6350584b138f9bda9","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-ai":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.5.0_1784295555226_0.5381140636129387","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"oira666_pi-limits-wait","version":"0.5.1","license":"MIT","_id":"oira666_pi-limits-wait@0.5.1","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"57fc9591db140e0cb8a8ac4ae2c822c0ffcd4c27","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.5.1.tgz","fileCount":14,"integrity":"sha512-3mDq4AL2VyUX2WT8cHwF2CnsC+fnVETndvsA1RVBZNw6tE9FtC0y7iTOLGdPd9OiR5ppx0lVhNRFcDyO2P0cqQ==","signatures":[{"sig":"MEUCIQD/RV9+pgMuvVYiAewpf35mHu/UKwZnvJRLrvxPL/z64gIgON2HJqL8+be/VifoMgQxWQjZdTk9RhnmFa0LTNd9crk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72544},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"c684a43d2e6da7f6c703e711c446da248bd898c1","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-ai":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.5.1_1784629986294_0.14714290351386383","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"oira666_pi-limits-wait","version":"0.5.2","license":"MIT","_id":"oira666_pi-limits-wait@0.5.2","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"e3a8c11c34aedfbef13f3c4a28731e423053a83c","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.5.2.tgz","fileCount":14,"integrity":"sha512-1Y1ZybDTRHksBQ4e9Fy2aysVO4/LQjZg/fNt+Fmz4pywrMavnC5BIM1jY+qm6CmG70s5Dw7sDkWHDvPgtLY6yQ==","signatures":[{"sig":"MEUCIChaPKwx2tYKi8SyzIbfzW4HSeYvRwvXkJWntCEJTbqBAiEAsWiuq7rAB3uHMnEo95HgwCnM02lH3q+gCOANokpbwI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73121},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"229c400e7b1c629a29fe0832da05f2b393f89717","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"peerDependencies":{"@earendil-works/pi-ai":"^0.80.10","@earendil-works/pi-coding-agent":"^0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.5.2_1784893671268_0.9851665341908051","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"oira666_pi-limits-wait","version":"0.5.3","license":"MIT","_id":"oira666_pi-limits-wait@0.5.3","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"2d8c8053a57595a4b54989c5850c8cb4e9b7a9fe","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.5.3.tgz","fileCount":16,"integrity":"sha512-e0mc1GLvQ+rVXaXH1S+xYHhQJjMsCghCtk/dDcFtlUA/7lx6OJlyOsaGUoEUjmExCx2erZS+I7LAQyQCpG4aKQ==","signatures":[{"sig":"MEYCIQCGfx29VsGUvN2SB4+15xCMsc0Aft/+D/+ct1JvAXSGLAIhANTHFJSUiVOTq4W4H5XHgBhdz01JcZZLRnuCB309d7rg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88352},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"b2fb521e6de9a480e0b40c5ff2d3d525ed9cebff","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.13.0","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"24.16.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.5.3_1785594917546_0.34369511197062663","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"oira666_pi-limits-wait","version":"0.5.4","license":"MIT","_id":"oira666_pi-limits-wait@0.5.4","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"b70c388951d922aafc22d19fe9d460766567152d","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.5.4.tgz","fileCount":16,"integrity":"sha512-ULQ9poPgHvN5KBR8FOA4YCGJv56jbQsySU27ZqFc43SxJAtpY76XuQ3suR6JrMS4XVq9Lui20r0/5cMlDPBPHw==","signatures":[{"sig":"MEUCIQDt20Gdi/+jeIA7wyXBS1LPI/QRk7mxcgoGGG/JfTG7rQIgBxtxQJCdl0ly5Oephs57pm4qWKQV+0JfXhxuTFQ4+rQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93571},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"3317cfee6d6950bb1c6d50860a5bdda2e65f165a","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.13.0","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"24.16.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.5.4_1785629790519_0.35211967604754735","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"oira666_pi-limits-wait","version":"0.5.5","license":"MIT","_id":"oira666_pi-limits-wait@0.5.5","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"2cf0669171c70bf91c414627eb970ebf93408001","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.5.5.tgz","fileCount":16,"integrity":"sha512-OafYzCZsaueJKxkGKOuYMr1TkUjE4OCSM8wj898ZKFl/gjCxa5A/xO0VkTd560wZqGhPuwiPM8fqtAPrE+q+Rg==","signatures":[{"sig":"MEUCIQClC3uZEUFM5Bq3R2l78KjOCc88qlGYQZq0rxJ8BVbXSQIgdQCHzheA51k6yeqpMlJ+FaZBoBo5SPWWR7LkTZ7fc5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103110},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"3db2aba9e5f65305707e00b697dd6460e30fd6b3","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.5.5_1786111026008_0.28386928917219745","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"oira666_pi-limits-wait","version":"0.5.6","license":"MIT","_id":"oira666_pi-limits-wait@0.5.6","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"d6cab6e63f2797d720b23a04083624c8808edb2e","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.5.6.tgz","fileCount":16,"integrity":"sha512-JjEs3y96VCJr/RXMVBHMtOfYzrR7WdTghPS6ORmwRVqoVhzAAwIDvUiOmnc515GEWbpj365bc7EYjOeywmyzTg==","signatures":[{"sig":"MEYCIQCdh0wucUfZN50NDqW3jKc4tntphB0ZtG6f4ZTGN0d6bQIhAMGYMoqL8rvQruADLQ/AGhi2YtkeE/GuW+IsaUzq+0Eb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104801},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"aa06c052940dc93e4a03de298942f351a927190b","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.5.6_1786282077186_0.9183572513253557","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"oira666_pi-limits-wait","version":"0.5.7","license":"MIT","_id":"oira666_pi-limits-wait@0.5.7","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"010ca48008e8c945a979568c607bc8d6d658afe1","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.5.7.tgz","fileCount":17,"integrity":"sha512-onnB8TiAB5j3lzSWCiguAn2n+1j4VyItLNxKv59FpENt4npKhHmznAjbakiQJHVHc81NITN1VB5a0refUKXv6Q==","signatures":[{"sig":"MEUCIGbjK9tY98F5Yh/3WB460nlciHslYnvsiK53XGG5VdFIAiEAks4BcCB9dlRMsClSuxc8NztOilXy8NZRLHVaVepY0nU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123722},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"dc13cafcc5676134fd12e30e3d778ff6c29de017","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.5.7_1786526817926_0.988305581727269","host":"s3://npm-registry-packages-npm-production"}},"0.5.8":{"name":"oira666_pi-limits-wait","version":"0.5.8","license":"MIT","_id":"oira666_pi-limits-wait@0.5.8","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"b4079fb855c5b1ba9ec7274e683410a1713c7700","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.5.8.tgz","fileCount":17,"integrity":"sha512-iIyuX3nIdW9QwZM+WrHdiE3pogwk3KPF7TsSCV1RtOVkukjXyUoLH6X3X5/D0LC1jJJ0sJz2xeCTjSkNJV4CDQ==","signatures":[{"sig":"MEUCIBUC5fLq3RLFsWLOQL11668YuhHkQS6eIXZh37Ese8tGAiEAmG9G9RTXOxVXw/qsdYJH8aSYnpW8uoZyYxyZWtbcnIc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126476},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"3d04470cd50e66eb00825494af298795c5f2aaef","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.5.8_1786552112573_0.038184168793850004","host":"s3://npm-registry-packages-npm-production"}},"0.5.9":{"name":"oira666_pi-limits-wait","version":"0.5.9","license":"MIT","_id":"oira666_pi-limits-wait@0.5.9","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"adcdd6bdae80d0ae4fbd0e3fad77d33085fdce21","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.5.9.tgz","fileCount":17,"integrity":"sha512-HoPxw1Xl3hj8at68rH2B7rkppCYIRw84aslONg+oAdIvxJ1lY6M0rFvYn/t/whHLlk+B9fOocUcQWASCbj7aFw==","signatures":[{"sig":"MEQCIAkOvwsYtg1XlKPvILX9tIIJShunl1vmfhiQX8FAZFKqAiBC5yTuUKxpb2rGyOHkGk1X03oRNFEKkd38Jdq8rXo0Bg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125621},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"5293bd048e13b2b781a8716ae5770f34d27ff6f3","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.5.9_1786989882442_0.09426941008958334","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"oira666_pi-limits-wait","version":"0.6.1","license":"MIT","_id":"oira666_pi-limits-wait@0.6.1","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"b84f23f57ce61e045bcbe4bba97526078726c6b7","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.6.1.tgz","fileCount":17,"integrity":"sha512-K9/nTToozIf4LAuljQc/DfwwP69zDNUrRngqUiyLoDhWmcyuBxqB0Tz9QkKDp/SAkpcSgTIv6TH0JlxKDdLMmg==","signatures":[{"sig":"MEUCIQD/gInnyHn7qw9qIsk2KsH8BnpzvQvPKmlu5/WwPUQoUQIgAvWw6/Azx8FJ13woCU5gFXihx3f8PQrE/YmiEJKp4ck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCMxKG6ooM+r/BlFOTYS7gA9cJpZE0B6O+9fFlB+84ZPQIhAKPFPefbQmnw3Fif8lzFkqHWeeausk5KdINHxlyu4l2a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140137},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"73e490f99f63d63d23d3b8bd74d015c82a914b10","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.11.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.2.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.6.1_1788895528981_0.7720409829795989","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"oira666_pi-limits-wait","version":"0.6.2","license":"MIT","_id":"oira666_pi-limits-wait@0.6.2","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"050922a8ea389fc3bb3f49db6485c4922f1b2e7c","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.6.2.tgz","fileCount":17,"integrity":"sha512-HqA3+BtRgXyCmBTiWi7rTRYDIqFWskNnjIn/s9fL9kmd2T5CCGDj9B+uexgyTUn4wjopxvrd7J6+YoLbRYx4bw==","signatures":[{"sig":"MEYCIQD7Hc3EZ0XZEgn2olmK2VLfnqC2x1OwVFmLWaaCS43DZAIhAM0LO6rNK/73nEVCe4r2zRbYq6w0usNmDd7AkXxXLEa2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDBrmI7aYtyJhbbe9McNNMIDMszWjRwC1KVmiF9zcIbLQIhAJat3iL98WtDzWFdungXCyTR8jGrCBFd42r1VtxjwS2I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138458},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"6089e9beee242496bef0b68b8c339cd56e1776be","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.19.1","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"26.8.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":">=0.80.10","@earendil-works/pi-coding-agent":">=0.80.10"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.6.2_1789981049929_0.26220114432517483","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"oira666_pi-limits-wait","version":"0.6.3","license":"MIT","_id":"oira666_pi-limits-wait@0.6.3","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"713f04905e0bfffe47172e27b06f4227629c241f","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.6.3.tgz","fileCount":17,"integrity":"sha512-wT+CxftQ+Pn7TFDngsvR9px+Xw5hd2juUUHrky9iLhU9WGcfQN61jlV6EPfgCvFrwn5Bu9Y86B2BWskGYSjn8w==","signatures":[{"sig":"MEYCIQCx2BnfRJv7o86PW17d8//xs+lTEYJin7IBg77/DnX6rwIhANwUloYUAmO+LOcFzvbCDUdLin9XgxnQmXcrD1pr2g+/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCqsHZXnDiD9/AmtKYijtXXFJG+H+C5/xu5ETFlHaOdjQIhAO3XAH/ejUSRHKzpZA/y/1PfQLanpY+WMletZz7NyExV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138442},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"b3b224cce8fcfe0d53cf032d6c385866942ff804","scripts":{"test":"tsx src/__tests__/test-extension.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.13.0","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"24.16.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.6.3_1790713770842_0.14924203534935954","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"oira666_pi-limits-wait","version":"0.6.4","license":"MIT","_id":"oira666_pi-limits-wait@0.6.4","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"homepage":"https://github.com/gee666/pi-limits-wait#readme","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"2b575800596e70736da87636420378675e577893","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.6.4.tgz","fileCount":17,"integrity":"sha512-D5CayqOhHWv39CLTV/x4KzNP7r/bfiuThKlWMRXh+lqF9vOhb9nZ05EVhiLCzk+KHO54KoPiYL3aiouIyaod7Q==","signatures":[{"sig":"MEUCIQCBgybADh9Tb3YYQR9xZiVRhS1z91epQ+4uLpVhYXjhHQIgcQs/5SzyQf35dFvenUfyw7Zh7eX1LosJ4o5oQ7eZqbE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCmBzWUOHeRH4z9SKSYRzzGhzROrf4qZTEd+OgSrMlmyAIhAOVpf/4IQYlsEIa33BP4wIDI1ImiHo29p56s7sMbmyaq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142467},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"ad0204d866c96216aa40b0e85bd4a0fff72bb1ba","scripts":{"test":"tsx src/__tests__/test-extension.ts && tsx src/__tests__/test-wait-ui.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.13.0","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"_nodeVersion":"24.16.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/oira666_pi-limits-wait_0.6.4_1790718676080_0.11498693370265012","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"pi":{"extensions":["./src/index.ts"]},"_id":"oira666_pi-limits-wait@0.6.5","bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"dist":{"shasum":"40ff1abbbbb70a20b03c583a09bbe97d1e23241c","tarball":"https://registry.npmjs.org/oira666_pi-limits-wait/-/oira666_pi-limits-wait-0.6.5.tgz","fileCount":17,"integrity":"sha512-qJik/AMbhg5pScj0yfDqXdxNK6J4r+oRs6PIUDHQLBiXZQ0Q/+2e/j6GpZGD1zUa63dYviI8Y1AFH1UK3tMZ9Q==","signatures":[{"sig":"MEUCIQCG277rQuUUJDvinCpr1WjITqYCHiattU1xz33bQ6YbTQIgTtqpoZ9Zfft+IcugdNlqhXtxOGJVDnsJv05q0a3BPQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGgM532E7zaDcao6A1iOv2BVR+pr+E+c5Lw2CPf9198yAiBB5Wd9BUcWYnCJYQhgZVDCHXRyjMXBRasaG9JjbkpZqQ=="}],"unpackedSize":144849},"name":"oira666_pi-limits-wait","type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.ts"},"gitHead":"f8902499563a58a7681f762b8a720b2c02ef2bc9","license":"MIT","scripts":{"test":"tsx src/__tests__/test-extension.ts && tsx src/__tests__/test-wait-ui.ts","check":"tsc -p tsconfig.json --noEmit","pack:check":"npm pack --dry-run","prepublishOnly":"npm run check && npm test && npm run pack:check"},"version":"0.6.5","_npmUser":{"name":"oira666","email":"oira666@bk.ru"},"homepage":"https://github.com/gee666/pi-limits-wait#readme","repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"_npmVersion":"11.13.0","description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","directories":{},"maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"_nodeVersion":"24.16.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@earendil-works/pi-ai":"0.83.0","@earendil-works/pi-coding-agent":"0.83.0"},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/oira666_pi-limits-wait_0.6.5_1791062101781_0.476649979981584"}}},"time":{"created":"2026-05-13T11:01:37.574Z","modified":"2026-10-03T21:15:02.027Z","0.2.4":"2026-05-13T11:01:37.787Z","0.3.0":"2026-05-13T11:24:20.040Z","0.4.0":"2026-05-22T07:46:41.912Z","0.4.1":"2026-05-22T07:54:24.949Z","0.4.2":"2026-05-23T14:06:11.484Z","0.4.3":"2026-05-23T14:13:31.988Z","0.4.4":"2026-05-23T14:51:35.903Z","0.4.5":"2026-05-25T09:45:38.991Z","0.4.7":"2026-05-25T13:44:03.177Z","0.4.8":"2026-05-29T10:36:47.361Z","0.4.9":"2026-05-29T12:58:52.381Z","0.4.10":"2026-06-05T19:09:46.586Z","0.4.11":"2026-06-12T19:54:19.040Z","0.4.12":"2026-06-24T08:49:29.399Z","0.4.13":"2026-06-25T08:40:00.867Z","0.4.14":"2026-06-26T15:37:56.882Z","0.4.15":"2026-07-17T10:30:02.321Z","0.5.0":"2026-07-17T13:39:15.359Z","0.5.1":"2026-07-21T10:33:06.441Z","0.5.2":"2026-07-24T11:47:51.410Z","0.5.3":"2026-08-01T14:35:17.728Z","0.5.4":"2026-08-02T00:16:30.650Z","0.5.5":"2026-08-07T13:57:06.149Z","0.5.6":"2026-08-09T13:27:57.338Z","0.5.7":"2026-08-12T09:26:58.083Z","0.5.8":"2026-08-12T16:28:32.790Z","0.5.9":"2026-08-17T18:04:42.600Z","0.6.1":"2026-09-08T19:25:29.065Z","0.6.2":"2026-09-21T08:57:30.001Z","0.6.3":"2026-09-29T20:29:30.934Z","0.6.4":"2026-09-29T21:51:16.156Z","0.6.5":"2026-10-03T21:15:01.878Z"},"bugs":{"url":"https://github.com/gee666/pi-limits-wait/issues"},"license":"MIT","homepage":"https://github.com/gee666/pi-limits-wait#readme","repository":{"url":"git+https://github.com/gee666/pi-limits-wait.git","type":"git"},"description":"Extension for PI that allows to automatically wait for limits to reset and retry the request","maintainers":[{"name":"oira666","email":"oira666@bk.ru"}],"readme":"# Pi Limits Wait\n\n[![npm](https://img.shields.io/npm/v/oira666_pi-limits-wait?style=flat-square&logo=npm&logoColor=white&label=npm&color=7c3aed)](https://www.npmjs.com/package/oira666_pi-limits-wait) [![node](https://img.shields.io/badge/node-%3E%3D22.19-7c3aed?style=flat-square&logo=nodedotjs&logoColor=white)](https://nodejs.org)\n\nPi extension that keeps requests alive when a provider rate-limits you or returns `server_is_overloaded`.\n\n## Install\n\n```bash\npi install npm:oira666_pi-limits-wait\n```\n\nRestart Pi or run `/reload` after installing.\n\n## What it does\n\n- Targets Pi 0.80.10+ (developed and tested against Pi 0.83.0) and works with model providers that use `ModelRuntime.streamSimple`.\n- Intercepts the current runtime without registering synthetic providers; every retry and fallback re-enters Pi's normal provider/auth/base URL/configured-header composition, including OAuth refresh checks.\n- On Pi 0.86+, stops background cache warming via `cache_warming_decision` while retry interception is enabled, preventing background refreshes from triggering foreground retries or fallbacks. Normal request caching is unchanged. With `PI_LIMITS_WAIT_DISABLE_ALL_WAITING=true`, Pi's cache-warming policy is left untouched. As with any handler for this event, a later extension can override the decision.\n- Reload-safe ownership ensures `/reload` transfers interception cleanly and aborts waits still owned by the previous extension instance. The interception has one process-global active extension owner, matching the interactive Pi CLI's single active session runtime lifecycle; SDK processes running multiple concurrent Pi sessions are not supported.\n- On rate-limit errors (`429`, `rate_limit`, `too many requests`, quota/reset messages), waits and retries in a loop.\n- Remembers provider retry timing exposed through response callbacks or provider errors (`retry-after`, `retry-after-ms`, `retry in ...`, reset messages). With fallback probing enabled, explicit Retry-After deadlines may intentionally be probed early; set the probe interval to `0` to honor those deadlines (unless a wait is manually skipped).\n- If no retry timing is available for a rate limit, waits 30 minutes before retrying.\n- On `server_is_overloaded`, waits 5 minutes, then retries. If the provider is still overloaded after Pi's normal retries, it waits another 5 minutes and repeats.\n- On transient network/transport failures — including undici idle-timeout aborts (`UND_ERR_HEADERS_TIMEOUT` / `UND_ERR_BODY_TIMEOUT`), `fetch failed`, `terminated`, `ECONNRESET`, `ETIMEDOUT`, etc. — treats the error as retryable with a short backoff (default 15s, or the provider's `retry-after`) instead of giving up. This prevents a stalled streaming request from turning into a silent hang.\n- Leaves context-overflow recovery entirely to Pi. The extension uses Pi's own `isContextOverflow()` detector and immediately surfaces matching failures without waiting, retrying, or selecting another fallback. If the overflow came from a fallback already attempted for the request, the extension makes that attempted model current when Pi is still on the request's original model and accepts the switch; it never overrides a newer user model selection. Pi intentionally ignores overflow errors from non-current models. Successful over-window responses and zero-output length stops also pass through unchanged, allowing Pi to compact and perform its built-in recovery.\n- For any other (unclassified) provider error — including an API `Internal server error` and HTTP `400`/`403` failures — waits and retries the same model. There is deliberately no permanent-HTTP-status allowlist. This retry-all behavior is enabled by default and uses a configurable retry limit and interval; it does not alter model-limit wait intervals.\n- Reports retry/fallback waits in chat notifications without adding persistent TUI status lines.\n- In non-interactive hosts (`rpc` and `json` modes) the extension never reports a planned retry as an error. While it is waiting to retry, it publishes `info`-level liveliness notifications (plus a `setStatus` entry) describing what it is doing, how long it will wait, and why. An `error`-level notification is emitted only when the extension stops retrying and surfaces the terminal failure. See [Non-interactive (RPC) reporting](#non-interactive-rpc-reporting).\n- During a wait, pressing Enter in an empty editor retries immediately. Typed commands, autocomplete, and model-picker navigation still work normally. Choosing another model with `/model` immediately ends the pending wait and tries that exact model, even if it was previously marked unavailable.\n- Keeps a manually chosen model ahead of the configured priority list until it fails. After failure, normal retry/fallback rules apply and subsequent calls use the configured order again.\n- Optionally falls back to configured models when the current/default model is rate-limited. Every fallback to a different model—even on the same provider—deliberately discards request-owned credentials, headers, environment overrides, and provider-specific options so the target runtime resolves its own configuration.\n- Preserves Pi's `before_provider_request` / `after_provider_response` callback flow. When Pi's exact Anthropic OAuth identity block is present, sanitises both the initial prompt and later system-message updates, repeating the Claude Code identity in textual updates. User/assistant messages and tool blocks stay untouched. Pi remains responsible for initial OAuth identity insertion and authentication; this does not repair invalid credentials.\n\n### Unsupported interception limitation\n\nPi 0.83 has no public stream middleware that can intercept a failed provider stream, wait, and re-enter `ModelRuntime` for another attempt. For that reason, limits-wait still installs a reload-safe trampoline on `ModelRuntime.prototype.streamSimple`. This is an unsupported internal interception point and could require changes when Pi changes `ModelRuntime`; it also assumes the interactive CLI's one active session runtime per process. SDK processes with multiple concurrent Pi sessions are not supported.\n\n`after_provider_response` is preserved for observers, but it is not an equivalent retry hook: it cannot replace stream-error interception, own retry/fallback control flow, or recreate a complete target-model request. In particular, Pi 0.83 still does not expose a public factory for rebuilding the SDK's target-model-aware `transformHeaders` callback. Reusing the source request's closure on a fallback would apply source-model attribution and could leak extension-added headers, so limits-wait intentionally omits it for every different-model fallback. The target `ModelRuntime` still resolves target auth, base URL, configured provider/model headers, environment, and provider implementation canonically, but `before_provider_headers` cannot be re-fired for that fallback through the current public API.\n\n## Non-interactive (RPC) reporting\n\nIn RPC/JSON mode Pi turns `ctx.ui.setWorkingMessage()` into a no-op, so the interactive countdown is invisible to clients. To keep those clients informed without misreporting recoverable situations as failures, the extension separates progress from failure:\n\n| Situation | RPC output |\n| --- | --- |\n| Rate limit, overload, auth refresh, network error, unknown error, frozen model — a retry/fallback is still planned | `extension_ui_request` `notify` with `notifyType: \"info\"`, repeated every `PI_LIMITS_WAIT_LIVELINESS_INTERVAL` seconds while waiting, plus a `setStatus` entry under key `oira666.pi-limits-wait` |\n| Wait finished, retry started, or request completed | The `setStatus` entry is cleared |\n| Retries exhausted / retrying disabled — the request ends with a provider error | one `extension_ui_request` `notify` with `notifyType: \"error\"` describing the model and the final error, alongside the normal terminal `error` event |\n| Aborted by the client | no error notification (abort is not a failure); the status entry is cleared |\n\nLiveliness messages include the retry reason, the model, the remaining wait, and the originating error message, e.g.:\n\n```\n⏳ pi-limits-wait: rate limited on anthropic/claude-sonnet-4-5; still alive, waiting 12m 04s before the next retry. Why: HTTP 429 retry-after-ms 724000\n```\n\nInteractive (TUI) behavior is unchanged: retry notices remain `warning`-level chat notifications with the live countdown, and no duplicate error notification is added because the terminal error event is already rendered in the transcript.\n\n### Structured status channel\n\nSince 0.5.7 the extension publishes a **second, machine-readable** `setStatus` entry beside the prose one, under its own key:\n\n```\n{\"type\":\"extension_ui_request\",\"id\":\"<uuid>\",\"method\":\"setStatus\",\n \"statusKey\":\"oira666.pi-limits-wait.json\",\"statusText\":\"<minified JSON>\"}\n```\n\nThe prose key `oira666.pi-limits-wait` is **unchanged** in text, key, cadence and clearing semantics, so a host that only knows 0.5.6 is unaffected. The JSON key is published on exactly the same schedule as the prose notice (immediately when a wait starts, then every `PI_LIMITS_WAIT_LIVELINESS_INTERVAL` seconds while waiting) and only in non-interactive (`rpc`/`json`) hosts. A blank/absent `statusText` under this key is the end-of-window marker.\n\n`statusText` is one minified JSON line:\n\n```json\n{\"v\":1,\"ext\":\"0.6.0\",\"event\":\"wait\",\"waitId\":\"wait-mfk3z1-7\",\"periodId\":\"period-3\",\"reason\":\"rate-limit\",\"message\":\"⏳ pi-limits-wait: rate limited on anthropic/claude-sonnet-4-5; still alive, waiting 12m 04s before the next retry. Why: HTTP 429 retry-after-ms 724000\",\"error\":\"HTTP 429 retry-after-ms 724000\",\"model\":{\"provider\":\"anthropic\",\"id\":\"claude-sonnet-4-5\"},\"plannedDurationMs\":1800000,\"plannedDeadline\":1786000000000,\"startedAt\":1785998200000,\"remainingMs\":724000,\"attempt\":null,\"maxAttempts\":null,\"livelinessIntervalMs\":15000,\"controlFile\":\"/tmp/ram-pi-.../limits-wait.control\"}\n```\n\nEnd of a wait (published once, immediately before both keys are cleared):\n\n```json\n{\"v\":1,\"ext\":\"0.6.0\",\"event\":\"wait_end\",\"waitId\":\"wait-mfk3z1-7\",\"reason\":\"rate-limit\",\"message\":\"…\",\"error\":\"…\",\"plannedDurationMs\":1800000,\"plannedDeadline\":1786000000000,\"startedAt\":1785998200000,\"remainingMs\":0,\"attempt\":null,\"maxAttempts\":null,\"livelinessIntervalMs\":15000,\"controlFile\":\"…\",\"outcome\":\"skipped\",\"actualElapsedMs\":41233}\n```\n\nTerminal give-up (the extension has stopped retrying and surfaces the final error):\n\n```json\n{\"v\":1,\"ext\":\"0.6.0\",\"event\":\"give_up\",\"waitId\":null,\"reason\":null,\"message\":\"anthropic/claude-sonnet-4-5 failed and pi-limits-wait is not retrying: …\",\"error\":\"…\",\"plannedDurationMs\":null,\"plannedDeadline\":null,\"startedAt\":null,\"remainingMs\":null,\"attempt\":null,\"maxAttempts\":null,\"livelinessIntervalMs\":15000,\"controlFile\":\"…\"}\n```\n\n| Field | Type | Meaning |\n| --- | --- | --- |\n| `v` | `1` | Payload schema version. Bumped only on a breaking change. |\n| `ext` | string | Extension version that produced the frame, e.g. `\"0.6.0\"`. |\n| `event` | `\"wait\"` \\| `\"wait_end\"` \\| `\"give_up\"` | Liveliness tick, end of a wait, or terminal give-up. |\n| `waitId` | string \\| null | Correlates every frame of one wait. `null` only for `give_up`. |\n| `periodId` | string (optional) | Retry-period id, when the wait belongs to one. |\n| `reason` | `\"rate-limit\"` \\| `\"overloaded\"` \\| `\"authentication\"` \\| `\"model-frozen\"` \\| `\"network\"` \\| `\"retry\"` \\| null | `null` only for `give_up`. |\n| `message` | string | The same human text published on the prose channel (≤500 chars, single line). |\n| `error` | string \\| null | Normalised originating provider error (≤500 chars). |\n| `model` | `{provider,id}` (optional) | Model the wait applies to, when known. |\n| `plannedDurationMs` | number \\| null | Planned wait length. |\n| `plannedDeadline` | number \\| null | Epoch ms when the retry is planned. |\n| `startedAt` | number \\| null | Epoch ms when the wait began. |\n| `remainingMs` | number \\| null | `max(0, plannedDeadline - now)` at publish time; `0` on `wait_end`. |\n| `attempt` | number \\| null | 1-based extension-created attempt. Only the unknown-error path counts attempts; classified waits send `null`. |\n| `maxAttempts` | number \\| null | `PI_LIMITS_WAIT_MAX_RETRY + 1`, or `null` when not applicable. |\n| `livelinessIntervalMs` | number | Publishing interval, so a consumer can compute staleness itself. |\n| `controlFile` | string \\| null | The path this process polls for skip tokens, or `null` when disabled. |\n| `outcome` | `\"waited\"` \\| `\"skipped\"` \\| `\"aborted\"` (optional) | `wait_end` only. |\n| `actualElapsedMs` | number (optional) | `wait_end` only. |\n\nSet `PI_LIMITS_WAIT_STATUS_JSON=false` to suppress this channel entirely and restore exact 0.5.6 wire behavior. `PI_LIMITS_WAIT_DISABLE_ALL_WAITING=true` also suppresses it (nothing is published and no control file is polled).\n\nThe payload type is exported for TypeScript hosts:\n\n```ts\nimport {\n  LIVELINESS_JSON_STATUS_KEY,\n  type LimitsWaitStatusPayload,\n} from \"oira666_pi-limits-wait\";\n```\n\n### Skipping a wait from the host\n\nTo skip a wait without changing models, set `PI_LIMITS_WAIT_CONTROL_FILE` to an absolute path (one per pi process; the extension echoes it back as `controlFile` in every structured frame). While — and only while — a wait is in progress, the extension polls that path once per second from the countdown ticker it already runs. Signals are deliberately **not** used: `SIGUSR2` with no handler installed terminates the process, and a signal cannot carry a `waitId`.\n\nWrite a token to make the extension stop waiting and retry immediately:\n\n```json\n{\"action\":\"skip\",\"waitId\":\"wait-mfk3z1-7\",\"issuedAt\":1785998240123,\"by\":\"ramcore\"}\n```\n\n- `action` must be `\"skip\"`; anything else is ignored.\n- `waitId` must equal the current wait's `waitId` (from the structured frame), or the wildcard `\"*\"` for \"skip whichever wait is current\".\n- `issuedAt` is epoch ms and must be `>= startedAt` of the current wait.\n- Writers should write a temp file and rename it into place (atomic move) so a partial read is impossible.\n\nThe extension consumes a token by atomically renaming the canonical control path to a unique `.consumed-<waitId>-<random>` path in the same directory, then reading and validating that claimed file. It removes only the unique claimed path. A writer may therefore rename a newer token onto the canonical path immediately after the claim without cleanup deleting that replacement. An accepted claim settles the wait with `outcome: \"skipped\"`, so the retry proceeds normally and a `wait_end` frame with `\"outcome\":\"skipped\"` is published. Polls are serialized; a slow filesystem operation cannot overlap the next one-second tick.\n\nTwo content guards ensure a claimed leftover token can never skip a **later** legitimate wait: (a) `waitId` equality — a token written for wait *N* cannot match wait *N+1*'s freshly generated id; (b) `issuedAt >= startedAt` — a `\"*\"` token issued before this wait began is rejected. Claimed malformed, stale, and non-matching files are discarded, while any newer token at the canonical path is left untouched. The extension deliberately does not unlink the canonical path at wait start, because that would race with a token written microseconds earlier.\n\nA missing or unclaimable control path is silently ignored. If `PI_LIMITS_WAIT_CONTROL_FILE` is unset (or all waiting is disabled), no filesystem access happens at all.\n\n## Wait event contract\n\nEvery positive extension-managed wait emits public telemetry on Pi's shared event bus. Import the channel constant and payload union from the package entry point:\n\n```ts\nimport {\n  LIMITS_WAIT_EVENT_CHANNEL,\n  type LimitsWaitEventPayload,\n} from \"oira666_pi-limits-wait\";\n\npi.events.on(LIMITS_WAIT_EVENT_CHANNEL, (data) => {\n  const event = data as LimitsWaitEventPayload;\n  // event.version === 1; event.phase is \"start\" or \"end\"\n});\n```\n\nThe versioned, namespaced channel is `oira666.pi-limits-wait.wait.v1`. No event is emitted for a zero/negative-duration wait.\n\nBoth phases contain:\n\n- `version: 1`, `phase`, and a correlating `waitId`;\n- optional `periodId` for the associated extension retry period;\n- `reason` (`rate-limit`, `overloaded`, `authentication`, `model-frozen`, `network`, or `retry`);\n- `plannedDurationMs`, `plannedDeadline`, and `startedAt` (`plannedDeadline`/`startedAt` are Unix milliseconds);\n- optional `model: { provider, id }` and a normalized `error` string.\n\nThe `end` phase additionally contains `endedAt`, `actualElapsedMs`, and `outcome: \"waited\" | \"skipped\" | \"aborted\"`. Start and end are emitted for normal completion, Enter-to-skip, Escape, signal abort, and pre-aborted positive waits. Telemetry is observational: event-bus failures are isolated and cannot cancel or alter a wait.\n\n## Session retry summaries\n\nA retry period begins only when a failure will lead to another extension-created attempt or fallback. For each contiguous extension-managed retry period/stream, limits-wait queues one standard Pi custom entry and appends it after the associated assistant turn (normally on `turn_end`, with `agent_end` and `session_shutdown` as duplicate-safe fallbacks):\n\n```json\n{\n  \"type\": \"custom\",\n  \"customType\": \"limits-wait\",\n  \"data\": {\n    \"totalWaitingTime\": 12.345,\n    \"reasons\": [\"HTTP 429 retry-after-ms 10000\", \"fetch failed\"],\n    \"retries_total\": 2\n  }\n}\n```\n\n`totalWaitingTime` is actual elapsed extension wait time in seconds, not the planned duration. `reasons` contains whitespace-normalized error messages, deduplicated while preserving first-seen order. `retries_total` counts attempts/fallbacks created by this extension: the initial provider request and retries performed internally by a provider SDK do not count; an immediate fallback or zero-wait retry does count. A wait aborted before another attempt does not create a retry count by itself.\n\nPi custom entries created with `pi.appendEntry()` do not participate in LLM context. The summary is transcript metadata only.\n\n## Optional fallback models\n\nBy default, if you do not configure fallback models, the extension behaves exactly as before: it waits for the current model's limit to reset and retries.\n\nTo enable automatic model fallback, add `fallback-models` to a `limits-wait.json` file.\n\nThe extension reads these files in order; later files override earlier ones:\n\n| Location | Scope | Trust behavior |\n|----------|-------|----------------|\n| `~/.config/.pi/limits-wait.json` | Global defaults | Always loaded |\n| `<Pi agent dir>/limits-wait.json` (for example `~/.pi/agent/limits-wait.json`, or `PI_CODING_AGENT_DIR/limits-wait.json`) | Pi agent directory | Always loaded |\n| `.limits-wait.json` | Project root override | Loaded only when `ctx.isProjectTrusted()` is `true` |\n| `.pi/limits-wait.json` | Pi project override | Loaded only when `ctx.isProjectTrusted()` is `true` |\n\nFor an untrusted project, both project-local paths are ignored completely (including malformed-file warnings); global and agent settings still apply. The trust decision is Pi's effective session trust, including temporary/CLI trust decisions. The same rule is applied every time settings are reread before an LLM call.\n\nExample:\n\n```json\n{\n  \"probe-interval-seconds\": 60,\n  \"fallback-models\": [\n    {\n      \"provider\": \"anthropic\",\n      \"modelname\": \"claude-sonnet-4-5\",\n      \"reasoning effort\": \"medium\"\n    },\n    {\n      \"provider\": \"openai\",\n      \"modelname\": \"gpt-5.1-codex\"\n    }\n  ]\n}\n```\n\n`fallback-models` is an ordered priority list: the entry closest to the top is preferred whenever it is usable.\n\nEach `fallback-models` entry supports:\n\n- `provider` — required. The Pi provider name, for example `anthropic`, `openai`, `google`, etc.\n- `modelname` — required. The model id/name as Pi knows it.\n- `reasoning effort` — optional. One of `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max`. If omitted, Pi's current/default reasoning level is used.\n\nTop-level settings keys:\n\n- `probe-interval-seconds` — optional. How often a limited/frozen higher-priority model is re-probed. Default `60`, `0` disables probing. `PI_LIMITS_WAIT_PROBE_INTERVAL` overrides it. Both sources accept only safe non-negative integers (numeric strings are also accepted); values above 2147483 seconds are capped. Invalid file values use the default, and invalid environment values use the file value or default.\n\nFallback priority and manual selection:\n\n1. Normally, `fallback-models` sets priority from top to bottom. An unlisted startup model is tried before the list. Unrelated model calls and internal synthetic models are not rerouted.\n2. A manual model change overrides that priority, whether the chosen model is listed or not. Calls stay on that model without probing higher-priority models while it works. If it fails, the override ends and normal retry/fallback rules apply. After failover, the configured list controls priority again; recovery of the manually chosen model does not restore its override. Abort and context-overflow recovery do not cancel the override. Without an override, each LLM call starts at the top of the order and uses the highest-priority available model.\n3. If the active model becomes rate-limited, the extension immediately moves down to the next usable model in the order.\n4. As soon as a higher-priority model works again, the next call goes back to it and Pi's active model is switched back automatically. That happens in three ways:\n   - the remembered limit for that model expires;\n   - the model answers a probe (see below);\n   - successful output clears the limit/freeze known when its attempt began, but never a newer concurrent failure. Committed streams are never interrupted to reclaim a model.\n5. A still-limited higher-priority model is eligible for a probe every **`probe-interval-seconds`** (default 60s), on the next LLM call or while waiting with all candidates blocked. This intentionally permits early probes even before an explicit provider `Retry-After` deadline; `0` disables early probes and honors remembered deadlines unless manually skipped. A probe is one normal request sent to that model instead of the current fallback:\n   - if it succeeds, the model is reclaimed immediately and the request continues on it;\n   - if it fails before output is committed, it costs just one attempt—even for HTTP 403, network or unknown errors—then falls back down the order and postpones the next probe by another interval. Abort and context-overflow errors remain terminal rather than triggering fallback. With freezing disabled, unknown/HTTP 403 probe failures only postpone probes of the existing limit (without extending its deadline or creating a freeze); that candidate is exhausted for the current request. Exhausted and not-yet-due blocked candidates are skipped, and if no eligible candidate remains the unknown error is surfaced rather than looping or waiting on a freeze.\n6. When *every* configured model is unavailable, the extension waits — but only until the earliest deadline **or the next due probe**, whichever comes first, so recovery is never delayed by a long remembered deadline.\n7. Rate-limit/freeze memory lives only in memory and is cleared when Pi restarts.\n\nThe extension rereads these files before every LLM call, so changes made during a long-running task take effect on the next LLM call without restarting Pi or using `/reload`. Tool calls do not trigger a settings read. When the settings are loaded, the extension shows the full usable fallback model list. When models become rate-limited, it reports the wait in chat notifications.\n\n## Environment variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PI_LIMITS_WAIT_DISABLE_ALL_WAITING` | `false` | Master kill switch for this extension's error handling, retries, fallbacks, freezing, waiting, notifications, telemetry, and retry summaries. Set to `true` (also accepts `1`, `yes`, `on`) to leave only Anthropic OAuth system-prompt cleaning enabled; requests continue through Pi's normal runtime, including its normal Anthropic headers. This takes precedence over every setting below. |\n| `PI_LIMITS_WAIT_DEFAULT_WAITING` | `true` | Whether unclassified/unknown provider errors enter the wait-and-retry cycle. Set to `false` (also accepts `0`, `no`, `off`) to surface the error immediately. Rate-limit, overload, authentication, and network retry behavior is unchanged. |\n| `PI_LIMITS_WAIT_MAX_RETRY` | `999999` | Maximum extension-created retries for an unclassified/unknown provider error. The initial failed request and provider-internal retries do not count. HTTP 400/403 remain eligible. Must be a non-negative integer. |\n| `PI_LIMITS_WAIT_LIVELINESS_INTERVAL` | `15` | Seconds between liveliness notifications published while waiting in non-interactive (`rpc`/`json`) modes. Must be a non-negative integer; values below 1 second are clamped to 1 second. Ignored in TUI mode. Also drives the structured status channel and is reported inside it as `livelinessIntervalMs`. |\n| `PI_LIMITS_WAIT_STATUS_JSON` | `true` | Whether the machine-readable status channel (`statusKey` `oira666.pi-limits-wait.json`) is published in non-interactive modes. Set to `false` (also accepts `0`, `no`, `off`) to restore exact 0.5.6 wire behavior. The prose channel is never affected. |\n| `PI_LIMITS_WAIT_CONTROL_FILE` | *(unset)* | Absolute path of the out-of-band control file polled once per second **while waiting**, used by the host to skip the current wait and retry immediately. Unset disables the feature and all filesystem access. See [Skipping a wait from the host](#skipping-a-wait-from-the-host). |\n| `PI_LIMITS_WAIT_PROBE_INTERVAL` | `60` | Seconds between re-probes of a higher-priority model that is still remembered as rate-limited or frozen. Lower values return to the preferred model sooner at the cost of more rejected probe requests; `0` disables probing, so a model is only reconsidered when its remembered deadline expires. Overrides the `probe-interval-seconds` settings key. Must be a safe non-negative integer; fractions, Infinity and unsafe values are rejected. Both file and environment values above 2147483 seconds are capped to Node's reliable timeout range. Invalid environment values use the file setting (or default). |\n| `PI_LIMITS_WAIT_RETRY_INTERVAL` | `5` | Seconds to wait between unclassified/unknown provider-error retries. Must be a non-negative integer (values above 2147483 are capped to Node's maximum reliable timer delay). This does not affect model-limit wait intervals. |\n| `PI_LIMITS_WAIT_FREEZING_ENABLED` | `true` | When a model keeps failing with a non-retryable error, it is normally \"frozen\" for 10 minutes and skipped in favour of other configured models. Set this to `false` (also accepts `0`, `no`, `off`) to disable freezing entirely: the extension will instead try each configured candidate once (after the bounded retries) and then surface the error, never blocking on a long \"model-frozen\" wait. Useful for non-interactive / subagent runs where no one can press Enter to skip. |\n\n## License\n\nMIT\n","readmeFilename":"README.md"}