{"_id":"@eiei114/pi-sub-core","_rev":"22-2c31e100a18b0196570d4069d0fdafe8","name":"@eiei114/pi-sub-core","dist-tags":{"latest":"2.7.3"},"versions":{"1.5.1":{"name":"@eiei114/pi-sub-core","version":"1.5.1","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@1.5.1","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"bbff066a15f55139066b34ceb52f1222b80c9dfe","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-1.5.1.tgz","fileCount":52,"integrity":"sha512-x/HM96eOMnYQEm/0mXpXJ56586SIOWKxy+0pQnvBzy4L+1MJ2P49g9hpDi/mvatWFNmkJBp51DbJT0YvyZqyJQ==","signatures":[{"sig":"MEUCIQDLzHwrCPI+o7d9ZLaVToxarimoDvsqcU8nqquM7J714wIgX1gmXlWWeAdvCfqXFcknPLsLkm5f1SeNmKLPvcPQhac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205589},"type":"module","gitHead":"29a724d36315ef39084558fc5f6c6a2c6ac36780","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"eiei114","email":"ekawano114@gmail.com"},"_npmVersion":"11.6.1","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"26.4.0","dependencies":{"@eiei114/pi-sub-shared":"^1.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.8.0","@types/node":"^22.0.0"},"peerDependencies":{"@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_1.5.1_1783219993758_0.45048659516458356","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@eiei114/pi-sub-core","version":"1.6.1","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@1.6.1","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"0a8b88853fee2146e03659df1e4547657b0a5844","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-1.6.1.tgz","fileCount":54,"integrity":"sha512-i1gIXsB/dYzeNdODHtT54tEn5rRwsPo61xmTv4oW//3Z68R6Ow1+j2zKzTmzOTjhM/CZAlfQoG1UyOI1FPLGrw==","signatures":[{"sig":"MEUCIQCbzITSOiVgaFejwc6PPZRukz+/tLuQf1XFl9gZW3ytBwIgK+FIrU2uOfVh2SC/5BjCn0dTXr9ce4gfsdqr6CJgyGE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":235266},"type":"module","gitHead":"b7c6733637b90b070cf5387b743357a0c7367bb1","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.16.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@eiei114/pi-sub-shared":"^1.6.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.8.0","@types/node":"^22.0.0"},"peerDependencies":{"@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_1.6.1_1783547973350_0.977953667655191","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@eiei114/pi-sub-core","version":"2.0.0","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.0.0","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"1cf7323be38dd77bd010da000fd8739e2327433d","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.0.0.tgz","fileCount":54,"integrity":"sha512-KKMFu8XaYMXptDSEPUMZMhxBV7A4+Bx0+Bam0xW1iA5r5nAVmjykFP7Lu4X0XW/fITNdqdXLrURqhMvLMoCkew==","signatures":[{"sig":"MEQCIHx64hMyTbua0z6DrRwXuXoz8eO1VsJn1xDOJ6FEfpPNAiBeB0J1FOwrMQsRR5k0X7kGq9sxhbLXyBy8T6wi3DDu8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":236668},"type":"module","gitHead":"f89d4653078a4f79f48d89fc715df1af0da164d6","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.16.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@eiei114/pi-sub-shared":"^2.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.0.0_1783645437908_0.8706281160797515","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@eiei114/pi-sub-core","version":"2.0.1","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.0.1","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"af2d34679057e5fef9ff42941d2681cf7748c04f","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.0.1.tgz","fileCount":54,"integrity":"sha512-tZ0YruoHw38DOJZ6E3bt97OYyj5uGZMwsJ3ZKRepQRhlELnUHfUi99jhbeCT2rpotP/mwOlHfEX8Pd6RNXbXBQ==","signatures":[{"sig":"MEYCIQCcpCr7yzOAIAKvYfvRiKjKhAek5O6iL7tjFi2nLuBWBAIhAI9jrOcDKNHK1ihASX3h7BMdhvwVsMItabO0wprdRO6r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":237334},"type":"module","gitHead":"2a554f329887eb3df7e4bee1d36d55c53415558a","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.16.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@eiei114/pi-sub-shared":"^2.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.0.1_1784561938116_0.4691491234241294","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@eiei114/pi-sub-core","version":"2.0.2","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.0.2","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"68d89a65b2386f2f2b6a7cbc592098b3e6ba3b57","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.0.2.tgz","fileCount":56,"integrity":"sha512-JZV1hghlI0M2iNXFVWwAbUMWXmm6VbDybIMdUEGUPn5Gj3CdtaxStjFaFn+unAH1eFbTZE9kiLESy1kMKJynTQ==","signatures":[{"sig":"MEUCIQDYZVWuAlz6RY8q9AWWAUP0n4Eda+MhoAQ1IpIclm5b/QIgEDtJHdJsEf1W1CvIQGPjYtO2OsWhVnQmPe5YaMyHDXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":239784},"type":"module","gitHead":"295fb1b0e64f0419bf8ea8f4bae1af722b8900c5","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.16.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@eiei114/pi-sub-shared":"^2.0.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.0.2_1785779003621_0.22569523320110152","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@eiei114/pi-sub-core","version":"2.0.3","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.0.3","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"7c759456837950144730d4c55057f5c15450a66e","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.0.3.tgz","fileCount":57,"integrity":"sha512-GEN2yxqmotXKCmq9TJxC9o44y0vm+Gih6Cb4o0uW8/wjsm9iRBlPZ5ItUqr78G3Xi0z9QlkmKvDNPC1vXunmRA==","signatures":[{"sig":"MEQCIBZBfU2vICy01kYv0QrxLJXfwkuOx7MJC0AXl00Xum0VAiBfvff/KR5N1XBRGvmr1nWGMde73I8JTQqdmm15jxAlzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":243010},"type":"module","gitHead":"80d2a25c07cecec734e727f17e9f65ef8dcc63d1","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.17.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@eiei114/pi-sub-shared":"^2.0.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.0.3_1787066575859_0.7320467429331312","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@eiei114/pi-sub-core","version":"2.1.0","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.1.0","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"bf1b547e19bd4687e7891b3792122233ddf756b5","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.1.0.tgz","fileCount":60,"integrity":"sha512-T1tnSovOy3TO6DLhwTCQ1idXvozYT81qE5veqf9j0krLzruMibEs4u92kEOB+m9gZBHaj36CA94AN7i3Dlz0vw==","signatures":[{"sig":"MEYCIQDTo+QM4Xu+PBL7haJgCHSfHdclvthGbTbOPmJ3ITCDfQIhANjn+v0oshFH6wbPoPCflqsOQxFj9rHufT3kdMC7xWEU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":273112},"type":"module","gitHead":"0707d8087aa3de9aedc02efeb78e4ea562848edd","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.17.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@eiei114/pi-sub-shared":"^2.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.1.0_1787068011945_0.12194763222733318","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@eiei114/pi-sub-core","version":"2.1.1","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.1.1","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"134b5d651e17c04ba781b9818b505a732d647b1e","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.1.1.tgz","fileCount":60,"integrity":"sha512-BSXP5ENMPUSTBQwHxXi8/IZOj9cvfR7RD2S+Ub5z3TPJGdW8+hN4VOQpbGqk4//kFx1F1qNPWxRA6JF53pIGdw==","signatures":[{"sig":"MEYCIQDSuMLcotHYRHPMQLDDs3n+xeeQltd+Mv0PlZ8aoSEZcgIhAKlRnupgJ0tPg6jrZH/zudSezPVenrxAZhsEvIg+Hv7f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":278836},"type":"module","gitHead":"791e44376d8732573b4f56e5df7a365939ce38dd","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.17.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@eiei114/pi-sub-shared":"^2.1.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.1.1_1787069087417_0.9508651454520742","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@eiei114/pi-sub-core","version":"2.1.2","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.1.2","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"a33018b8fb4b9e83a52c74213d7e629f889b9960","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.1.2.tgz","fileCount":61,"integrity":"sha512-NuSzbwCzMGQBtlb1X7vo4t9Iy3X20dNGVAxujfGvKC3aLibS4U1d1EgNFCdDrQ+xRI/LzFi8RSjiyXH3gAI3+g==","signatures":[{"sig":"MEUCIQCWxgIgIJD9e+KwMpXublv0uMuS9CLM47kQYdJRBg5PsQIgLqbxtGYhBvy+nU17jZWf5RntAt36/Ux3twBRQQA1G0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":280647},"type":"module","gitHead":"3bdeff362babbbe9b387d38a9fbd3920055a3b17","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.17.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@eiei114/pi-sub-shared":"^2.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.1.2_1787069340849_0.32966764019797967","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"@eiei114/pi-sub-core","version":"2.1.3","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.1.3","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"cba7500ceb31d4dac0386d37956d32f583c10b3d","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.1.3.tgz","fileCount":63,"integrity":"sha512-9YsQPMxVpUuOfaxwHHrQosoonojA0oNgpDBgbN2m82akGrawO++ZAKGhdE8mMSnSzIVrunH3HbJt4hScBU/UDw==","signatures":[{"sig":"MEYCIQCQRGwaq9Vt5fYxW603Js2Dpr46731bHiN4RP8SVxyYJwIhAPC6U/HXCUsN3HN3qi5eKmFsh++wqOqlQxWqoDVZ2WPw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":289186},"type":"module","gitHead":"042a9a4b635951b1b0773c363f684897f2e25d1c","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.17.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@eiei114/pi-sub-shared":"^2.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.1.3_1787885053956_0.6117664128981704","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@eiei114/pi-sub-core","version":"2.2.0","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.2.0","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"2d1c8757d909d30714088f96371a1ec3ec162764","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.2.0.tgz","fileCount":63,"integrity":"sha512-vnXuCUfKqOXsWAzI+ZY6Poe2e6ZsCMaZGtqkbGMGRnouY2KrBqdQqAFjiB5IwRPMWgZ1HjpMQStfo1s/Fyb55g==","signatures":[{"sig":"MEYCIQCikYukILodl1+Ri11ukI+V/A5GzcZF3JmOTsMYdCchLwIhAMVivbqutgTOIBgcUtHOfl/AcEx+RfXhnE05ZLV/9wX7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":290417},"type":"module","gitHead":"f7e398008eb719f43df2d41b609766663b49e11d","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.17.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@eiei114/pi-sub-shared":"^2.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.2.0_1788094721817_0.37258277247563165","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@eiei114/pi-sub-core","version":"2.2.1","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.2.1","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"6bb750dd6f9d6c5112317cc8b8fa8b91165311e3","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.2.1.tgz","fileCount":63,"integrity":"sha512-Uu3mM7I8PZ4S6GqTVoXvrnpQxU0Vb7qux02frTxTOsq33f5mcbtLgAIcaYIrsNZX42RzwbZ1Y+fFishrGzllLA==","signatures":[{"sig":"MEUCIQDPyADVZqDrXW7SYkbxmyHgIHR8UtQIjXEhaMELmUpmeAIgfQPoMlaYJEojSB0HSc9/wOXFIXZ9XpugWON0M8obgJA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":298857},"type":"module","gitHead":"bd2a09184e7f2d705b84fdba2eef9a7d322c5551","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.17.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@eiei114/pi-sub-shared":"^2.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.2.1_1788227694398_0.6461162519778736","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@eiei114/pi-sub-core","version":"2.2.2","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.2.2","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"fa9d84d18437016cc9c0d8a6033e2cd9dfc1fd78","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.2.2.tgz","fileCount":63,"integrity":"sha512-uHb4AgjdOWqRNDXJbC7eHju+Vda6RKrYb7vSSLTxtS0PyE3V19SEt9vZln4m5HIoAPVYBJsPWgtuUqX+9Kt6Mg==","signatures":[{"sig":"MEQCIBkfyhzduy3Hog35VQv8ufUBKx9OLLLy2bEcmu8SK3naAiAHnJEXvi35vw+fSyFJVNepM41CqP7roc9R8sgz8I5hvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":298947},"type":"module","gitHead":"1dca3b322b2fe22f96ae9fd265a4b0ad66303f7c","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.19.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@eiei114/pi-sub-shared":"^2.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.2.2_1788471394634_0.0023098462649846496","host":"s3://npm-registry-packages-npm-production"}},"2.2.3":{"name":"@eiei114/pi-sub-core","version":"2.2.3","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.2.3","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"7e6c6971e63636eeb8d70efd9e8f7a49393d3dcd","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.2.3.tgz","fileCount":63,"integrity":"sha512-LXK4u73vRuMV1jWx0S7AweDY4RwdXD3SoJdM5YRGRzAw3DYhbBR3mE4vKykQCcE7MOV2fiCVtKx9Iqkt7Kc8lg==","signatures":[{"sig":"MEUCIQD8H/oqDf4HkYVxh7NeDnvBeY38qo1Bt5GgG+IZ9QUB+AIgGHBuZuImbqioTUZxLzS6uBbfXhFSuZqTPBI0FUlREvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":299131},"type":"module","gitHead":"95caec9e7ebfe45abc947c60f740c0a921eca717","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.19.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@eiei114/pi-sub-shared":"^2.2.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.2.3_1788533677114_0.9907712336294083","host":"s3://npm-registry-packages-npm-production"}},"2.2.4":{"name":"@eiei114/pi-sub-core","version":"2.2.4","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.2.4","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"08a19f7cd93c7aab640de5609cb8ac0d1e6fec19","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.2.4.tgz","fileCount":63,"integrity":"sha512-Rr0moiKStKtakoKlCLOGMMe+p13udCJ1i0ymwx8v1bXjHHfqeqTmllH03Hd1eiqlkzajJv8cbwejpnD7t3XdDg==","signatures":[{"sig":"MEQCIDBpMrD7Q1KmMjRDO6orkKca4MDrAgOTDEB9pbm6ZDYsAiAZaZbTS9ewroBxy9eLT7JmOt4B3qYneaQF8H6Gc8Lwgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":298431},"type":"module","gitHead":"aeb0b115838fb3d664eb45d55a7e1e6e32bdb06f","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.19.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@eiei114/pi-sub-shared":"^2.2.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.2.4_1788817000996_0.41924801122695143","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@eiei114/pi-sub-core","version":"2.3.0","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.3.0","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"6c972c55772a52c933bc1b74bacce1973d2d3183","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.3.0.tgz","fileCount":66,"integrity":"sha512-FBF3KQikyskh6BZIyBPUUwmMnP1rnqHskaW34uF9QLnDhjrCJCrnZNw2rN7ikpAo2YPDrswDSASbJ+w8YefbKg==","signatures":[{"sig":"MEUCIQC2hi2DcDbQXbtnZe9S6x1AvWGz3tZMjieMtOdJXrZgKwIgKXI81lYIsw85hsNiPJDbAR6vXBhieAB2frNYWtSr2MI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":321803},"type":"module","gitHead":"6532e6e0cb3dd141f6f7e67d7959ce48a3b1f239","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.19.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@eiei114/pi-sub-shared":"^2.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.3.0_1788878376543_0.9155910200961381","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@eiei114/pi-sub-core","version":"2.4.0","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.4.0","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"0686cc75165d664f8000de2e2d5f0949ef46e011","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.4.0.tgz","fileCount":74,"integrity":"sha512-6vd8g5EKTzgq1AUdLqNMf98FBEm++fq3GoO+GX+SBwAKT2RrUWN67LrOIw47/8+p5cc5Ap89bQv/NEHbdmcEoQ==","signatures":[{"sig":"MEYCIQCm0EWB7ZWifHDSJKKfnuojWXrgQVswBo0T2xVjxYxesgIhANx1e7E8632Hrak5bYcliCRp/Kyu8u6MSXJdemAUSM2W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":387768},"type":"module","gitHead":"fc7cc08417c1c008a8cf7b20c797b42b0653df36","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.19.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@eiei114/pi-sub-shared":"^2.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.4.0_1788885585114_0.42609208037021706","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@eiei114/pi-sub-core","version":"2.6.0","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.6.0","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"9e6783bd304684b60dc17f89b91d037e89080a18","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.6.0.tgz","fileCount":80,"integrity":"sha512-5HUHbow0Cvm78OOrg+GAiq856Zzb2L/CBfGPp3gQ/ULgozgFzP092LL0VLE/BPb8CHr34K8V4yZRarxm6dvdQw==","signatures":[{"sig":"MEYCIQDVg6MZLJBo+/UTxo2AWBMa6RE7xgmWZ6O1d4fhJY9ItAIhALbvvAWY1+2BrLm9x+0pyLtLKUDCkKHoxmzFSpOwCvUr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCg4wpoUWAaoJxv+hXGXu3i0spe/vVhl3glZtDpUc0BPQIgTAs12yfMQDbms7T6PFxGXISqOS99hLWUVEEZp+gMeNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":415337},"type":"module","gitHead":"dd9be69378f5128bc456eb70fbaf40cd0a86bf49","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.19.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@eiei114/pi-sub-shared":"^2.6.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.6.0_1789955714413_0.5687640369398246","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@eiei114/pi-sub-core","version":"2.7.0","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.7.0","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"11a5fb5a710f247420b6df78ded8819514e23086","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.7.0.tgz","fileCount":80,"integrity":"sha512-83phxRglMuhUhAjNYX2Vur14VeQiAuh/KdSmqsvL1uJD/UxEAO9ngAtRP0liLHePKXzdY0WxZpjpsISskk9KmQ==","signatures":[{"sig":"MEUCIEv+ZQBFaF3tiShVV2DGiQ2Kn3tKFFIAmYN3zlKF8ntWAiEAroz8T7/X0LbAaaD6/X7F17j7x4bW78wDBTwBob6AuEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGo35rlBnmPuUE+LxASvfyBfKauSgDC21gzv+OniFVDEAiEAimw/7YvN2+KXdk8FgiALv5Z3EiQ1huYDDGMUpTJ/i48=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":415964},"type":"module","gitHead":"52f942ef5d97f94341e87e5c840b3f45a648de15","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.19.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@eiei114/pi-sub-shared":"^2.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.7.0_1790052580196_0.8548628713218809","host":"s3://npm-registry-packages-npm-production"}},"2.7.1":{"name":"@eiei114/pi-sub-core","version":"2.7.1","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.7.1","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"457e8363aad17180e737e8a847fe701bde1c7c50","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.7.1.tgz","fileCount":83,"integrity":"sha512-a79uCHPmVzRAgnz15TeUoD2X/D2z3+W9WvHX1b94i+5kSRON5kxYE5QF2c8V92gD0/DwD6Ca2gVqECIFp4Al0g==","signatures":[{"sig":"MEUCIG6ERBXz85Dr0hTgNirn5i9b9iyVZR8yIuM9tOuuIiBfAiEAtOZkotbqSkmEqk3aQbNB/r7Zi88NcWwHnYxXIbaC/tU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCt2XTjHayu0lExjPswG4pZlrc4C++SrriEVO0rjwVpeAIgboWj9d8rzhJviH5pnwD88dD6uzyXVWWK0pDBiY/cOv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":434771},"type":"module","gitHead":"02e99899df81f5525dc5fc17394b716b83baddde","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.19.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.21.0","dependencies":{"@eiei114/pi-sub-shared":"^2.7.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"^0.80.0","@earendil-works/pi-coding-agent":"^0.80.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.7.1_1790098748222_0.3279535209186435","host":"s3://npm-registry-packages-npm-production"}},"2.7.2":{"name":"@eiei114/pi-sub-core","version":"2.7.2","keywords":["pi-package"],"license":"MIT","_id":"@eiei114/pi-sub-core@2.7.2","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"homepage":"https://github.com/eiei114/pi-sub#readme","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"pi":{"extensions":["./index.ts"]},"dist":{"shasum":"28ae18977683becb45a3ee0edbc0a1273be00f3a","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.7.2.tgz","fileCount":84,"integrity":"sha512-tHqCXmne8dVPohjrFRf5pDWiXqUVqN/Dj3gttclog7WsBseMPiWYW2ytuYWEJ8kdPArLkqOhqC2jck9+c+CKng==","signatures":[{"sig":"MEQCICVfwTaGP3QtvFEhdP6Jl7cuGmFTC6jci7LvvjkwTvLGAiAYTJEtEbL5GXLL/MH+OaWCYFTsIxO6/fjGF5V/NevhdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAl1hMUSnOxF5sf/1M8SwuYVVnFPcVB2SG4OH4SQhvh6AiEA0L8ippZsBjXsIeURLIYcAfEnZBiQX3rQv/ni4WoXq4U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":435849},"type":"module","gitHead":"c4666ed77f46f6a6ecf71fa101332b059e7330f8","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"61a8b28b-a75c-43f3-99a9-d202222919c5"}},"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.19.0","description":"Shared usage data core for pi extensions","directories":{},"_nodeVersion":"24.21.0","dependencies":{"@eiei114/pi-sub-shared":"^2.7.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-sub-core_2.7.2_1790783994587_0.013533437510345081","host":"s3://npm-registry-packages-npm-production"}},"2.7.3":{"pi":{"extensions":["./index.ts"]},"_id":"@eiei114/pi-sub-core@2.7.3","bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"dist":{"shasum":"0ebca563e2454f8355335fadff712f67e456d5be","tarball":"https://registry.npmjs.org/@eiei114/pi-sub-core/-/pi-sub-core-2.7.3.tgz","fileCount":84,"integrity":"sha512-xy6ld9zwM50NjDj6Uq5TMmbpMGIm94C9gKy9V7M7UE5mLbS4UVIiE+08t7+fRgERwDE/QBaHsdOYSKk0zGG+aA==","signatures":[{"sig":"MEUCIHSh2ZGkkpa46uLo9RFLiIda+6nFFbMhAo7AX7HvVt53AiEA/rk1HDNR9rgmrbaQnKnPtnUvRRTChh6cvonR3YUeVqY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBqAlGRygAJs96MGdHH4nFQKTOMuB1vax1KAhI8bdm9kAiBsGefsZN2Xa25W+JE1729uAos9PbY1I/hs03i1adFSxg=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eiei114%2fpi-sub-core@2.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":436188},"name":"@eiei114/pi-sub-core","type":"module","gitHead":"1e49ef2105cd4a26687f04a2f6d9223c2827e1a7","license":"MIT","scripts":{"test":"tsx test/all.test.ts","check":"tsc --noEmit","check:watch":"tsc --noEmit --watch"},"version":"2.7.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"61a8b28b-a75c-43f3-99a9-d202222919c5"}},"homepage":"https://github.com/eiei114/pi-sub#readme","keywords":["pi-package"],"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"_npmVersion":"11.19.0","description":"Shared usage data core for pi extensions","directories":{},"maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"@eiei114/pi-sub-shared":"^2.7.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","typescript":"^6.0.3","@types/node":"^26.1.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-sub-core_2.7.3_1790812543617_0.18109743686025515"}}},"time":{"created":"2026-07-05T02:53:13.651Z","modified":"2026-09-30T23:55:44.043Z","1.5.1":"2026-07-05T02:53:13.909Z","1.6.1":"2026-07-08T21:59:33.485Z","2.0.0":"2026-07-10T01:03:58.037Z","2.0.1":"2026-07-20T15:38:58.260Z","2.0.2":"2026-08-03T17:43:23.861Z","2.0.3":"2026-08-18T15:22:56.003Z","2.1.0":"2026-08-18T15:46:52.111Z","2.1.1":"2026-08-18T16:04:47.576Z","2.1.2":"2026-08-18T16:09:00.968Z","2.1.3":"2026-08-28T02:44:14.140Z","2.2.0":"2026-08-30T12:58:41.981Z","2.2.1":"2026-09-01T01:54:54.549Z","2.2.2":"2026-09-03T21:36:34.800Z","2.2.3":"2026-09-04T14:54:37.280Z","2.2.4":"2026-09-07T21:36:41.148Z","2.3.0":"2026-09-08T14:39:36.684Z","2.4.0":"2026-09-08T16:39:45.253Z","2.6.0":"2026-09-21T01:55:14.528Z","2.7.0":"2026-09-22T04:49:40.288Z","2.7.1":"2026-09-22T17:39:08.321Z","2.7.2":"2026-09-30T15:59:54.684Z","2.7.3":"2026-09-30T23:55:43.699Z"},"bugs":{"url":"https://github.com/eiei114/pi-sub/issues"},"license":"MIT","homepage":"https://github.com/eiei114/pi-sub#readme","keywords":["pi-package"],"repository":{"url":"git+https://github.com/eiei114/pi-sub.git","type":"git","directory":"packages/sub-core"},"description":"Shared usage data core for pi extensions","maintainers":[{"name":"eiei114","email":"ekawano114@gmail.com"}],"readme":"# sub-core\n\nShared usage data core for pi extensions. Sub-core owns fetching, caching, provider selection, and emits usage updates via `pi.events` for the wider `sub-*` ecosystem (UI and non-UI clients).\n\n## Overview\n\n- Fetches usage + status data from providers\n- Deduplicates requests via shared cache/lock\n- Emits updates for display-focused extensions (e.g. `sub-bar`) and non-UI tooling extensions\n- Supports Antigravity usage via auth.json (`google-antigravity`)\n\n## Installation\n\nInstall via the pi package manager (recommended):\n\n```bash\npi install npm:@eiei114/pi-sub-core\n```\n\nUse `-l` to install into project settings instead of global:\n\n```bash\npi install -l npm:@eiei114/pi-sub-core\n```\n\nFor a UI, also install a display extension like `sub-bar` from the same repo (see the root README for the full setup).\n\nManual install (local development):\n\n```bash\ngit clone https://github.com/eiei114/pi-sub.git\nln -s /path/to/pi-sub/packages/sub-core ~/.pi/agent/extensions/sub-core\n```\n\nAlternative (no symlink): add it to `~/.pi/agent/settings.json`:\n\n```json\n{\n  \"extensions\": [\"/path/to/pi-sub/packages/sub-core/index.ts\"]\n}\n```\n\n## Tool Access\n\nTool registration is gated by `tools` in `~/.pi/agent/pi-sub-core-settings.json`.\nBy default, both tools are **off**. To enable them, set:\n\n```json\n{\n  \"tools\": {\n    \"usageTool\": true,\n    \"allUsageTool\": true\n  }\n}\n```\n\nThen run `/reload` (tool registration only happens on load). You can also toggle these in `/sub-core:settings` → Tool Settings.\n\nWhen enabled, `sub-core` registers tools to expose usage snapshots to Pi:\n\n- `sub_get_usage` / `get_current_usage` – refreshes usage (forced by default) and returns `{ provider, usage }`.\n- `sub_get_all_usage` / `get_all_usage` – refreshes and returns all enabled provider entries (auto-enabled providers require credentials).\n\n## Settings\n\nUse `sub-core:settings` to configure shared provider settings plus **Usage Refresh Settings** and **Status Refresh Settings**. Provider enablement supports `auto` (default), `on`, and `off` — `auto` enables a provider only when credentials are detected.\n\nUsage refresh controls cache/usage updates, while status refresh controls incident polling (you can keep status on a slower interval). The Minimum Refresh Interval caps how often refresh triggers can fetch new data even if you refresh every turn.\n\nAntigravity usage requires an OAuth token in `~/.pi/agent/auth.json` under the `google-antigravity` key.\n\nAnthropic extra usage formatting is controlled in Provider Settings (currency symbol + decimal separator).\n\n### OpenRouter\n\nOpenRouter usage is read from two endpoints with the same inference credential:\n\n| Endpoint | Scope | Required? |\n|----------|-------|-----------|\n| [`GET /api/v1/key`](https://openrouter.ai/docs/api-reference/limits) | The key doing the request: its spending cap (`limit` / `limit_remaining`) and its spend (`usage`) | Yes — authoritative |\n| [`GET /api/v1/credits`](https://openrouter.ai/docs/api-reference/get-credits) | The account wallet (`total_credits` / `total_usage`) | No — best effort |\n\n`/credits` is documented as needing a management key. Some ordinary keys are\nserved it anyway, so it is still attempted, but a failure (typically `403`)\nnever discards the key data: the snapshot keeps the key numbers and reports the\nwallet as unavailable rather than reusing an older wallet reading.\n\nThe two are surfaced separately and are never mixed:\n\n- `keyLimit` / `keyRemaining` / `keyUsage` describe **this key**. A `Key limit`\n  window is only produced for a real numeric cap; a zero cap counts as fully\n  used. `limit: null` means the key itself is uncapped — not that the wallet is\n  unlimited — so it yields no percentage at all.\n- `creditTotal` / `creditUsage` / `creditRemaining` stay **account-level**. A\n  wallet with zero total credit counts as fully used.\n\nTwo fields are deliberately ignored: `limit_reset` is a period name such as\n`daily`, not a timestamp, so no reset date is ever shown for a key cap or for\nthe top-up wallet; `rate_limit` is deprecated.\n\nCredential lookup order is `OPENROUTER_API_KEY`, then `OPENROUTER_KEY`, then\n`~/.pi/agent/auth.json` (`openrouter.access` / `.key` / `.apiKey`). Blank and\nnon-string values are skipped, and a `!command` value is not a credential\nbecause no command is executed to resolve it. Both hosts are fixed constants —\nthere is no base-URL override — and requests refuse redirects so a bearer token\ncannot follow a hop to another host. Picking a specific account out of a\nmulti-account auth file is a separate concern and is **not** handled here.\n\nSettings are stored in `~/.pi/agent/pi-sub-core-settings.json` (migrated from the legacy extension `settings.json` when present; the legacy file is removed after a successful migration).\n\n**Settings migrations:** settings are merged with defaults on load, but renames/removals are not migrated automatically. When adding new settings or changing schema, update the defaults/merge logic and provide a migration (or instruct users to reset `pi-sub-core-settings.json`).\n\n## Cache\n\nSub-core stores a shared cache and lock file:\n\n- `~/.pi/agent/cache/sub-core/cache.json`\n- `~/.pi/agent/cache/sub-core/cache.lock`\n\nLegacy cache files next to the extension entry or in the agent root are migrated to the cache directory and removed on first run.\n\nCurrent-session Codex usage is an exception: it resolves credentials from the selected Pi model, including numbered multi-pass providers such as `openai-codex-2`, and keeps a credential-scoped in-memory cache rather than sharing the base provider's disk entry. Switching models clears the old account's display immediately; late responses and reload callbacks cannot restore it. Authentication failure does not fall back to another account. The sub-bar label identifies the selected Codex provider. This does not add an all-account quota API or change other providers' credential selection.\n\n## Security notes\n\n- Keep `~/.pi/agent/auth.json` readable only by your user (e.g. `chmod 600 ~/.pi/agent/auth.json`).\n- Avoid logging token-bearing headers or auth config when troubleshooting provider calls.\n\n## Provider comparison\n\n| Provider | Usage Data | Status Page | Notes |\n|----------|-----------|-------------|-------|\n| Anthropic (Claude) | 5h/Week windows, extra usage | ✅ | Extra usage on/off state |\n| GitHub Copilot | Monthly quota, requests | ✅ | Request multiplier support |\n| Google Gemini | Pro/Flash quotas | ✅ | Aggregated by model family |\n| Antigravity | Model quotas | ✅ | Sandbox Cloud Code Assist quotas (tested) |\n| OpenAI Codex | Primary/secondary windows | ✅ | Credits not yet supported (PRs welcome!) |\n| OpenCode | 5h/Week/Month windows | - | Go subscription quotas from opencode.ai usage API; unofficial |\n| AWS Kiro | Credits | - | `kiro-cli /usage` (stdout+stderr); tested on Windows |\n| z.ai | Tokens/monthly limits | - | API quota limits |\n| Kimi for Coding | Week + 5h rolling windows | - | OAuth; tested with `pi-provider-kimi-code` |\n| OpenRouter | Key spending cap + account credit | - | `/api/v1/key` (authoritative) plus best-effort `/api/v1/credits` |\n| xAI (Grok) | Subscription quota window (Week/Month) | - | SuperGrok/Grok plan quota via an undocumented CLI billing endpoint; OAuth only; base `xai` account only |\n\n### xAI (Grok) subscription usage\n\n- **What it shows:** the subscription quota percentage of the current billing period plus its reset time, as one window (`Week`, `Month`, or `Usage` when the period type is unknown). Nothing else is derived from the payload — prepaid balance, on-demand spend, credit/unit counts, and plan names are deliberately not shown because their meaning in this undocumented response is unverified.\n- **Credentials:** the OAuth access token from `~/.pi/agent/auth.json` under `xai` (only when the entry has `\"type\": \"oauth\"` and a non-blank `access`), or the `XAI_OAUTH_TOKEN` override. Tokens are never refreshed and no login flow is triggered; when the token is rejected the widget reports the HTTP status and you re-authenticate with pi's normal `/login`.\n- **API keys are not a substitute:** `XAI_API_KEY` and `api_key` auth entries are never used here. They are valid credentials for the xAI developer API, but that is a different billing bucket and cannot report subscription quota.\n- **Single account:** usage is read for the base `xai` credential only. Numbered aliases (`xai-2`, …) resolve to no provider rather than displaying the base account's quota.\n- **Unofficial endpoint:** the endpoint and its client headers are derived from client behavior, not from public docs, and can break at any time. HTTP 426 means the pinned client version is no longer accepted; it is reported as a plain error and never retried with a spoofed version. All failures soft-error with a static message plus HTTP status — response bodies are never surfaced or logged.\n\n## Development\n\n### Packaging notes (pi install compatibility)\n\nPi packages use a `pi` field in `package.json` plus the `pi-package` keyword for discoverability. This repo already declares `pi.extensions`, so you can install via:\n\n```bash\npi install npm:@eiei114/pi-sub-core\n```\n\nManual paths/symlinks still work for local development as documented above.\n\n### Tested providers\n\nTested so far: Anthropic (Claude), OpenAI Codex, GitHub Copilot, Kimi for Coding, OpenRouter. Other providers are implemented but not yet verified in production.\n\n### Adding a Provider\n\nYou need to update both **sub-core** (fetch layer) and **sub-bar** (display layer).\n\n### Feature placement (core vs UI)\n\n- **sub-core**: fetching, caching, provider detection/selection, status polling, tools/events, and shared settings.\n- **sub-bar**: formatting, widget layout, UI-only toggles, and display-specific behavior.\n- **sub-shared**: shared types/constants for anything referenced by both layers.\n\nSee the root README “Developer guide” for the decision checklist and examples.\n\n#### sub-core (fetch + status)\n1. Add provider name to `src/types.ts` (`PROVIDERS`, `ProviderName`).\n2. Implement fetcher in `src/providers/impl/<provider>.ts`.\n3. Register provider in `src/providers/registry.ts`.\n4. Add detection + status config in `src/providers/metadata.ts`.\n5. Add provider settings defaults in `src/settings-types.ts`.\n\n#### sub-bar (display + UI)\n1. Add provider name to `src/types.ts`.\n2. Add display rules + labels in `src/providers/metadata.ts`.\n3. Add window visibility in `src/providers/windows.ts`.\n4. Add extras in `src/providers/extras.ts` (if needed).\n5. Add settings UI + defaults in `src/providers/settings.ts` and `src/settings-types.ts`.\n\n### Events (public contract)\n\nSub-core uses `pi.events` as an in-process pub/sub bus. Any `sub-*` extension can subscribe to updates (UI or headless). Sub-core is the source of truth for provider selection and refresh behavior; clients observe state and optionally request changes.\n\n#### Broadcasts\n- `sub-core:ready` → `{ state, settings }` (first load)\n- `sub-core:update-current` → `{ state }` (cache hit or fresh fetch)\n- `sub-core:update-all` → `{ state }` (cached entries + current provider)\n- `sub-core:settings:updated` → `{ settings }`\n\n`update-current` state is `{ provider, usage }`.\n`update-all` state is `{ provider, entries }`, where entries are cached provider snapshots.\n\n#### Requests (pull current state)\n- `sub-core:request` → `{ reply, includeSettings? }`\n- `sub-core:request` → `{ type: \"entries\", reply, force? }` (bulk usage entries)\n\nThe `reply` callback receives `{ state }` or `{ entries }` immediately if available.\n\n#### Selective read-only usage (optional v1 contract)\n\n`sub-core:usage-request:v1` accepts `{ provider, signal?, reply }`. It replies with\n`{ version: 1, provider, usage?, error?: { code } }`. Types and the event constant\nare exported by sub-shared as `ScopedUsageRequest`, `ScopedUsageResponse` and\n`SCOPED_USAGE_EVENT`.\n\nAllowed **exact base Pi identities**: `anthropic`, `github-copilot`, `zai`,\n`openrouter`, `opencode-go`, `xai`. An identity also requires an installed adapter.\nThe current provider set includes xAI when its adapter is installed. This event\ndoes not change provider response semantics; enhanced OpenRouter key/wallet\nsupport is provided separately ([#65](https://github.com/eiei114/pi-sub/pull/65)).\n\nThe outer provider echoes the requested Pi ID;\n`usage.provider` is the adapter ID (`copilot` / `opencode` where applicable).\nAliases and Codex are deliberately rejected: this is not an account-resolution\ncontract. Codex consumers must retain their account-bound credential path.\n\nEach request reads only the selected provider through its existing credential\nresolver and adapter. It honors disabled settings, uses GET only with redirects\nprohibited, and composes caller cancellation, a 15-second deadline and runtime\nshutdown. Native credential subprocesses receive a requested timeout of at most\nfive seconds (or the remaining deadline). This is not a hard wall-clock guarantee:\nNode can wait for child termination and synchronous filesystem work is not\npreemptible. Cancellation takes effect when synchronous work yields.\nRequests before normal session initialization return `FETCH_FAILED` without\nstarting migrations; retry after `session_start` finishes.\nIt does not select a provider/model, read/write shared usage cache,\nbroadcast updates, refresh status, or spend credits. Base provider resolution\nmay use the adapter's normal native CLI credential fallback; it does not assert\nthat every custom model credential override identifies that same account.\n\nConsumers must filter project permissions **before emitting**, validate both\nidentities, bound their own wait (older cores have no listener), and ignore late\nresponses after disposal. Never fall back to bulk entries to satisfy a scoped\nread. Existing autonomous sub-core refresh behavior is unchanged by this API.\n\n#### Actions (mutate core state)\n- `sub-core:settings:patch` → `{ patch }` (updates refresh interval/provider settings and persists)\n- `sub-core:action` → `{ type: \"refresh\" | \"cycleProvider\", force? }`\n\nAfter an action, sub-core emits `sub-core:update-current` with the new state.\n\n## Credits\n\n- Hannes Januschka ([barts](https://github.com/hjanuschka/shitty-extensions?tab=readme-ov-file#usage-barts), [@hjanuschka](https://x.com/hjanuschka))\n- Peter Steinberger ([CodexBar](https://github.com/steipete/CodexBar), [@steipete](https://x.com/steipete))\n\n## Status\n\nActive. Used by `sub-bar` for display.\n","readmeFilename":"README.md"}