{"_id":"specpi","_rev":"37-f8d055400d9e4d9d7a24fd1a05904245","name":"specpi","dist-tags":{"latest":"0.36.4"},"versions":{"0.10.0":{"name":"specpi","version":"0.10.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.10.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"4a473f04031ad393cf695b4c2d0bbffbb2b4fa9e","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.10.0.tgz","fileCount":57,"integrity":"sha512-NgXtvtMbg2XsEK5yXe0h/MJRZqtEVoYQe1shZEirUfUMKQB8dij2MrWHCMtAeGXB0YviEVJc3kqnokhYhBMdbw==","signatures":[{"sig":"MEQCIEDXyYa9zkczW9ODNw3gHTKc+y0AHf/JKKkv8NeHS/UIAiAPhw3iOgHMElgTM08Q1wX5OVwww5n/qvQvgpgeyRzgIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":779492},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"f9aa342d058bb84d755e794f0d963010bfb0fa72","scripts":{"test":"node --test","check":"npm run format:check && node --check scripts/specpi.mjs && node --check scripts/lib.mjs && node --check scripts/lock.mjs && node --check scripts/check-release-order.mjs && node --check scripts/verify-artifact.mjs && node --check extensions/spec/core.mjs && node --experimental-strip-types --check extensions/command-guard/index.ts && node --check extensions/command-guard/core.mjs && node --check extensions/command-guard/rules.mjs && node --check extensions/command-guard/bash.mjs && node --check extensions/command-guard/powershell.mjs && node --check extensions/command-guard/cmd.mjs && node --check extensions/command-guard/paths.mjs && node --check extensions/command-guard/redact.mjs && node --check extensions/command-guard/managed-files.mjs && node --check extensions/command-guard/smoke.mjs && node --check extensions/files/core.mjs && node --check extensions/tool-wishlist/core.mjs && node --check extensions/tool-wishlist/registry.mjs && node --check extensions/tool-wishlist/validators.mjs && node --experimental-strip-types --check extensions/tool-wishlist/index.ts && node --experimental-strip-types --check extensions/ui-refresh/index.ts && node --experimental-strip-types --check extensions/workflow-controls/index.ts && node --check extensions/workflow-controls/scope.mjs && node --check extensions/workflow-controls/experiments.mjs && node --check extensions/workflow-controls/challenge.mjs && node --check extensions/workflow-controls/smoke.mjs && node --check extensions/browser/core.mjs && node --check extensions/browser/smoke.mjs && node --check site/cycle.js && node --test && npm run check:package","format":"prettier --write \"**/*.{js,mjs,ts,tsx}\" && eslint . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --write \"**/*.{js,mjs,ts,tsx}\" && eslint . --fix","format:check":"prettier --check \"**/*.{js,mjs,ts,tsx}\" && eslint .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs"},"_npmUser":{"name":"tannermidd","email":"tmiddleton@middmail.net"},"repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","prettier":"3.9.6","typescript":"6.0.3","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.10.0_1788371903623_0.021181940539621857","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"specpi","version":"0.11.2","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.11.2","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"db18fa44f98d907fcbfeb9b563f581d8637d3505","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.11.2.tgz","fileCount":60,"integrity":"sha512-UpU4zBWuMe/ucSv3NBkkWQK+NzYog4YNSLlDUXedhU6owv9F9HDwc9KN7SJjVsBeXgTjpMpCU9kYx/wDDFoSvg==","signatures":[{"sig":"MEYCIQCmBk0aUvPwP4c45St0/uqDPXPCcxR8pJ7d2bMjiYPppgIhAMbBFlscre6nmt/bvx0bi3UBCPDswdWUhsD8LEqBM6qg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.11.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":946821},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.11.2.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && node --check scripts/specpi.mjs && node --check scripts/lib.mjs && node --check scripts/lock.mjs && node --check scripts/check-release-order.mjs && node --check scripts/verify-artifact.mjs && node --check extensions/spec/core.mjs && node --experimental-strip-types --check extensions/command-guard/index.ts && node --check extensions/command-guard/core.mjs && node --check extensions/command-guard/rules.mjs && node --check extensions/command-guard/bash.mjs && node --check extensions/command-guard/powershell.mjs && node --check extensions/command-guard/cmd.mjs && node --check extensions/command-guard/paths.mjs && node --check extensions/command-guard/redact.mjs && node --check extensions/command-guard/managed-files.mjs && node --check extensions/command-guard/smoke.mjs && node --check extensions/files/core.mjs && node --check extensions/tool-wishlist/core.mjs && node --check extensions/tool-wishlist/verification.mjs && node --check extensions/tool-wishlist/registry.mjs && node --check extensions/tool-wishlist/validators.mjs && node --experimental-strip-types --check extensions/tool-wishlist/index.ts && node --experimental-strip-types --check extensions/ui-refresh/index.ts && node --experimental-strip-types --check extensions/workflow-controls/index.ts && node --check extensions/workflow-controls/scope.mjs && node --check extensions/workflow-controls/task-contract.mjs && node --check extensions/workflow-controls/experiments.mjs && node --check extensions/workflow-controls/challenge.mjs && node --check extensions/workflow-controls/smoke.mjs && node --check extensions/browser/core.mjs && node --check extensions/browser/smoke.mjs && node --check site/cycle.js && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,tsx}\" && eslint --config eslint.config.js . --fix","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.11.2.tgz","_integrity":"sha512-UpU4zBWuMe/ucSv3NBkkWQK+NzYog4YNSLlDUXedhU6owv9F9HDwc9KN7SJjVsBeXgTjpMpCU9kYx/wDDFoSvg==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","prettier":"3.9.6","typescript":"6.0.3","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.11.2_1788571459784_0.7549809329143198","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"specpi","version":"0.12.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.12.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"0ab36ba3809eaa1c500e81a4253525832c67ffa0","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.12.0.tgz","fileCount":78,"integrity":"sha512-wDLhfE/9MraRJbqNlZsL9yu2afC818/tBPORb2AeTxqFgis7K0HIRzOuZ7ZuIXwUb2n+3V6c9t8Df/Ap04VfvQ==","signatures":[{"sig":"MEYCIQD7CLAIRwUhmICClJ7ABDH6hK+4+SgS72TYyUZNhjStbAIhAPvQx7GkaVtpmL2f+JVgRHdsO3QnWWQLBNyYhbWK8IKi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1236321},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.12.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,tsx}\" && eslint --config eslint.config.js . --fix","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.12.0.tgz","_integrity":"sha512-wDLhfE/9MraRJbqNlZsL9yu2afC818/tBPORb2AeTxqFgis7K0HIRzOuZ7ZuIXwUb2n+3V6c9t8Df/Ap04VfvQ==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","prettier":"3.9.6","typescript":"6.0.3","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.12.0_1788631109589_0.28429936527404376","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"specpi","version":"0.13.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.13.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"167f7d9a4467918852644992f32d275dacc38b1c","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.13.0.tgz","fileCount":86,"integrity":"sha512-gaPaDxDjMLiO6BPE2a2Xqg/P5B85YXJ0n4cuHLBXGcLux2TaixUrtmrqUA8Y5DsSWDtWDmT+i+LFjnPcY2IKDw==","signatures":[{"sig":"MEUCIQDe34uvZ9AM1Fmy8H1qhLjwg250vpbUNQyt/PCdbDWT1wIge120JxiSwZteUFuHlcj/fiUpY7/3gMLBMSXBlUpTmYE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1298075},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.13.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm run check:types && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:types":"tsc -p tsconfig.browser.json","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","test:browser":"node scripts/run-browser-tests.mjs extension","check:package":"node scripts/check-package.mjs","setup:browser":"node scripts/setup-browser-tests.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs","test:site:browser":"node scripts/run-browser-tests.mjs site"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.13.0.tgz","_integrity":"sha512-gaPaDxDjMLiO6BPE2a2Xqg/P5B85YXJ0n4cuHLBXGcLux2TaixUrtmrqUA8Y5DsSWDtWDmT+i+LFjnPcY2IKDw==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@types/node":"22.20.1","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.13.0_1788640360994_0.18167442975879622","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"specpi","version":"0.15.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.15.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"f3be24e0a234770412ef280110d8bd1c4f5aac6b","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.15.0.tgz","fileCount":87,"integrity":"sha512-YtGWHKrM/M+6adbnAjgWZ+ZQGLQ4VsXCgBLllFNFgWZFC5aD1bmzyOzjLxWBQUZquz8okw8be+XuZJeL6MESWA==","signatures":[{"sig":"MEYCIQC5xhqn2cSGN8kciQM3vmdAKOCqhI/BA++mOWG7EhgmLgIhAKFwQM6Nwkts9KnHB3O/Vb8F1QenAeidP3cGNzfkILE3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1331552},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.15.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm run check:types && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:types":"tsc -p tsconfig.browser.json","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","test:browser":"node scripts/run-browser-tests.mjs extension","check:package":"node scripts/check-package.mjs","setup:browser":"node scripts/setup-browser-tests.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs","test:site:browser":"node scripts/run-browser-tests.mjs site"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.15.0.tgz","_integrity":"sha512-YtGWHKrM/M+6adbnAjgWZ+ZQGLQ4VsXCgBLllFNFgWZFC5aD1bmzyOzjLxWBQUZquz8okw8be+XuZJeL6MESWA==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@types/node":"22.20.1","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.15.0_1788663004321_0.2881606365923195","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"specpi","version":"0.16.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.16.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"bf0683099f2dc200ecd5f5e13d1dd0584b995c0f","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.16.0.tgz","fileCount":87,"integrity":"sha512-hh7/vWL/yI2uMq7aTsxZsdCTCUugSYthv1RqS538NAbjwhxvgxtbTJwmyqE0RYfTa1QP+jzs/LmFgehY3Qir6w==","signatures":[{"sig":"MEUCIDeJAltfCPiZNfpiwdjeUKVTwroPQUISaO9pR5CgDGNhAiEAlGPYeYLh80vNNevpl017IYqbP1+eKdgBfgbs8h0ZyzE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1334979},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.16.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm run check:types && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:types":"tsc -p tsconfig.browser.json","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","test:browser":"node scripts/run-browser-tests.mjs extension","check:package":"node scripts/check-package.mjs","setup:browser":"node scripts/setup-browser-tests.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs","test:site:browser":"node scripts/run-browser-tests.mjs site"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.16.0.tgz","_integrity":"sha512-hh7/vWL/yI2uMq7aTsxZsdCTCUugSYthv1RqS538NAbjwhxvgxtbTJwmyqE0RYfTa1QP+jzs/LmFgehY3Qir6w==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@types/node":"22.20.1","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.16.0_1788668182448_0.8196963689600707","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"specpi","version":"0.17.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.17.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"b29137e94630d7cbef60327a4077693ad10b54bb","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.17.0.tgz","fileCount":87,"integrity":"sha512-WiRPCWDh34ONYLurDz4oVPe051m+/U6CxSFwpYfIaZkMsvpq9AdODUc9L9IckZWSki+yohUO0OM9cb9ztMeqbw==","signatures":[{"sig":"MEUCIFPA8PQQwNC+6MM7MlqC4B4Gi+e5CN/hYZ1yC4dWdhYqAiEAuvIDIzg7qUTTVIiBqSsSI/iAAQZ7fgnZ2DyGflgTEqE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1348330},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.17.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm run check:types && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:types":"tsc -p tsconfig.browser.json","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","test:browser":"node scripts/run-browser-tests.mjs extension","check:package":"node scripts/check-package.mjs","setup:browser":"node scripts/setup-browser-tests.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs","test:site:browser":"node scripts/run-browser-tests.mjs site"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.17.0.tgz","_integrity":"sha512-WiRPCWDh34ONYLurDz4oVPe051m+/U6CxSFwpYfIaZkMsvpq9AdODUc9L9IckZWSki+yohUO0OM9cb9ztMeqbw==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@types/node":"22.20.1","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.17.0_1788727354855_0.3585949568379321","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"specpi","version":"0.17.1","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.17.1","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"3e51b66364ca75dcfa6f13d31d7e7c70a41e91d0","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.17.1.tgz","fileCount":73,"integrity":"sha512-VCApCq9L+dZRQ6xLoNyr5cCcASXpEfTB3YzSxZQeHTOUUsj09PQnwyEYYIoMn4uOKWcc+Z8T9yACXpJKsewmMg==","signatures":[{"sig":"MEUCIE6OHycRiA1L6JHZVWrkpnaRgKbeCyh+x4WBfYP0W5VzAiEAmPvVBBrBozE/Akr3kiDGsuRRZQU3ySmMX2RjN9rNE2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1135151},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.17.1.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm run check:types && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:types":"tsc -p tsconfig.browser.json","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","test:browser":"node scripts/run-browser-tests.mjs extension","check:package":"node scripts/check-package.mjs","setup:browser":"node scripts/setup-browser-tests.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs","test:site:browser":"node scripts/run-browser-tests.mjs site"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.17.1.tgz","_integrity":"sha512-VCApCq9L+dZRQ6xLoNyr5cCcASXpEfTB3YzSxZQeHTOUUsj09PQnwyEYYIoMn4uOKWcc+Z8T9yACXpJKsewmMg==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@types/node":"22.20.1","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.17.1_1788753146697_0.8591743083572034","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"specpi","version":"0.18.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.18.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"f9b8a49cfb2694b846042ec0158cebb193b5ca7b","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.18.0.tgz","fileCount":73,"integrity":"sha512-/WrgHDyPMzmiISrq/sj/6cu3NJ6e9ApGa3dFvZ2prH7Qe4CMUiXHGuAH5SndT8N+yRR7vHcz4K7XedxQs0asTQ==","signatures":[{"sig":"MEUCIHHyvA+F3D/xqTmm0K63jwl5oucHSJ+nv5RUWnc9xjIhAiEApC4HWD/m+8bW5aUGk0mpFPtiGrPDvFN2vrZjRfB4qrQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1145921},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.18.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm run check:types && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:types":"tsc -p tsconfig.browser.json","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","test:browser":"node scripts/run-browser-tests.mjs extension","check:package":"node scripts/check-package.mjs","setup:browser":"node scripts/setup-browser-tests.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs","test:site:browser":"node scripts/run-browser-tests.mjs site"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.18.0.tgz","_integrity":"sha512-/WrgHDyPMzmiISrq/sj/6cu3NJ6e9ApGa3dFvZ2prH7Qe4CMUiXHGuAH5SndT8N+yRR7vHcz4K7XedxQs0asTQ==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@types/node":"22.20.1","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.18.0_1788793441095_0.25650329161284313","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"specpi","version":"0.18.1","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.18.1","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"0aa2ead0bab80c9098e3a2395af3a4074e50fae7","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.18.1.tgz","fileCount":73,"integrity":"sha512-V7iuUAW/UhwNK6y1xuikLtTmBd5FaZ0MtP/QkKx90zdluRl4jGcX6ReIjJXohQsr9koQvIjV9qJRs9bxoR3qcg==","signatures":[{"sig":"MEQCIHFi9IlD1VX6CJhrZlmmXBmalpDq9l2bX02EIoTuuUZsAiBKycvGDGsxa3sbsqqDviyGEY2y15n05pvjJe2HqiKIuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.18.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1147320},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.18.1.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm run check:types && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:types":"tsc -p tsconfig.browser.json","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","test:browser":"node scripts/run-browser-tests.mjs extension","check:package":"node scripts/check-package.mjs","setup:browser":"node scripts/setup-browser-tests.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs","test:site:browser":"node scripts/run-browser-tests.mjs site"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.18.1.tgz","_integrity":"sha512-V7iuUAW/UhwNK6y1xuikLtTmBd5FaZ0MtP/QkKx90zdluRl4jGcX6ReIjJXohQsr9koQvIjV9qJRs9bxoR3qcg==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@types/node":"22.20.1","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.18.1_1788803957303_0.03846788036607296","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"specpi","version":"0.19.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.19.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"917dadda1dd746d2c0e7ff0ea171ef5f5cb199e6","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.19.0.tgz","fileCount":79,"integrity":"sha512-8AaQaW3CTCOfgPT/Q221S7iTQqCRLaC1qCq2YY6T0chKXzvzC1mF3sOO/F1LxOq8n1jD4F7uUQwasp+Aj6IHDg==","signatures":[{"sig":"MEYCIQDAnsGzB+8wbr7p6KojkjVpnYtrNtC9BK3D3yS0VDI3XAIhAN7ke+WycQcIoh0RMoXvIc1fWsa9EJ6oGMZKsJQ54f55","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1191194},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.19.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm run check:types && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:types":"tsc -p tsconfig.browser.json","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","test:browser":"node scripts/run-browser-tests.mjs extension","check:package":"node scripts/check-package.mjs","setup:browser":"node scripts/setup-browser-tests.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs","test:site:browser":"node scripts/run-browser-tests.mjs site"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.19.0.tgz","_integrity":"sha512-8AaQaW3CTCOfgPT/Q221S7iTQqCRLaC1qCq2YY6T0chKXzvzC1mF3sOO/F1LxOq8n1jD4F7uUQwasp+Aj6IHDg==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@types/node":"22.20.1","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.19.0_1788842348926_0.8699550637070583","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"specpi","version":"0.19.1","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.19.1","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"dee7d5e12da53d95aff804b300a9df00d73b5117","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.19.1.tgz","fileCount":79,"integrity":"sha512-5penptQ8QWB9uAZ9VQPUNIW8hvn74WwAOvQ9i5195SHXSdobMNlof7DF9nDJdIIi8PXPSS8TlFEx1PCquCeOpQ==","signatures":[{"sig":"MEYCIQCScxq9rlR9UmNUztTLgIvX9DtZHpSFD6feLi5+MMOsTAIhANFWpIe2uO+cnr5VgzCjiSzqyq8LkZ6VNTB6m715UWLz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1192604},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.19.1.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm run check:types && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:types":"tsc -p tsconfig.browser.json","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","test:browser":"node scripts/run-browser-tests.mjs extension","check:package":"node scripts/check-package.mjs","setup:browser":"node scripts/setup-browser-tests.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs","test:site:browser":"node scripts/run-browser-tests.mjs site"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.19.1.tgz","_integrity":"sha512-5penptQ8QWB9uAZ9VQPUNIW8hvn74WwAOvQ9i5195SHXSdobMNlof7DF9nDJdIIi8PXPSS8TlFEx1PCquCeOpQ==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@types/node":"22.20.1","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.19.1_1788876124179_0.9866449808581961","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"specpi","version":"0.20.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.20.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"ff3af3b44fb847fa5dd5b148ca8da896bc4229bf","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.20.0.tgz","fileCount":90,"integrity":"sha512-IOv2YPY6lcWFztNrmU1BurscQ5K50QifTuTvdm5/oHoFv/KZe+ijIQWakZgANNBNe5Gu4ZurPq59S/vG6VuF0g==","signatures":[{"sig":"MEUCIQDu1JULgCxNpOn1VRU3gFsmB8U5c3ZrTj/KeIj8CX+buwIgYZ1KzA81y9+FSZ3RgOFjc07Qj+WamlSQekE7hhRZbNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1271389},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.20.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm run check:types && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:types":"tsc -p tsconfig.browser.json","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","test:browser":"node scripts/run-browser-tests.mjs extension","check:package":"node scripts/check-package.mjs","setup:browser":"node scripts/setup-browser-tests.mjs","prepublishOnly":"npm run check","test:structural":"node scripts/run-structural-tests.mjs","check:pi-package":"node scripts/check-pi-package.mjs","setup:structural":"node scripts/setup-structural-tests.mjs","test:site:browser":"node scripts/run-browser-tests.mjs site"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.20.0.tgz","_integrity":"sha512-IOv2YPY6lcWFztNrmU1BurscQ5K50QifTuTvdm5/oHoFv/KZe+ijIQWakZgANNBNe5Gu4ZurPq59S/vG6VuF0g==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@types/node":"22.20.1","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.20.0_1789005199221_0.17043687013295195","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"specpi","version":"0.20.1","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.20.1","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://github.com/TannerMidd/SpecPi#readme","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"40e8cc365893f8a7ec8df2df7452cfb46c36dcdc","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.20.1.tgz","fileCount":90,"integrity":"sha512-pKZc1QWGSKab9MUOwl2i8EFYzgtTRbo6tlccOE99RJkwHHUGG3yhkA2uyNGJABuYOf7W17GcQY5UMTfcTDEUPg==","signatures":[{"sig":"MEQCIDMC6OsGv5ySDtX+KGwDSfJVt4p2VRpIRG6mreRvbTLwAiB5W5QIoDAUXXHvnkq+JGGd28bX7G37ZI/AxWdrffYzHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1272440},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.20.1.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm run check:types && npm test && npm run check:package","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:types":"tsc -p tsconfig.browser.json","check:syntax":"node scripts/check-syntax.mjs","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","test:browser":"node scripts/run-browser-tests.mjs extension","check:package":"node scripts/check-package.mjs","setup:browser":"node scripts/setup-browser-tests.mjs","prepublishOnly":"npm run check","test:structural":"node scripts/run-structural-tests.mjs","check:pi-package":"node scripts/check-pi-package.mjs","setup:structural":"node scripts/setup-structural-tests.mjs","test:site:browser":"node scripts/run-browser-tests.mjs site"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.20.1.tgz","_integrity":"sha512-pKZc1QWGSKab9MUOwl2i8EFYzgtTRbo6tlccOE99RJkwHHUGG3yhkA2uyNGJABuYOf7W17GcQY5UMTfcTDEUPg==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"An explicit, privacy-conscious, self-improving harness for the Pi coding agent","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@types/node":"22.20.1","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.20.1_1789012591877_0.9798833398820543","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"specpi","version":"0.21.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.21.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"1c1aa642dcda149510bbb688308d985767da91ca","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.21.0.tgz","fileCount":27,"integrity":"sha512-flOthrMEj5BmYOdVEBaMidP0dWs04iuYRrm00xHIIKMDQLgkW1qNRRUyG6nTenUS4jU2uFtunPpOS6imt5ptEQ==","signatures":[{"sig":"MEUCIQChUe9Fx/WMN34xvX0c4wE5Ws6ExPxvLiMREGYJhvzsgwIgUUrjfiDgXejJC5DAenrMfRjzOeD/Yowe49bMwsV8JuY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDHAopkaUdPY2gxI2nd4nUyKC/LP75D8SCeM2RskXwbkwIhAPMP/69veWIm8KyXDPBK3I0PV31At9hjStJ/SAchW7s0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":362022},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.21.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.21.0.tgz","_integrity":"sha512-flOthrMEj5BmYOdVEBaMidP0dWs04iuYRrm00xHIIKMDQLgkW1qNRRUyG6nTenUS4jU2uFtunPpOS6imt5ptEQ==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.21.0_1789411272680_0.2588325308882411","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"specpi","version":"0.21.1","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.21.1","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"0b91fd4f462ae2fb66b3d98770960918cbfedca1","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.21.1.tgz","fileCount":27,"integrity":"sha512-IS81vzdNBkWUGMqJo40oA981hUC/K+ENot598jInEfJPIQIww+zcGOQAB3r0Q7ZOj80V2oJNtcJBTrXu3Sr+sg==","signatures":[{"sig":"MEUCIQDANE5/utCCi7xWnY8bcM7gkwoJBIAqpMKh3LwBIBANNgIgQw3hh+XrVsY95AJ6o5t1JjR1ilkdqONOh+iqcHaetpo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDWgE1319TTVPP0ePlWe/idV9erKe132pt2ThZ/9Gq6ygIgd6S2GzVMcnHn480ARRhZ6vV7UEJIz6RUtR7xnTw+314=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":365450},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.21.1.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.21.1.tgz","_integrity":"sha512-IS81vzdNBkWUGMqJo40oA981hUC/K+ENot598jInEfJPIQIww+zcGOQAB3r0Q7ZOj80V2oJNtcJBTrXu3Sr+sg==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.21.1_1789414990502_0.0746054617345766","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"specpi","version":"0.22.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.22.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"c074609a2f5f41106c817b3c52d73b749c709edd","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.22.0.tgz","fileCount":27,"integrity":"sha512-RCXcjtSbJwBpmcdfEYcSYyJhFJq3Flv4wLUyGQO29wXakdBd2Wr6WRUntnISnW0vTYIzBmEwJfDwnPuzrqKZ7A==","signatures":[{"sig":"MEUCIH4FgQlicbcLnY7c/bLUikmPmoqorKH1+z7Hakd4o5JyAiEA2XmCbSOvveDT2gZlDLVp8suL45q4XhSB3G+/iJSHtX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIA9ASoMkU+fLQfLINqvC4QNTq0WTW0tb2xOynwmyScL/AiEAgRPN+/7YRDvloXTDyg3eLBMPFh46L6UmHhhUWN1uyrw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":368953},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.22.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.22.0.tgz","_integrity":"sha512-RCXcjtSbJwBpmcdfEYcSYyJhFJq3Flv4wLUyGQO29wXakdBd2Wr6WRUntnISnW0vTYIzBmEwJfDwnPuzrqKZ7A==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.22.0_1789429134787_0.27088648653947134","host":"s3://npm-registry-packages-npm-production"}},"0.22.1":{"name":"specpi","version":"0.22.1","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.22.1","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"4adc7044849c57cdc49c4b8626428c86c54030ef","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.22.1.tgz","fileCount":27,"integrity":"sha512-gs9kWHhoq6a8AwrMnML6iYm/Uo13jqjWQVxm3s8KeEhDs7O4NLe8AyVY0TFLFEFOPSsOQYPtgVAcQwhBCm+p6w==","signatures":[{"sig":"MEUCIQCnPmMPKFGJN1Rx99AK19Dk0RBwVW5I4olcA8QnPjg0WgIgHedfdADyKe0pVEpigvOd61owR0kafcp00bRKP7a2Uc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDrWvDeYWj9WeVTUajSarbWC0CuY/Yikw/28sL1wvj1dAIgUzGl81T8kLkTmq0P26JbUOY4DxUuyoGeYresqhFjR7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.22.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":369822},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.22.1.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:pi-package":"node scripts/check-pi-package.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.22.1.tgz","_integrity":"sha512-gs9kWHhoq6a8AwrMnML6iYm/Uo13jqjWQVxm3s8KeEhDs7O4NLe8AyVY0TFLFEFOPSsOQYPtgVAcQwhBCm+p6w==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.22.1_1789431877157_0.5043590424928348","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"specpi","version":"0.23.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.23.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"a0d0d9d9083c6a091c40cba5d93f0f0d1af9cd70","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.23.0.tgz","fileCount":27,"integrity":"sha512-EwWJve4oTZQTqgYSLqNZy9CsaB8p80k69P8IfM4J35AXrq+iN+D1IHu9Hxsgfl6bA9JNgQ7WbCZS/nPWhHXkrg==","signatures":[{"sig":"MEUCIQCzAOkWowuU9E9ivEbq53Gv/AXBV8oShqEBe5Xvr2ezPgIgevfEtPFENmh9tB0ottnEoy3dqs9+xUBBEpsgPTfeOyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGv5UqXEFsOgzkFvA86bpfQsOaNT/VOJA90W4Evexh2bAiAVN91UbA+9gahDHuw5onXmtGXkbHrNCFv+OilkE3CU3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":379787},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.23.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:pi-package":"node scripts/check-pi-package.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.23.0.tgz","_integrity":"sha512-EwWJve4oTZQTqgYSLqNZy9CsaB8p80k69P8IfM4J35AXrq+iN+D1IHu9Hxsgfl6bA9JNgQ7WbCZS/nPWhHXkrg==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.23.0_1789477665534_0.2808711003192328","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"specpi","version":"0.24.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.24.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"63dbdd7745569fa08aeea049c1b094112cc158c8","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.24.0.tgz","fileCount":27,"integrity":"sha512-XkdDwSjvr4nfCcj40MgSV41r/INeCt1pZZHlvGansKsfCW3ow3ah80Z943vvSw6uWl2prUViov12YH7xWRiEvQ==","signatures":[{"sig":"MEUCIAV3I5tlhy32iEfqBiSfYsreANnxGub76lSb0KAToLXdAiEAhFeh7WmIaE3389tH5BeKNU9B0HUaCvg90ixDGeZRaOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH5GD6es054UBm2Eh56BexfY8Sl0vdRb3OjU+t1sXZt0AiBjNZSQBU5ZnwWu7fdfCsNAqL3mvaQPtswtbjTqglGQiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":376362},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.24.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.24.0.tgz","_integrity":"sha512-XkdDwSjvr4nfCcj40MgSV41r/INeCt1pZZHlvGansKsfCW3ow3ah80Z943vvSw6uWl2prUViov12YH7xWRiEvQ==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.24.0_1789592909125_0.4782861762990085","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"specpi","version":"0.25.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.25.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"4ed23c4f3408c96b3c220d6810bb20c8fdd8133e","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.25.0.tgz","fileCount":28,"integrity":"sha512-33BqcZWNWDWkBnPjWAfxZHybTPwQG31xFFZ3ndjvA4GzVPNXHM0TLcAc8ATNtXPawLvmMo6NY8yNeDugBpteKA==","signatures":[{"sig":"MEYCIQDkcHrJoYk9XqX5jTuvrx4jl/0XbHckUiBYgWsRddjOvQIhANhTVGyGv9+tUeU86osOHcYOuQyHSAcGAALmWGaT5e9Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD5RGyF3B7A9RRHMtTtBLugXqQqhu71zhz86LGf+QB0zgIhAJyhkbO93qBViVWIvk2akpagDNKu7SbylModREadVVrB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":390060},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.25.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.25.0.tgz","_integrity":"sha512-33BqcZWNWDWkBnPjWAfxZHybTPwQG31xFFZ3ndjvA4GzVPNXHM0TLcAc8ATNtXPawLvmMo6NY8yNeDugBpteKA==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.25.0_1789619365142_0.8937055717596596","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"specpi","version":"0.26.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.26.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"5c4b123e7486392140ebc9204e06e49d3c71f15b","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.26.0.tgz","fileCount":30,"integrity":"sha512-KRZXKK0/6yA2ZaD8BN4fz7PiOmRPcQ0WVPmojq42SJ0zN017vk0wUaelBYfqR9XyD4Qyu3okiLHbrC2sdp9KjQ==","signatures":[{"sig":"MEUCIQDLjuMxhEqv+QgjZKW0qyZevjr9kh5VBtn9Mk0pZAHrNwIgbD5aeINehFOzHIqqpwkHMNiaTMwGLROmfi5TuMNra2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDHOQWgwX80FgqvBcoT0EFvyoZ5gjQ6xdP0D/4qwvsG+wIgZ+maTMmF6/aDyqElhRX/CFQ+yd5j5gRwaktNbx3jkZw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":411975},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.26.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.26.0.tgz","_integrity":"sha512-KRZXKK0/6yA2ZaD8BN4fz7PiOmRPcQ0WVPmojq42SJ0zN017vk0wUaelBYfqR9XyD4Qyu3okiLHbrC2sdp9KjQ==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.26.0_1789673352703_0.36624745348550847","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"specpi","version":"0.27.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.27.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"9b5b566e50725d0c919eec5f839901ecae526ca6","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.27.0.tgz","fileCount":48,"integrity":"sha512-nL7inPuIulh6DkpAL/auBJCHjYO1vzV0cLSmF3CiJQqHRiGcDgXSy8TvglTJH7oGVQpAtYDqRbU/Kl+iKspq9A==","signatures":[{"sig":"MEYCIQDwS64XUlmg2p+J2q/xqneWIaRpioSue14tHfuWRuHIrgIhAPO3ZvjJeQmKFqZraK5XMUesuCmrPptykzEAzJ8VIsVD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDWBxzqGPkxtirm+6zYkCAsoGd8uToum71nDV9FA/B/qAiAaaNlU1H6AmHswfRohMqENtGmEeM/KU6/6zmr/RXfWgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":608183},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.27.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.27.0.tgz","_integrity":"sha512-nL7inPuIulh6DkpAL/auBJCHjYO1vzV0cLSmF3CiJQqHRiGcDgXSy8TvglTJH7oGVQpAtYDqRbU/Kl+iKspq9A==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.27.0_1789789601555_0.04298935072748189","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"specpi","version":"0.28.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.28.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"9a1f54e85a92ee8dd26c1779c4e73d647a6c4d6f","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.28.0.tgz","fileCount":51,"integrity":"sha512-udc1di6jRIZJ0zpCftYGl5I1Nz7frqW3Ao9Jz1F8dLRdf2bEgavF32dTyQ/5IX9yflGlWdrHvpCa7iEDvpIEiQ==","signatures":[{"sig":"MEYCIQCTdd59IYrBl8qhLZ4ALQmfxK9/nekUHrwnWd/Qq3v/JgIhAOScTTK40hxODh6LbEFGUQMuNhvHio9Yz2Cj34q/lBKW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA07bSpgOY+66dy7e066gGn75Q7IOCpHMjKJLxqriu+WAiAEkLOifwslzoPMXVhACkDvElFOP3HFtufgM0mNJ19mRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":686519},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.28.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.28.0.tgz","_integrity":"sha512-udc1di6jRIZJ0zpCftYGl5I1Nz7frqW3Ao9Jz1F8dLRdf2bEgavF32dTyQ/5IX9yflGlWdrHvpCa7iEDvpIEiQ==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.28.0_1789840380573_0.39470033710492247","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"specpi","version":"0.29.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.29.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"efdabf9a5992ddf15a7afae4b51fb0760e02f356","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.29.0.tgz","fileCount":50,"integrity":"sha512-RbK5n0mN6iV0ezfpCL//719pPGW73EMbguAdWhwL9773BOtDy1ZvglO7GSL1evfykpc9nyXZttoyPPkHKmBrLw==","signatures":[{"sig":"MEYCIQDJ4LhOvg4OlVNR9RQsNphhN9ZWvl1YUXjRv4UMrss+0gIhAOVeJQOR5sAFQVnNFGFqaLbe8PmuDbYcXY/bUjUa/NX/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEJh63iiByt06e4Ff8fpmbaAUBwvMfAdFwFtQiO5GJjpAiAX/q1thFusI4Ps9J4eq6KQs4si9bInDesLVE2Of0s7gQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":662001},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.29.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.29.0.tgz","_integrity":"sha512-RbK5n0mN6iV0ezfpCL//719pPGW73EMbguAdWhwL9773BOtDy1ZvglO7GSL1evfykpc9nyXZttoyPPkHKmBrLw==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.29.0_1789925391472_0.15137150092956064","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"specpi","version":"0.30.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.30.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"19fc6cafc5c0b97aba7e839dddedd8713ec204a6","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.30.0.tgz","fileCount":49,"integrity":"sha512-MLQuXbIixOtr4ROaW6xDfAehy/2LYnaxJt1R0HGyUO5uSnCrec+hRmmJyCYEST/qZJtqg/uzgjg9feTZ7hCuYQ==","signatures":[{"sig":"MEQCIFsS2s5aUrnpwuU2WJjhI4n15DtePe/1UqB02DJIT5H6AiBSVs7IWdLePFereVjDfmDqq5OkgaZbRclHwApzQkypiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAkEIo6amI3EdsPJb0EblQrtov69cr692v1OWB9rlSfdAiEAvmWxY3y1Dgk+qXbZCAUr9H3DWumJV6muwWQA4QuWz3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.30.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":664898},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.30.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.30.0.tgz","_integrity":"sha512-MLQuXbIixOtr4ROaW6xDfAehy/2LYnaxJt1R0HGyUO5uSnCrec+hRmmJyCYEST/qZJtqg/uzgjg9feTZ7hCuYQ==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.30.0_1790043250897_0.6670177601951064","host":"s3://npm-registry-packages-npm-production"}},"0.30.1":{"name":"specpi","version":"0.30.1","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.30.1","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"5a43bef6127be61e00573efa6fbcde9d4a99ab95","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.30.1.tgz","fileCount":49,"integrity":"sha512-aonMGNr/yZTtysjUAuVAnJ4mz8B0A4pSo7RbZEw0g8xvoSfHtJlHufTVR7H8mE/+NtAN25WySBXxHqDboiZXpg==","signatures":[{"sig":"MEYCIQCvPt4VIVdcOqJrGOM5HAgHbZMry3ybhWOpx+Gc0n2U0QIhALYbtsqcFWVqTtXWrKX6bBdsme127F8NZAy0FB1zJGOv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDeYa2krAcd42eWo3bcVXXMOMGhLw3WzC6oG1rS2HFVSwIgHKrlPoj3HRZrPNbei98eyPhuksZNJrDwcIxchznkd84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.30.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":691655},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.30.1.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/jev-diagrams.mjs --check && node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.30.1.tgz","_integrity":"sha512-aonMGNr/yZTtysjUAuVAnJ4mz8B0A4pSo7RbZEw0g8xvoSfHtJlHufTVR7H8mE/+NtAN25WySBXxHqDboiZXpg==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.30.1_1790053825172_0.8594887239333988","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"specpi","version":"0.31.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.31.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"0e8d518e8190e3b3c6fbeecf04fef740fe850380","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.31.0.tgz","fileCount":48,"integrity":"sha512-Vby2boDc+eiqeFlwOs7eq3ZlrUKuFwxFUmP2X4X1Kp/A/ByuliIzfxIA0EgD/o/wO0a6XJ5FbEMV/YOo1wvWTA==","signatures":[{"sig":"MEQCIA9yLPiA6Buns1C5qTvqE1kLYlYAOpDB9aA3Smp0I2/LAiAcCJ9vLivDGxcvJTydcKHyEbX5mY+972829G42cryeJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCX17y+5jX8hea2jUxkP3SRmWJwVTrjTWZBvIlSLo5jzwIhAPJlJt5m2fCa/kzNGszFq57I5z9/a5032YuOGlzuqaYm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.31.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":685172},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.31.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/jev-diagrams.mjs --check && node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.31.0.tgz","_integrity":"sha512-Vby2boDc+eiqeFlwOs7eq3ZlrUKuFwxFUmP2X4X1Kp/A/ByuliIzfxIA0EgD/o/wO0a6XJ5FbEMV/YOo1wvWTA==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.31.0_1790131333664_0.968935123434721","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"specpi","version":"0.32.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.32.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"c2065b1baeab149c7d85935a8b91c616734c29a8","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.32.0.tgz","fileCount":48,"integrity":"sha512-csdqSGcS0+gSsH8z6Ql2QjvHdsXk2/CW+Q9Uxsf7rujmfVdAo7VoGMrxU4qTdtGx/YHg7N0dVnrKa9WYlEF1IA==","signatures":[{"sig":"MEUCIQCWvrV6nLKgnGxnIqsiO/efgnM3TEjarBSEzNM5Eg0WmwIgZBkwm/wcOPFi2KACFVw+XgndE+PtVsWJBuZwvz8egkU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEc/aRPpbVIdxatdFR7Ptq1xzMBmc88OrN4OQjWPRkhMAiAZCe8rpbQxdtJvx8FmA/R6+fiQudmznRJD1mYZjwWu0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.32.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":690483},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.32.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/jev-diagrams.mjs --check && node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.32.0.tgz","_integrity":"sha512-csdqSGcS0+gSsH8z6Ql2QjvHdsXk2/CW+Q9Uxsf7rujmfVdAo7VoGMrxU4qTdtGx/YHg7N0dVnrKa9WYlEF1IA==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.32.0_1790221423734_0.8142601587908767","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"specpi","version":"0.33.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.33.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"08379b4333482edb49a318ef97aaa808bd8dbfe8","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.33.0.tgz","fileCount":50,"integrity":"sha512-ZWV+pO4uVSev+l3Xw5ti7EYTk8pmSpVficFMiYXXTzHBFJRW0zAUL3BRQaGE4/fLGTCykLpxvMivi9LOEdvqHw==","signatures":[{"sig":"MEUCICXyJ2jlNL1m1L1EFDq8uwANpKUgH04N1XusmYiwcnpkAiEA0yMGXy83gt/27Xh41/pbZA/wsgjsTxnaFYe4Jzjc/EY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDAoD4LrQkwK0gRSvb5B1m/FZapQW0udtt5XhYNnkRwaAiEA3PzSy2zZ4PjOelbnq2azMmlTXBXtJx1mqrEjaPPxMkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.33.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":729696},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.33.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/jev-diagrams.mjs --check && node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.33.0.tgz","_integrity":"sha512-ZWV+pO4uVSev+l3Xw5ti7EYTk8pmSpVficFMiYXXTzHBFJRW0zAUL3BRQaGE4/fLGTCykLpxvMivi9LOEdvqHw==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.33.0_1790222995694_0.06530005974006214","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"specpi","version":"0.34.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.34.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"4106da59b017d8bdde324796e4db7724c24334ca","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.34.0.tgz","fileCount":50,"integrity":"sha512-AnyyuW9whO8NW63FSaBlCGghh+RBhu/p8CKVSaVcjuKd7CInHvOC0q5vhrPoDl9SRfoja3cT4wrii1/cG15gHw==","signatures":[{"sig":"MEQCIDhB/TBXbYl3Pv2ro3knVyvTQrd9GokEl+mUsD4ptgRjAiAaHRoR8IW2y5TZ8bStRygv5RpKReAMQRmKY8j5Yb0oGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD3pqTfHU5EN0Mp8mQcCV3u50TNIO+keDb2UPHv9SUn0AIhAMB+Yyd9FiK0DeAgCIeLCG1nrmWKAwWhfwwDmC9MGN27","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.34.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":738135},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.34.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/jev-diagrams.mjs --check && node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.34.0.tgz","_integrity":"sha512-AnyyuW9whO8NW63FSaBlCGghh+RBhu/p8CKVSaVcjuKd7CInHvOC0q5vhrPoDl9SRfoja3cT4wrii1/cG15gHw==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.34.0_1790286622694_0.07582735917294259","host":"s3://npm-registry-packages-npm-production"}},"0.35.0":{"name":"specpi","version":"0.35.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.35.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"6bad40bdc77a12ecbbfe30b58268455a1a5c994e","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.35.0.tgz","fileCount":50,"integrity":"sha512-5aovNtrEmS+wNM+TGkjH3BQlmXBFCSLYE2Qjwf6liglYAcGE1OqNSaGeUsfHh5oJeXXXNrf/051nfR42tQmEDQ==","signatures":[{"sig":"MEQCIAaAAQS9dHdiS//ne3rr5t+o+6rgD6Sl8nLWi3OgRYPnAiByvZyHXBmV305IvIBeE5OJtedOxRv0rSR0hA0EFWEY/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDvMMxJKVm0MMeq8vbT8u5ulvzf2EHzXk+RBJdDVRG9AgIgNWNdFLl9tNa5RjpKQKdeIWUmppMHtVr6/tVUwIwxV5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.35.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":734662},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.35.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/jev-diagrams.mjs --check && node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check","check:lancet-guard":"npm --prefix packages/lancet-guard run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.35.0.tgz","_integrity":"sha512-5aovNtrEmS+wNM+TGkjH3BQlmXBFCSLYE2Qjwf6liglYAcGE1OqNSaGeUsfHh5oJeXXXNrf/051nfR42tQmEDQ==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.35.0_1790484594716_0.2833245306661729","host":"s3://npm-registry-packages-npm-production"}},"0.36.0":{"name":"specpi","version":"0.36.0","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.36.0","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"e7b7d7d3736bd6ef9e5b3bfbbfc36ccf8f2b57ab","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.36.0.tgz","fileCount":50,"integrity":"sha512-ZEPTZaDCpvOSVPodgAyArs6H5QwxPOd47AXhWmSPMnenAgSN7C3sMS/whXSU6coPLD/1KyF3J7/zfyUUqfPcMw==","signatures":[{"sig":"MEUCICeftDG8UMSiOdTetl6xcWLJQhQM4Kj5u+CMCfzl8A05AiEAldywXZXq0Jj5FFjPdBIICF6V9LswilpkDlaMAmWB3mk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCKF/RlbByeFU3ut77waxseYEL2bgeXFAnXhQ8jB6kqFAIgf+ag2DZuBtUv+qXV0B34P3LYqtvWhjBTQB3czx9IC+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.36.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":736931},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.36.0.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/jev-diagrams.mjs --check && node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check","check:lancet-guard":"npm --prefix packages/lancet-guard run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.36.0.tgz","_integrity":"sha512-ZEPTZaDCpvOSVPodgAyArs6H5QwxPOd47AXhWmSPMnenAgSN7C3sMS/whXSU6coPLD/1KyF3J7/zfyUUqfPcMw==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.36.0_1790521664111_0.6615350441681953","host":"s3://npm-registry-packages-npm-production"}},"0.36.1":{"name":"specpi","version":"0.36.1","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.36.1","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"86ab2a803360ee1a591ae0527ca5f40421e004b3","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.36.1.tgz","fileCount":50,"integrity":"sha512-SWbtUdqhsymI2xaWxcTCULhpHR3O4RjG6ah+A5wdHWpKIRI1a90EUgHY5k9Iq4Uun6GA7ZAI1NV0Z1Em4vpxGg==","signatures":[{"sig":"MEUCIQCBaSwRyt0QDk8j1hIDPkUuzSM298d8xlcqoQ7m4rMwnQIgZA8kocolg3SZ7+zlXxO/bP+COaZ/v3jv0NkafqQqXq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCWpVT7fSHa6Nx9FmdtTsx/4VsHaPdB6eNDtlI5Takv7AIgPn4gioHpoqYam1C+SslX8n/Wc71VWSdjA9WKYOBetXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.36.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":737862},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.36.1.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/jev-diagrams.mjs --check && node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check","check:lancet-guard":"npm --prefix packages/lancet-guard run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.36.1.tgz","_integrity":"sha512-SWbtUdqhsymI2xaWxcTCULhpHR3O4RjG6ah+A5wdHWpKIRI1a90EUgHY5k9Iq4Uun6GA7ZAI1NV0Z1Em4vpxGg==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.36.1_1790556975259_0.2600382510905064","host":"s3://npm-registry-packages-npm-production"}},"0.36.2":{"name":"specpi","version":"0.36.2","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.36.2","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"b145cd95769dbfecbbd8fe57a035d66748e499c0","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.36.2.tgz","fileCount":50,"integrity":"sha512-wNWRgBa+CfhdGsq0ombIpNszqHMNRsGEGZOKQK7mbCtgmDoYUsQ+HrbzRgCQo7uD/WLLJRr8/dDjJyBbpFZzTw==","signatures":[{"sig":"MEQCIFn0+/ziuxGTn9exsQoJgi4oqRXFyKnU6H/9K8XAskrXAiAgmy5SNk4SJDALUBV4YzWrRtB++Q6CAJ+8bdJaMZVOvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDiAAi78tn+keZilrSQFyeo9JWO2cEexD3t792FtUUejAiBGd9tKXqEI5arHAyvEXflvlpWfsP6qTC1ZCD/qXvXmSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.36.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":739030},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.36.2.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/jev-diagrams.mjs --check && node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check","check:lancet-guard":"npm --prefix packages/lancet-guard run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.36.2.tgz","_integrity":"sha512-wNWRgBa+CfhdGsq0ombIpNszqHMNRsGEGZOKQK7mbCtgmDoYUsQ+HrbzRgCQo7uD/WLLJRr8/dDjJyBbpFZzTw==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.36.2_1790659631464_0.715052310072184","host":"s3://npm-registry-packages-npm-production"}},"0.36.3":{"name":"specpi","version":"0.36.3","keywords":["pi-package","pi-coding-agent","agent-harness"],"author":{"name":"Tanner Middleton"},"license":"MIT","_id":"specpi@0.36.3","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"homepage":"https://tannermidd.github.io/SpecPi/","bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"pi":{"skills":["./skills"],"extensions":["./extensions"]},"bin":{"specpi":"scripts/specpi.mjs"},"dist":{"shasum":"97d9a707c148670bf3be17b5bbd72b578f311c80","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.36.3.tgz","fileCount":50,"integrity":"sha512-as6GgmDJlEluHWuIVf0wGcpXMHSN58YB+7siBY+l/Bc80ThJcvdX+oZvQKVWHX6FUnmZOoa+xC25rg2sk8ndFw==","signatures":[{"sig":"MEYCIQDoEwhIMoazTPs1cDkWnW3DEeGisG4E7YE/DG7kodxKIgIhAN3IY6RmNKggQKaFc/di+SchikrlewNI4mIh2+Uvc69R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDDwpGBnnaP+xGTz87J8pyNIpVh1lXauH33L0LQbDBxMwIhANLXPX88nedknppgRcHIrfSuLAO3/ZbaHfaUDhDBAAag","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.36.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":741346},"type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.36.3.tgz","engines":{"node":">=22.19.0"},"scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/jev-diagrams.mjs --check && node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check","check:lancet-guard":"npm --prefix packages/lancet-guard run check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"2522a520-3433-4f58-820f-a2cda56334e7"}},"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.36.3.tgz","_integrity":"sha512-as6GgmDJlEluHWuIVf0wGcpXMHSN58YB+7siBY+l/Bc80ThJcvdX+oZvQKVWHX6FUnmZOoa+xC25rg2sk8ndFw==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/specpi_0.36.3_1790827413917_0.38637558139216455","host":"s3://npm-registry-packages-npm-production"}},"0.36.4":{"pi":{"skills":["./skills"],"extensions":["./extensions"]},"_id":"specpi@0.36.4","bin":{"specpi":"scripts/specpi.mjs"},"bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"dist":{"shasum":"514139c1bf0a9f89fbcde861b0a3a08ed5851fb1","tarball":"https://registry.npmjs.org/specpi/-/specpi-0.36.4.tgz","fileCount":50,"integrity":"sha512-6YLAiOhK94bZK/EhsnG9lHlso8sOb0kgGx/x7avpBXF9eFEPx4D7UQUAioZpBZklzJFjULugIAHiVJoPRgWuHw==","signatures":[{"sig":"MEUCIAf+2hNd5qhOJmBcBFfWyc1wP2PWfap0mMabfITNGbVZAiEAqkjLVzLdvZoZ7uYKQcXEumnYoZEJnZALM4Yz5pBdGro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBczwYEWDcfr7elUDXyK8dT9IajOgB1guVwWaitBepBkAiAIrJksMguaqhZDz71AMk1ev6vlnJuUez21sI4BZCsVPg=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/specpi@0.36.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":742735},"name":"specpi","type":"module","_from":"file:/home/runner/work/SpecPi/SpecPi/dist/specpi-0.36.4.tgz","author":{"name":"Tanner Middleton"},"engines":{"node":">=22.19.0"},"license":"MIT","scripts":{"test":"node --test \"tests/*.test.mjs\"","check":"npm run format:check && npm run check:syntax && npm test && npm run check:package && npm run check:vscode","format":"prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix --rule \"@stylistic/max-statements-per-line: off\" && prettier --config prettier.config.mjs --write \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js . --fix","check:base":"node scripts/check-base-packages.mjs","check:site":"node scripts/jev-diagrams.mjs --check && node scripts/check-site.mjs","check:syntax":"node scripts/check-syntax.mjs","check:vscode":"npm --prefix vscode run check","format:check":"prettier --config prettier.config.mjs --check \"**/*.{js,mjs,ts,mts,tsx}\" && eslint --config eslint.config.js .","check:package":"node scripts/check-package.mjs","prepublishOnly":"npm run check","check:browser-qa":"npm --prefix packages/browser-qa run check","check:delegation":"npm --prefix packages/delegation run check","check:pi-package":"node scripts/check-pi-package.mjs","check:experiments":"npm --prefix packages/experiments run check","check:lancet-guard":"npm --prefix packages/lancet-guard run check"},"version":"0.36.4","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"2522a520-3433-4f58-820f-a2cda56334e7"}},"homepage":"https://tannermidd.github.io/SpecPi/","keywords":["pi-package","pi-coding-agent","agent-harness"],"_resolved":"/home/runner/work/SpecPi/SpecPi/dist/specpi-0.36.4.tgz","_integrity":"sha512-6YLAiOhK94bZK/EhsnG9lHlso8sOb0kgGx/x7avpBXF9eFEPx4D7UQUAioZpBZklzJFjULugIAHiVJoPRgWuHw==","repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"_npmVersion":"11.19.1","description":"Scope control and a human-selected harness improvement loop for Pi","directories":{},"maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"_nodeVersion":"22.19.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"10.9.1","typebox":"1.3.7","prettier":"3.9.6","playwright":"1.62.1","typescript":"6.0.3","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-tui":"0.84.4","@stylistic/eslint-plugin":"5.10.0","@typescript-eslint/parser":"8.68.0","@earendil-works/pi-coding-agent":"0.84.4"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"typebox":{"optional":true},"@earendil-works/pi-ai":{"optional":true},"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/specpi_0.36.4_1790872808295_0.09669638195724617"}}},"time":{"created":"2026-09-02T17:58:23.454Z","modified":"2026-10-01T16:40:08.778Z","0.10.0":"2026-09-02T17:58:23.805Z","0.11.2":"2026-09-05T01:24:19.937Z","0.12.0":"2026-09-05T17:58:29.751Z","0.13.0":"2026-09-05T20:32:41.162Z","0.15.0":"2026-09-06T02:50:04.471Z","0.16.0":"2026-09-06T04:16:22.578Z","0.17.0":"2026-09-06T20:42:34.984Z","0.17.1":"2026-09-07T03:52:26.867Z","0.18.0":"2026-09-07T15:04:01.238Z","0.18.1":"2026-09-07T17:59:17.446Z","0.19.0":"2026-09-08T04:39:09.076Z","0.19.1":"2026-09-08T14:02:04.356Z","0.20.0":"2026-09-10T01:53:19.382Z","0.20.1":"2026-09-10T03:56:32.029Z","0.21.0":"2026-09-14T18:41:12.769Z","0.21.1":"2026-09-14T19:43:10.604Z","0.22.0":"2026-09-14T23:38:54.881Z","0.22.1":"2026-09-15T00:24:37.299Z","0.23.0":"2026-09-15T13:07:45.641Z","0.24.0":"2026-09-16T21:08:29.221Z","0.25.0":"2026-09-17T04:29:25.249Z","0.26.0":"2026-09-17T19:29:12.806Z","0.27.0":"2026-09-19T03:46:41.651Z","0.28.0":"2026-09-19T17:53:00.680Z","0.29.0":"2026-09-20T17:29:51.564Z","0.30.0":"2026-09-22T02:14:10.986Z","0.30.1":"2026-09-22T05:10:25.271Z","0.31.0":"2026-09-23T02:42:13.770Z","0.32.0":"2026-09-24T03:43:43.858Z","0.33.0":"2026-09-24T04:09:55.780Z","0.34.0":"2026-09-24T21:50:22.790Z","0.35.0":"2026-09-27T04:49:54.801Z","0.36.0":"2026-09-27T15:07:44.206Z","0.36.1":"2026-09-28T00:56:15.346Z","0.36.2":"2026-09-29T05:27:11.579Z","0.36.3":"2026-10-01T04:03:34.022Z","0.36.4":"2026-10-01T16:40:08.438Z"},"bugs":{"url":"https://github.com/TannerMidd/SpecPi/issues"},"author":{"name":"Tanner Middleton"},"license":"MIT","homepage":"https://tannermidd.github.io/SpecPi/","keywords":["pi-package","pi-coding-agent","agent-harness"],"repository":{"url":"git+https://github.com/TannerMidd/SpecPi.git","type":"git"},"description":"Scope control and a human-selected harness improvement loop for Pi","maintainers":[{"name":"tannermidd","email":"tmiddleton@middmail.net"}],"readme":"<p align=\"center\">\n  <img src=\"https://tannermidd.github.io/SpecPi/logo.svg\" width=\"88\" alt=\"SpecPi logo\">\n</p>\n\n<h1 align=\"center\">SpecPi</h1>\n\n<p align=\"center\">A Pi harness setup, built to specification.</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/specpi\"><img src=\"https://img.shields.io/npm/v/specpi?style=flat-square&amp;color=084bdb\" alt=\"npm version\"></a>\n  <a href=\"https://github.com/TannerMidd/SpecPi/actions/workflows/ci.yml\"><img src=\"https://github.com/TannerMidd/SpecPi/actions/workflows/ci.yml/badge.svg?branch=main\" alt=\"Build status\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-084bdb?style=flat-square\" alt=\"MIT license\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://tannermidd.github.io/SpecPi/\">Website</a> · <a href=\"https://tannermidd.github.io/SpecPi/wiki/\">Documentation</a> · <a href=\"https://tannermidd.github.io/SpecPi/evaluations/\">Evaluations</a> · <a href=\"https://github.com/TannerMidd/SpecPi/releases\">Releases</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://tannermidd.github.io/SpecPi/#vscode-chat\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://tannermidd.github.io/SpecPi/media/specpi-chat-showcase-dark.png\">\n      <img src=\"https://tannermidd.github.io/SpecPi/media/specpi-chat-showcase-light.png\" width=\"1100\" alt=\"SpecPi Chat in VS Code: an open file beside the chat panel discussing a focused change.\">\n    </picture>\n  </a>\n</p>\n<p align=\"center\"><sub>SpecPi Chat · Example workspace</sub></p>\n\n---\n\nSpecPi 0.36.4 is a small starting point for the [Pi coding agent](https://pi.dev/). It is one opinionated setup for how the agent should work, not a marketplace of plugins.\n\nAt the center are two built-in extensions. **Scope control** keeps each task to the files it said it would touch. The **improvement loop** turns repeated friction into small, tested changes to the setup, instead of letting prompts and workarounds pile up. Around those are eight hand-picked packages, each locked to an exact version and checked before anything installs, plus **SpecPi Chat**, a VS Code panel for working alongside the agent.\n\nIt focuses on five things:\n\n- **Control:** clear scope, tool permissions, and lifecycle commands that ask before they change anything\n- **Accuracy:** exact version pins, checksums on state, rollback on failure, and proof over promises\n- **Improvement:** local notes become small, checked changes through `/harness-improvement`\n- **Efficiency:** delegation, persistent goals, and browser QA handled by the right tool for the job\n- **Keep talking:** long evals, builds and servers can run as background jobs, so the conversation is not stuck until they finish. The agent hears back when each one ends, and `/jobs` lists or stops them\n- **Lean default:** web access, browser QA, and delegation stay off until you need them. Turn them on for a session with `/webaccess on`, `/browser on`, and `/delegate on` — or let the agent ask when it hits the need, and answer the prompt\n\nEverything it touches is written down, versioned, and easy to undo.\n\n## A local command guard\n\nBefore the agent runs a shell command, [LANCET Nano](https://github.com/TannerMidd/LANCET-model), a 111M-parameter classifier, can check it on your own CPU. It reads Bash, PowerShell and cmd, takes about 10 ms for a typical command, needs no API key, sends nothing over the network, and costs nothing per check. Fixed rules settle the obvious cases first, blocking `rm -rf /` and passing `git status`, and the model scores the rest. A risky or uncertain verdict asks you before anything runs; `/lancet-guard mode block` blocks risky ones outright instead.\n\n| | LANCET Nano v0.4.3 |\n| --- | ---: |\n| Triage Score | 68.3 |\n| Safe commands wrongly stopped | 9.0% |\n| Cost per check | $0 |\n| Network | none |\n\nBoth figures are taken across three benchmarks, 7,911 commands in total, weighted by size: lancet-bench-2-next (1,602 risky commands and their safe look-alikes), the ShellRisk-Bench test split, and a 513-command neutral set. The [Triage Score](https://github.com/TannerMidd/LANCET-model) gives a guard a point for each risky command it asks about or blocks, and shrinks in proportion once it stops more than 10% of safe commands. The guard ships off. Run `/lancet-guard setup` in Pi once to download the model (about 109 MB, verified by SHA-256) and switch it on. [How it works, what it costs, and its limits](https://tannermidd.github.io/SpecPi/lancet/).\n\n## Measured context\n\nThis chart shows first-call context from a clean install: all eight pinned packages, the working agreement, and the skills Pi finds, in an interactive session with wishlist collection undecided. A headless session, or one with collection off, also leaves out the gap report and capability request tools. \"Enabled\" means browser QA, delegation, and web access are switched on, with no goal, scope, or improvement selection active.\n\nThe solid rows are measured by us, from the request each setup actually sends through one local test provider. That includes OpenCode, the DeepSeek Harness, and Oh My Pi, all measured as installed. The faded Codex CLI and Claude Code rows come from HarnessTax's published numbers, measured under their own setup. Treat those as a rough reference, not a head-to-head test. These are character counts. They say nothing about tokens, cost, or how well each tool does the job. The research page [breaks down the enabled setup by feature](https://tannermidd.github.io/SpecPi/research/#specpi), so you can see what each switch costs on its own.\n\n<p align=\"center\">\n  <a href=\"https://tannermidd.github.io/SpecPi/research/#specpi\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://tannermidd.github.io/SpecPi/media/context-chart-dark.svg\">\n      <img src=\"https://tannermidd.github.io/SpecPi/media/context-chart-light.svg\" width=\"880\" alt=\"Bar chart of characters sent on the first model call: Pi stock 5,521, SpecPi default 12,287, OpenCode 31,043, DeepSeek Harness 31,743, SpecPi enabled 36,935, Codex CLI 41,616, Oh My Pi 66,708, Claude Code 90,460.\">\n    </picture>\n  </a>\n</p>\n<p align=\"center\"><sub>Measured tool schemas + system/developer instructions · <code>node scripts/measure-context.mjs --chart --omp=&lt;path to Oh My Pi's cli.js&gt; --oc=&lt;path to OpenCode's binary&gt; --dsh=&lt;path to the DeepSeek Harness bin&gt;</code> · <a href=\"site/research/context-measurement.json\">Recorded measurements and package pins</a> · <a href=\"https://tannermidd.github.io/SpecPi/research/#specpi\">Method and caveats</a></sub></p>\n\nThe gap between the two SpecPi bars comes from a few separate switches, so the enabled tools are also measured group by group. For example, the fourteen browser QA tools add up to less than the four web access tools:\n\n<p align=\"center\">\n  <a href=\"https://tannermidd.github.io/SpecPi/research/#specpi\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://tannermidd.github.io/SpecPi/media/capability-chart-dark.svg\">\n      <img src=\"https://tannermidd.github.io/SpecPi/media/capability-chart-light.svg\" width=\"880\" alt=\"Bar chart of tool-schema characters each capability adds: Pi built-ins 2,896, Improvement loop 1,601, Capability request 995, Background jobs 728, Goals 1,315, Browser QA 8,234, Delegation 4,453, Web access 11,298. Browser QA, Delegation, Web access are hidden until switched on.\">\n    </picture>\n  </a>\n</p>\n<p align=\"center\"><sub>Every tool in the measured request belongs to exactly one group · Leaving all three opt-in groups hidden keeps 23,797 characters of tool schema out of every request</sub></p>\n\n## Harness evaluations\n\nThe chart above counts characters. It says nothing about what a harness costs to\nactually use, or whether it finishes the job. That is what the evals are for:\n[Terminal-Bench 2.0](https://www.tbench.ai/), the same model and the same frozen\nprice list, with only the harness changing.\n\n<!-- eval-summary -->\n\n**947 scored attempts on two benchmarks and 6 harnesses**,\nall on `deepseek-v4.1-flash`. SpecPi is the published 0.33.0 release, with the experimental Jev layer off.\n\nSWE-bench Verified, 12 tasks × 3: SpecPi solved 34/36 against Pi's 34/36\n(p = 1.00), with 2% more prompt tokens and 1% less cost per attempt.\n\nTerminal-Bench 2.0, 731 attempts across 20 tasks:\n\n| Harness | Solved | Rate | Cost/attempt | Prompt tokens | Cache hit |\n| --- | --- | --- | --- | --- | --- |\n| OpenCode | 29/39 | 0.744 | $0.0124 | 494,173 | 96.5% |\n| SpecPi | 62/77 | 0.805 | $0.0144 | 407,416 | 92.4% |\n| Pi (base) | 164/230 | 0.713 | $0.0155 | 436,214 | 92.9% |\n| DeepSeek Harness | 21/38 | 0.553 | $0.0226 | 1,126,586 | 95.4% |\n| Oh My Pi | 115/151 | 0.762 | $0.0237 | 1,108,076 | 96.5% |\n| Claude Code | 81/112 | 0.723 | $0.0273 | 670,828 | 95.4% |\n\nSpecPi and Pi ran side by side in the 24 Sep · a sitting. SpecPi solved 30/38\nagainst Pi's 25/39 (Fisher p = 0.21), sending 16% fewer prompt tokens and costing\n22% less per attempt. On `sanitize-git-repo`, with that sitting's extra attempts, SpecPi solved\n10/10 against 3/10 (p = 0.003); `fix-git` was 10/10 for both.\n\nOverall solve rate is a different matter: one sitting cannot rank harnesses here. Bare Pi, on\nunchanged software and the same thirteen tasks, spans 56-77% across 5 sittings, a wider gap than any\nmeasured between two harnesses. Pooled across sittings, SpecPi leads DeepSeek Harness (p = 0.007) and Oh My Pi leads DeepSeek Harness (p = 0.015), but pooling sets one harness's sittings against another's. Cost is recomputed from recorded tokens against a dated\nprice file, never taken from a harness's self-report.\n\n<!-- /eval-summary -->\n\nThis run is still in progress. See the results and brief method on the\n[evaluations page](https://tannermidd.github.io/SpecPi/evaluations/). The table above is regenerated\nfrom the run data by `node scripts/tb2-site.mjs`, so it cannot drift from the\npublished figures.\n\n## Install\n\nRequires Node.js 22.19+, Git, npm, and an existing Pi installation on PATH.\n\n```sh\nnpm install --global specpi@latest\nspecpi plan\nspecpi install\nspecpi doctor\n```\n\n`plan` shows what will change without modifying anything. Restart Pi after install.\n\nFull setup options, package details, and requirements: [website](https://tannermidd.github.io/SpecPi/#install).\n\n## Where things live\n\n| | |\n| --- | --- |\n| [Packages](https://tannermidd.github.io/SpecPi/#packages) | The eight pinned packages and what each provides |\n| [Scope control](https://tannermidd.github.io/SpecPi/wiki/#scope) | `/scope` commands and drift monitoring |\n| [Command guard](https://tannermidd.github.io/SpecPi/lancet/) | LANCET, the local classifier that checks shell commands before they run |\n| [Improvement loop](https://tannermidd.github.io/SpecPi/#loop) | Local wishlist, `/harness-improvement`, and retirement with evidence |\n| [SpecPi Chat](https://tannermidd.github.io/SpecPi/#vscode-chat) | VS Code frontend and VSIX install · [Chat guide](https://github.com/TannerMidd/SpecPi/blob/main/vscode/README.md) |\n| [Updating](https://tannermidd.github.io/SpecPi/#updating) | Update, uninstall, and migration notes |\n\n## Development\n\n```sh\nnpm install --ignore-scripts --omit=peer --no-package-lock\nnode --test tests/workflow-controls.test.mjs tests/workflow-controls-extension.test.mjs\nnpm run check\n```\n\nInstaller tests use disposable Pi directories — never test against a live Pi installation. Publication follows the [release procedure](NPM_RELEASE.md).\n\n[Security model](SECURITY_MODEL.md) · [Third-party components](THIRD_PARTY.md) · [Release notes](CHANGELOG.md) · [MIT License](LICENSE)\n","readmeFilename":"README.md"}