{"_id":"@brain0pia/pi-ultrathink","_rev":"11-a90f44c32e913eba8c9449269ebbb0c1","name":"@brain0pia/pi-ultrathink","dist-tags":{"latest":"0.7.1"},"versions":{"0.1.0":{"name":"@brain0pia/pi-ultrathink","version":"0.1.0","keywords":["pi-package","pi","extension","ultrathink"],"_id":"@brain0pia/pi-ultrathink@0.1.0","maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"02be8b3b9174a8f0b6b16f52625e4bdf301ff32e","tarball":"https://registry.npmjs.org/@brain0pia/pi-ultrathink/-/pi-ultrathink-0.1.0.tgz","fileCount":20,"integrity":"sha512-Om+qP05gYqrgmC8YKgDDoVv/GBMjwcrqWK7x/7qn2xyKgi9v2KcOAYLQhbmEfFxojZ4PCi/EBcngZjRY2I8R9Q==","signatures":[{"sig":"MEYCIQDgCNch0DJWBkyBhclVxswPaL66WqjASlR8SXdISoP5KgIhAIWCRsqDclqH7u/bWyDJwhCkDUZiVz0Gg2Alj5VBsnLx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116193},"type":"module","engines":{"node":">=20.6.0"},"gitHead":"0e770faa57b92c0613a2a25eb4fe7c1cbf6098a0","scripts":{"demo":"tsx demo/runDemo.ts","test":"vitest --run","check":"npm run typecheck && npm run test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"brain0pia","email":"not.a.ravil@gmail.com"},"_npmVersion":"11.8.0","description":"Pi extension for /ultrathink review loops with conditional git commits","directories":{},"_nodeVersion":"25.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","vitest":"^3.2.4","typescript":"^5.7.3","@types/node":"^24.3.0","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.57.1","@mariozechner/pi-coding-agent":"^0.57.1"},"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-ultrathink_0.1.0_1773339704599_0.11624776440035522","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@brain0pia/pi-ultrathink","version":"0.2.0","keywords":["pi-package","pi","extension","ultrathink"],"_id":"@brain0pia/pi-ultrathink@0.2.0","maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"homepage":"https://github.com/brainopia/pi-ultrathink","bugs":{"url":"https://github.com/brainopia/pi-ultrathink/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"1e53df0faed781a22a7ab24e3ab55b1fb49d84a9","tarball":"https://registry.npmjs.org/@brain0pia/pi-ultrathink/-/pi-ultrathink-0.2.0.tgz","fileCount":20,"integrity":"sha512-7vvMCblM1aRW7B7+nNnoE/kzydX7RdnRQK+80mmZzCpx6wJTr53n6GR211KYWL6B4s4YEISTOaAhH0iHccjQhg==","signatures":[{"sig":"MEYCIQD1AH95aYob2Gdp1rSfoT1arP4c5djbdr+AP5br4NjUtAIhAIWbAV7ITUMMgXQGLO0wdZjCfuvHEuotiQfMGMnVQ+1W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117716},"type":"module","engines":{"node":">=20.6.0"},"gitHead":"5999f6b091373528b34350aa81d0e6c6bccaa069","scripts":{"demo":"tsx demo/runDemo.ts","test":"vitest --run","check":"npm run typecheck && npm run test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"brain0pia","email":"not.a.ravil@gmail.com"},"repository":{"url":"git+https://github.com/brainopia/pi-ultrathink.git","type":"git"},"_npmVersion":"11.8.0","description":"Pi extension for /ultrathink review loops with conditional git commits","directories":{},"_nodeVersion":"25.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","vitest":"^3.2.4","typescript":"^5.7.3","@types/node":"^24.3.0","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.57.1","@mariozechner/pi-coding-agent":"^0.57.1"},"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-ultrathink_0.2.0_1773372365474_0.42772161841150025","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@brain0pia/pi-ultrathink","version":"0.3.0","keywords":["pi-package","pi","extension","ultrathink"],"license":"MIT","_id":"@brain0pia/pi-ultrathink@0.3.0","maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"homepage":"https://github.com/brainopia/pi-ultrathink","bugs":{"url":"https://github.com/brainopia/pi-ultrathink/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"449a32a50fda874b72ce8ae79807147d07c852ef","tarball":"https://registry.npmjs.org/@brain0pia/pi-ultrathink/-/pi-ultrathink-0.3.0.tgz","fileCount":21,"integrity":"sha512-PsCsJeFVdmLst8AxJ8JzeEWYCKAdgiARHH51gXE2V1vF1c6/2cKpVc6UqsQiunGfYgt9RpBTPl0AsHhjuIeSFA==","signatures":[{"sig":"MEUCICC3e/06uP2dbTFAygCaV8dmChZrk6KNcj0QAMwnSDhQAiEArtmvJ/wXTa5rHuaM2tj5AP39Y796qlLLKFZj/1q4mmw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118802},"type":"module","engines":{"node":">=20.6.0"},"gitHead":"50f3cfd4d6d59ab3c2080082aeacdeabd807fa97","scripts":{"demo":"tsx demo/runDemo.ts","test":"vitest --run","check":"npm run typecheck && npm run test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"brain0pia","email":"not.a.ravil@gmail.com"},"repository":{"url":"git+https://github.com/brainopia/pi-ultrathink.git","type":"git"},"_npmVersion":"11.8.0","description":"Pi extension for /ultrathink review loops with conditional git commits","directories":{},"_nodeVersion":"25.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","vitest":"^3.2.4","typescript":"^5.7.3","@types/node":"^24.3.0","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.57.1","@mariozechner/pi-coding-agent":"^0.57.1"},"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-ultrathink_0.3.0_1773372562879_0.8743245833687205","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@brain0pia/pi-ultrathink","version":"0.3.2","keywords":["pi-package","pi","extension","ultrathink"],"license":"MIT","_id":"@brain0pia/pi-ultrathink@0.3.2","maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"homepage":"https://github.com/brainopia/pi-ultrathink","bugs":{"url":"https://github.com/brainopia/pi-ultrathink/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"58439f4a1491b6957e5d9ce58c76673057c7f51d","tarball":"https://registry.npmjs.org/@brain0pia/pi-ultrathink/-/pi-ultrathink-0.3.2.tgz","fileCount":21,"integrity":"sha512-WZHdv9ajqj4L7rOJmgfiL6ttM/07Brfx+ZN+JICEnyiiO0H3duj5RRbYCogNIfMtdRk/KYolO/SFPUBnDuVPpw==","signatures":[{"sig":"MEUCIQCMqwHbMDJXJ8JRMu66bcb6Y+K8YiI2ijVaLzVVZ2UNrgIgH5SOCB2uroEWytrTevCVGIMY8PLxdTFTLxGfovLnPP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118178},"type":"module","engines":{"node":">=20.6.0"},"gitHead":"82d2dd902233745685cd8a56055b5158bc72249b","scripts":{"demo":"tsx demo/runDemo.ts","test":"vitest --run","check":"npm run typecheck && npm run test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"brain0pia","email":"not.a.ravil@gmail.com"},"repository":{"url":"git+https://github.com/brainopia/pi-ultrathink.git","type":"git"},"_npmVersion":"11.8.0","description":"Pi extension for /ultrathink review loops with conditional git commits","directories":{},"_nodeVersion":"25.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","vitest":"^3.2.4","typescript":"^5.7.3","@types/node":"^24.3.0","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.57.1","@mariozechner/pi-coding-agent":"^0.57.1"},"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-ultrathink_0.3.2_1773375698118_0.8374121100455092","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@brain0pia/pi-ultrathink","version":"0.3.3","keywords":["pi-package","pi","extension","ultrathink"],"license":"MIT","_id":"@brain0pia/pi-ultrathink@0.3.3","maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"homepage":"https://github.com/brainopia/pi-ultrathink","bugs":{"url":"https://github.com/brainopia/pi-ultrathink/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"3a1ef8db14d2a30287daa40c98b0ba61ec51c85f","tarball":"https://registry.npmjs.org/@brain0pia/pi-ultrathink/-/pi-ultrathink-0.3.3.tgz","fileCount":23,"integrity":"sha512-zsnENfvRH/t7Dpa/2s4AomZlbh7YaFTGE5+yUwj1MotfNnM60kHTJRQT7tX8dWoljbZcXfE35OxMdNRywucZZQ==","signatures":[{"sig":"MEQCIDgSoPTpuWcEfeB9i26RZqi15deEyaEoBeaPRXWHYPpUAiBznsoFWDzfHJRNCnmNtGkvGnchxOqz0psx2B0Vu6STHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120044},"type":"module","engines":{"node":">=20.6.0"},"gitHead":"24c4da0933616d4a404a5d5a0969bd7b152355d8","scripts":{"demo":"tsx demo/runDemo.ts","test":"vitest --run","check":"npm run typecheck && npm run test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"brain0pia","email":"not.a.ravil@gmail.com"},"repository":{"url":"git+https://github.com/brainopia/pi-ultrathink.git","type":"git"},"_npmVersion":"11.8.0","description":"Pi extension for /ultrathink review loops with conditional git commits","directories":{},"_nodeVersion":"25.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","vitest":"^3.2.4","typescript":"^5.7.3","@types/node":"^24.3.0","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.57.1","@mariozechner/pi-coding-agent":"^0.57.1"},"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-ultrathink_0.3.3_1773385859527_0.3750847558340962","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@brain0pia/pi-ultrathink","version":"0.3.4","keywords":["pi-package","pi","extension","ultrathink"],"license":"MIT","_id":"@brain0pia/pi-ultrathink@0.3.4","maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"homepage":"https://github.com/brainopia/pi-ultrathink","bugs":{"url":"https://github.com/brainopia/pi-ultrathink/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"08ec59b4fb5e8f2e8011c6bf4518c490d5a6ddb3","tarball":"https://registry.npmjs.org/@brain0pia/pi-ultrathink/-/pi-ultrathink-0.3.4.tgz","fileCount":23,"integrity":"sha512-ZtJfnEqGfGLLe54tKhb+8ALObyBWApamNZ7EZ89DsxFCZ21GXDU1mWW09IPcB5mULd/GtNPz/FlLRasrEWvQaw==","signatures":[{"sig":"MEQCIAMgKIVuHzqBASubsk4AJsNxWRz31WYgKBJCPMxsNe/hAiAxM3TLXm7sWjQ/hOsbHL3RdqmD85S/H6sRfCno/jkEUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119755},"type":"module","engines":{"node":">=20.6.0"},"gitHead":"895d008c28b9510896c9157b6d72f80ee92ad6ff","scripts":{"demo":"tsx demo/runDemo.ts","test":"vitest --run","check":"npm run typecheck && npm run test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"brain0pia","email":"not.a.ravil@gmail.com"},"repository":{"url":"git+https://github.com/brainopia/pi-ultrathink.git","type":"git"},"_npmVersion":"11.8.0","description":"Pi extension for /ultrathink review loops with conditional git commits","directories":{},"_nodeVersion":"25.5.0","dependencies":{"@mariozechner/pi-ai":"^0.57.1","@mariozechner/pi-coding-agent":"^0.57.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","vitest":"^3.2.4","typescript":"^5.7.3","@types/node":"^24.3.0","@sinclair/typebox":"^0.34.41"},"peerDependencies":{"@sinclair/typebox":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-ultrathink_0.3.4_1773387588727_0.3721930465844796","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@brain0pia/pi-ultrathink","version":"0.4.0","keywords":["pi-package","pi","extension","ultrathink"],"license":"MIT","_id":"@brain0pia/pi-ultrathink@0.4.0","maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"homepage":"https://github.com/brainopia/pi-ultrathink","bugs":{"url":"https://github.com/brainopia/pi-ultrathink/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"72f11df2a5747a880e8c848498e2dfb26b1c75bc","tarball":"https://registry.npmjs.org/@brain0pia/pi-ultrathink/-/pi-ultrathink-0.4.0.tgz","fileCount":27,"integrity":"sha512-yqdLvM3QpZceBSY9GvOOLB2aUjlaF8UbIruWYBOo+wsGh74ktpdhUm3vBSnv7koU5lMBZ9VjQxDDC1hIft+NgQ==","signatures":[{"sig":"MEUCIAl/9lhbpDU/QAaTNa4ezEkZqfkY47PneP/pxHx11/BgAiEAp+G639THXmep/XSmd7WuOa6PyYIl8OcP4jC//IiHuv0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203139},"type":"module","engines":{"node":">=20.6.0"},"gitHead":"6b50c68b989407094b72107e4b12548918463950","scripts":{"demo":"tsx demo/runDemo.ts","test":"vitest --run","check":"npm run typecheck && npm run test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"brain0pia","email":"not.a.ravil@gmail.com"},"repository":{"url":"git+https://github.com/brainopia/pi-ultrathink.git","type":"git"},"_npmVersion":"11.8.0","description":"Pi extension for /ultrathink review loops with conditional git commits","directories":{},"_nodeVersion":"25.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","vitest":"^3.2.4","typescript":"^5.7.3","@types/node":"^24.3.0","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.57.1","@mariozechner/pi-tui":"^0.57.1","@mariozechner/pi-coding-agent":"^0.57.1"},"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-ultrathink_0.4.0_1774196932731_0.255012166083332","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@brain0pia/pi-ultrathink","version":"0.5.0","keywords":["pi-package","pi","extension","ultrathink"],"license":"MIT","_id":"@brain0pia/pi-ultrathink@0.5.0","maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"homepage":"https://github.com/brainopia/pi-ultrathink","bugs":{"url":"https://github.com/brainopia/pi-ultrathink/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"36e9d599f6e947c29d59d9341870e3440b761503","tarball":"https://registry.npmjs.org/@brain0pia/pi-ultrathink/-/pi-ultrathink-0.5.0.tgz","fileCount":27,"integrity":"sha512-IvRF3oSPnRxgzNX+xTkmH8NihtOsQ/UpFTPf6WdufMnLk5oKdgEqB5x7GrsZ3wlCdYrARBK/kIn3LT90PTE60w==","signatures":[{"sig":"MEUCIQCzhjn70y8ynIst1XvXfdfgvgPCvE7A+I3QlOUEi0X3XgIgV88CMM9HESxyInqsTxO72kCO4tW7deToiiww4WERQCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210455},"type":"module","engines":{"node":">=20.6.0"},"gitHead":"de8ded2b29fbfe875b63096553c97277e2c1be9a","scripts":{"demo":"tsx demo/runDemo.ts","test":"vitest --run","check":"npm run typecheck && npm run test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"brain0pia","email":"not.a.ravil@gmail.com"},"repository":{"url":"git+https://github.com/brainopia/pi-ultrathink.git","type":"git"},"_npmVersion":"11.8.0","description":"Pi extension for /ultrathink review loops with conditional git commits","directories":{},"_nodeVersion":"25.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","vitest":"^3.2.4","typescript":"^5.7.3","@types/node":"^24.3.0","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.57.1","@mariozechner/pi-tui":"^0.57.1","@mariozechner/pi-coding-agent":"^0.57.1"},"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-ultrathink_0.5.0_1774339623878_0.4563872346025488","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@brain0pia/pi-ultrathink","version":"0.6.0","keywords":["pi-package","pi","extension","ultrathink"],"license":"MIT","_id":"@brain0pia/pi-ultrathink@0.6.0","maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"homepage":"https://github.com/brainopia/pi-ultrathink","bugs":{"url":"https://github.com/brainopia/pi-ultrathink/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"fed707f2b3f96e1f19fe11716b27ccb80487fb7e","tarball":"https://registry.npmjs.org/@brain0pia/pi-ultrathink/-/pi-ultrathink-0.6.0.tgz","fileCount":31,"integrity":"sha512-Z19d3ZFVDaUx4TYtMKey4ugq8XSrN40DqIM8HiimuVERUWUV9u9viHp2NXFlTUkfMn1cMNabePAN7oaBpt/GHw==","signatures":[{"sig":"MEYCIQC23fMbF4PwiVDHWyOorUBVjBPym+BnbSCn6y8wXUrk3AIhAJ07oaGPM16dJwW5dDSHeRweUEYXatxKBYki9KjjspsW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280055},"type":"module","engines":{"node":">=20.6.0"},"gitHead":"51befe1aafbcc85c28d7c4bf37289d93ccf91987","scripts":{"demo":"tsx demo/runDemo.ts","test":"vitest --run","check":"npm run typecheck && npm run test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"brain0pia","email":"not.a.ravil@gmail.com"},"repository":{"url":"git+https://github.com/brainopia/pi-ultrathink.git","type":"git"},"_npmVersion":"11.8.0","description":"Pi extension for /ultrathink review loops with conditional git commits","directories":{},"_nodeVersion":"25.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","vitest":"^3.2.4","typescript":"^5.7.3","@types/node":"^24.3.0","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.57.1","@mariozechner/pi-tui":"^0.57.1","@mariozechner/pi-coding-agent":"^0.57.1"},"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-ultrathink_0.6.0_1774430984910_0.9470540446926754","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@brain0pia/pi-ultrathink","version":"0.7.0","keywords":["pi-package","pi","extension","ultrathink"],"license":"MIT","_id":"@brain0pia/pi-ultrathink@0.7.0","maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"homepage":"https://github.com/brainopia/pi-ultrathink","bugs":{"url":"https://github.com/brainopia/pi-ultrathink/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"e0914fe3a41ca6128b6289078169c2fd5de6787f","tarball":"https://registry.npmjs.org/@brain0pia/pi-ultrathink/-/pi-ultrathink-0.7.0.tgz","fileCount":33,"integrity":"sha512-nCRIR93rldZFdHnbpEqBhvw7zy0livDBWK6RBadCXtGKfP0scsFy5pgHiIkcIag5H7et1u+cGOCd6vynnq1ImA==","signatures":[{"sig":"MEQCIBy8jd0NlyDYnzEI5ilzXfrrvLCXK6AWCc4JmwL9vYHmAiBxU/ADxQ5rkBKedAtS9DAIEaLnDXX+WRyMW0K2fszgJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":364420},"type":"module","engines":{"node":">=20.6.0"},"gitHead":"1cc964b8fb3af2577a7bc9ffbd5ebf455e371fb7","scripts":{"demo":"tsx demo/runDemo.ts","test":"vitest --run","check":"npm run typecheck && npm run test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"brain0pia","email":"not.a.ravil@gmail.com"},"repository":{"url":"git+https://github.com/brainopia/pi-ultrathink.git","type":"git"},"_npmVersion":"11.8.0","description":"Pi extension for /ultrathink review loops with conditional git commits","directories":{},"_nodeVersion":"25.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","vitest":"^3.2.4","typescript":"^5.7.3","@types/node":"^24.3.0","@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.57.1","@mariozechner/pi-tui":"^0.57.1","@mariozechner/pi-coding-agent":"^0.57.1"},"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-tui":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-ultrathink_0.7.0_1774438831388_0.8988382976523055","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@brain0pia/pi-ultrathink","version":"0.7.1","description":"Pi extension for /ultrathink review loops with conditional git commits","license":"MIT","repository":{"type":"git","url":"git+https://github.com/brainopia/pi-ultrathink.git"},"homepage":"https://github.com/brainopia/pi-ultrathink","bugs":{"url":"https://github.com/brainopia/pi-ultrathink/issues"},"type":"module","keywords":["pi-package","pi","extension","ultrathink"],"engines":{"node":">=20.6.0"},"scripts":{"test":"vitest --run","typecheck":"tsc --noEmit","demo":"tsx demo/runDemo.ts","check":"npm run typecheck && npm run test"},"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*","@mariozechner/pi-tui":"*"},"devDependencies":{"@sinclair/typebox":"^0.34.41","@mariozechner/pi-ai":"^0.57.1","@mariozechner/pi-coding-agent":"^0.57.1","@mariozechner/pi-tui":"^0.57.1","@types/node":"^24.3.0","tsx":"^4.20.5","typescript":"^5.7.3","vitest":"^3.2.4"},"pi":{"extensions":["./src/index.ts"]},"publishConfig":{"access":"public"},"gitHead":"3b50fcb6b94da78b079fe3d4cf63eb3eff27aaac","_id":"@brain0pia/pi-ultrathink@0.7.1","_nodeVersion":"25.5.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-pegaNSpQBuGP3g9jWjUtsv5fIe+JchuJ6qCfIK9T4GpkucRmVFBig9Obg9r6l7qPBpIjq7zM5n9pJ3SEcYg+7A==","shasum":"7f16d15efa9974291107b7673d782c412f6934c6","tarball":"https://registry.npmjs.org/@brain0pia/pi-ultrathink/-/pi-ultrathink-0.7.1.tgz","fileCount":33,"unpackedSize":366571,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBXOQ15+RR0O1Hwppg+zxmFJ7BQceROJvhrYXmrKJqYvAiEAkklqHopjMm0azhAexaGSVs9lzsoRsgf40y8iqNg5744="}]},"_npmUser":{"name":"brain0pia","email":"not.a.ravil@gmail.com"},"directories":{},"maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-ultrathink_0.7.1_1774467323890_0.11388247787579142"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-12T18:21:44.461Z","modified":"2026-03-25T19:35:24.458Z","0.1.0":"2026-03-12T18:21:44.779Z","0.2.0":"2026-03-13T03:26:05.639Z","0.3.0":"2026-03-13T03:29:23.087Z","0.3.2":"2026-03-13T04:21:38.304Z","0.3.3":"2026-03-13T07:10:59.668Z","0.3.4":"2026-03-13T07:39:48.876Z","0.4.0":"2026-03-22T16:28:52.878Z","0.5.0":"2026-03-24T08:07:04.027Z","0.6.0":"2026-03-25T09:29:45.073Z","0.7.0":"2026-03-25T11:40:31.579Z","0.7.1":"2026-03-25T19:35:24.050Z"},"bugs":{"url":"https://github.com/brainopia/pi-ultrathink/issues"},"license":"MIT","homepage":"https://github.com/brainopia/pi-ultrathink","keywords":["pi-package","pi","extension","ultrathink"],"repository":{"type":"git","url":"git+https://github.com/brainopia/pi-ultrathink.git"},"description":"Pi extension for /ultrathink review loops with conditional git commits","maintainers":[{"name":"brain0pia","email":"not.a.ravil@gmail.com"}],"readme":"<div align=\"center\">\n  <h1>🧠 pi-ultrathink</h1>\n  <p><b>A git-driven multi-pass review loop and an AI oracle reviewer for Pi</b></p>\n</div>\n\n`pi-ultrathink` is a [Pi](https://github.com/mariozechner/pi-coding-agent) extension that adds three commands:\n\n- `/ultrathink <prompt>` — a git-driven review loop on a temporary branch\n- `/ultrathink-review [optional prompt]` — a git-driven review loop for existing branch changes\n- `/ultrathink-oracle <prompt>` — an AI oracle reviewer that evaluates the agent’s work\n## Why use Ultrathink?\n\nComplex coding tasks often need more than one pass. The model writes code, reviews what changed, fixes issues, checks again, and stops only when another pass no longer changes the repo.\n\nUltrathink makes that process explicit and inspectable:\n\n- the initial task is still a normal visible user message\n- follow-up review prompts are also visible user messages\n- each changed pass becomes a git commit on a temporary branch\n- the final summary prints the branch outcome plus every scratch-branch commit title and description\n\n## How the loop works\n\n```mermaid\nflowchart TD\n    Start([User: /ultrathink Fix the task]) --> Prompt[TUI review-prompt editor]\n    Prompt -->|Accept| Naming[Pick naming model first time only]\n    Prompt -->|Cancel| End([Abort])\n    Naming --> Branch[Create ultrathink/ai-slug branch]\n    Branch --> V1[Agent pass 1]\n    V1 --> Git1{Repo changed?}\n    Git1 -->|No| Finish0[Delete empty scratch branch]\n    Git1 -->|Yes| Commit1[AI-authored commit message]\n    Commit1 --> Review1[Visible review prompt]\n    Review1 --> V2[Agent pass 2]\n    V2 --> GitN{Repo changed?}\n    GitN -->|Yes| CommitN[Another AI-authored commit]\n    GitN -->|No| Finalize[Reintegrate into original branch]\n    CommitN --> Review1\n    Finalize --> One{How many scratch commits?}\n    One -->|1| Rebase[Rebase + fast-forward]\n    One -->|2+| Merge[AI-authored merge commit]\n```\n\n## Usage\n\nInside Pi:\n\n```text\n/ultrathink Migrate the database schema to v4 and update all queries\n/ultrathink-review\n/ultrathink-review Focus on correctness, edge cases, and test gaps\n```\n\n### First run: choose a small naming model\n\nThe first time you run Ultrathink, it checks `~/.pi/ultrathink.json` for a configured naming model.\n\nIf none is set, Ultrathink shows a selector built from Pi’s available models. The selected model is saved to `~/.pi/ultrathink.json` and reused later.\n\nThat small model is used only for:\n\n- scratch-branch slug generation\n- per-iteration commit title/body generation\n- final merge-commit title/body generation when the scratch branch has multiple commits\n\n### Review prompt editor\n\nBefore the loop starts, Pi opens the continuation-prompt editor. Ultrathink automatically prepends:\n\n- the original task\n- a git diff command based on the run’s baseline commit\n\nYou only edit the review instructions that come after that fixed header.\n\n\n### Reviewing existing branch changes with `/ultrathink-review`\n\nUse `/ultrathink-review` when the work already exists on the current branch and you want Ultrathink to inspect and improve it in several visible passes.\n\nThis mode differs from `/ultrathink` in a few important ways:\n\n- it does **not** open the continuation-prompt editor\n- it sends the first message as an English review prompt, not as your raw slash-command text\n- it shows a visible start message listing the commits that will be reviewed\n- it still runs on a temporary `ultrathink/...` scratch branch\n- it allows a dirty working tree by converting those local edits into one bootstrap commit on the scratch branch before review begins\n\nIf you omit the optional prompt text, Ultrathink uses the normal default continuation body from `continuationPromptTemplate`. If you provide text, that text replaces the default body, but Ultrathink still injects the fixed English review header and the computed `git diff <base> HEAD` command above it.\n\nThe review range is chosen like this:\n\n1. **Dirty working tree** → create a bootstrap commit on the scratch branch and review that commit first\n2. **Current branch tracks its pushed branch** → review commits after the last pushed point (`last-pushed`)\n3. **Current branch tracks another upstream branch** → review commits starting at the first commit unique to the current branch (`first-unique`)\n4. **No upstream, but other local branches exist** → find commits unique to the current branch compared to all other local branches (`first-unique`)\n\nIf there is nothing to review, Ultrathink tells you so and does not start a run. If the current branch has no upstream and no other local branch to compare against, Ultrathink fails clearly instead of guessing a base.\n### Conversation flow\n\nThe loop stays visible in chat history:\n\n```text\nuser: /ultrathink Fix the task\nassistant: [v1] initial implementation\nuser: Original task: Fix the task\n      Review the current repository changes with:\n      git diff <baselineSha> HEAD\nassistant: [v2] refinement\nuser: Original task: Fix the task\n      ...\nassistant: [v3] no further substantial changes\ncustom: Ultrathink summary ...\n```\n\n## Git behavior\n\nUltrathink now always uses a temporary branch, but its own config lives globally in `~/.pi/ultrathink.json` instead of inside each repository.\n\n### Scratch branch naming\n\nEach run starts on a branch named:\n\n```text\nultrathink/<ai-generated-slug>\n```\n\nThere is no run-id suffix in the branch name. If the generated name already exists, Ultrathink asks the naming model for another slug.\n\n### Iteration commits\n\nWhen an assistant pass changes the repository, Ultrathink creates a commit on the scratch branch.\n\nThe title and body are generated by the configured naming model from:\n\n- the original prompt\n- the changed files\n- a diff summary\n- the assistant’s output for that iteration\n\nIf an assistant pass leaves the repo unchanged, no commit is created and the loop stops.\n\n### Reintegration into the original branch\n\nWhen the run ends normally:\n\n- **0 scratch commits** → switch back and delete the scratch branch\n- **1 scratch commit** → rebase the scratch branch onto the original branch, then fast-forward the original branch\n- **2+ scratch commits** → merge back with one final AI-authored merge commit\n\nOn successful reintegration, the `ultrathink/...` branch is deleted.\n\nIf the final rebase or merge conflicts, Ultrathink aborts the operation, preserves the scratch branch, and tells you to resolve it manually.\n\n### Review-mode startup rules\n\n`/ultrathink` still requires a clean working tree before it starts.\n\n`/ultrathink-review` is the one exception. If the repository is dirty, it first:\n\n1. creates the scratch branch\n2. stages all current changes\n3. creates an AI-authored bootstrap commit\n4. includes that bootstrap commit in the visible reviewed-commit list\n5. reviews the resulting range with a prompt that always includes an English header and `git diff <exclusiveBaseSha> HEAD`\n\nFor a clean `/ultrathink-review` start, the extension first checks for an upstream tracking branch. If none exists, it falls back to comparing against other local branches. It only fails when there is no upstream and no other local branch to determine a review range.\n\n## When does the loop stop?\n\nUltrathink stops when one of these happens:\n\n1. **No git changes** — the latest pass did not change the repo\n2. **Iteration cap** — `maxIterations` was reached\n3. **User cancellation** — the user sends another prompt\n4. **Interrupt cancellation** — the active assistant turn is aborted\n5. **Naming model failure** — if the naming model cannot produce a commit message, a fallback commit is created with a generic message and the run continues; the final stop reason is `naming-error`\n6. **Git failure** — branch/commit/finalization automation fails\n\nNormal completions (`no-git-changes`, `max-iterations`, `naming-error`) attempt automatic reintegration into the original branch.\n\n## Oracle Mode\n\nOracle mode (`/ultrathink-oracle`) replaces the git-based stop signal with an **AI reviewer** (the oracle). This works without git and in any directory.\n\n### How oracle mode works\n\n```mermaid\nflowchart TD\n    Start([\"/ultrathink-oracle Fix auth bugs\"]) --> Setup[Setup widget: model + thinking + prompt]\n    Setup -->|Confirm| Task[Send task to main agent]\n    Setup -->|Cancel| End([Abort])\n    Task --> V1[Agent works on task]\n    V1 --> Oracle1[Oracle reviews code with tools]\n    Oracle1 --> Accept1{Oracle calls oracle_accept?}\n    Accept1 -->|Yes| Done[🔮 Oracle accepted]\n    Accept1 -->|No / feedback| Feedback1[Oracle feedback shown to user]\n    Feedback1 --> V2[Agent responds to feedback]\n    V2 --> OracleN[Oracle reviews again]\n    OracleN --> AcceptN{oracle_accept?}\n    AcceptN -->|Yes| Done\n    AcceptN -->|No| MaxCheck{Max rounds?}\n    MaxCheck -->|No| Feedback1\n    MaxCheck -->|Yes| MaxDone[🔮 Max rounds reached]\n```\n\n### Setup widget\n\nWhen you run `/ultrathink-oracle`, a setup overlay appears where you can:\n\n- Select the oracle’s model from available models\n- Choose the thinking level (minimal/low/medium/high/xhigh)\n- Edit the oracle’s system prompt\n\nDefaults come from `~/.pi/ultrathink.json` under the `oracle` key.\n\n### The oracle session\n\nThe oracle is a separate in-process agent session (via `createAgentSession` from the Pi SDK). It has its own tools (read, bash, grep, find, ls) and can independently inspect the codebase. The oracle and main agent communicate through visible user messages — you can see the entire conversation.\n\nThe oracle signals acceptance by calling a custom `oracle_accept` tool. This is an unambiguous machine-readable signal — no text parsing.\n\n### When does oracle mode stop?\n\n1. **Oracle accepts** — the oracle calls `oracle_accept`\n2. **Max rounds** — `oracle.maxRounds` reached without acceptance\n3. **User cancellation** — the user sends another prompt\n4. **Interrupt cancellation** — the active assistant turn is aborted\n\nOracle mode does not use git branches or reintegration.\n\n## Final summary\n\nAt the end of a **git task run** (`/ultrathink`), Ultrathink sends a visible summary message that includes:\n\n- original branch\n- scratch branch\n- naming model\n- reintegration result\n- whether the scratch branch was deleted\n- every scratch-branch commit with SHA, title, and description\n- the final merge commit, if one was created\n\nAt the end of a **git review run** (`/ultrathink-review`), the summary also identifies that it was a review run and includes:\n\n- the review source (`dirty-bootstrap`, `last-pushed`, or `first-unique`)\n- the diff base used for the injected review prompt\n- the reviewed commit list shown at startup\n\nAt the end of an **oracle-mode** run, the summary includes:\n\n- the number of oracle review rounds\n- the oracle's verdict (if the oracle accepted the work)\n\nBoth summaries double as a work log.\n\n## Configuration\n\nCreate `~/.pi/ultrathink.json`: \n\n```json\n{\n  \"maxIterations\": 4,\n  \"continuationPromptTemplate\": \"Optional custom review prompt body appended after the fixed task/diff header\",\n  \"commitBodyMaxChars\": 4000,\n  \"naming\": {\n    \"provider\": \"openai\",\n    \"modelId\": \"gpt-4.1-mini\"\n  },\n  \"oracle\": {\n    \"provider\": \"anthropic\",\n    \"modelId\": \"claude-sonnet-4\",\n    \"thinkingLevel\": \"high\",\n    \"maxRounds\": 5\n  }\n}\n```\n\n### Options\n\n- `maxIterations`: maximum number of assistant iterations\n- `continuationPromptTemplate`: default text shown in the review-prompt editor\n- `commitBodyMaxChars`: truncation limit for generated commit bodies\n- `naming.provider`: provider id for the small naming model\n- `naming.modelId`: model id for the small naming model\n\n- `oracle.provider`: provider id for the oracle model\n- `oracle.modelId`: model id for the oracle model\n- `oracle.thinkingLevel`: default thinking level for the oracle (default: `\"high\"`)\n- `oracle.systemPromptTemplate`: override the built-in oracle system prompt\n- `oracle.maxRounds`: max oracle review rounds (default: `5`)\n\n## Installation\n\nInstall from npm:\n\n```bash\npi install @brain0pia/pi-ultrathink\n```\n\nQuick try without installation:\n\n```bash\npi -e npm:@brain0pia/pi-ultrathink\n```\n\nLocal development load:\n\n```bash\npi -e ./src/index.ts\n```\n\n## Development\n\nInstall dependencies and run checks:\n\n```bash\nnpm install\nnpm run check\n```\n\nRun the deterministic SDK demo:\n\n```bash\nnpm run demo\n```\n\nThe demo uses a scripted provider and does not require real model credentials.\n","readmeFilename":"README.md"}