{"_id":"impulso","_rev":"33-1657512624a7dad0b0e1cdc047aa0980","name":"impulso","dist-tags":{"latest":"0.29.1"},"versions":{"0.19.1":{"name":"impulso","version":"0.19.1","keywords":["opencode","claude-code","plannotator","impulso","directspeech","rtk","plugin"],"license":"MIT","_id":"impulso@0.19.1","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"dist":{"shasum":"e06017e5930faab8d31ae7ae788f87176ae4b4f1","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.19.1.tgz","fileCount":85,"integrity":"sha512-aJZsT3pryw/r9WqWjexFx4g57axnXY7LhG6K9wwqbEwVtMm9kYQzTglo7qgkoSH1h+jT21TwmZ7CGV4C39Jo+A==","signatures":[{"sig":"MEUCIDb20DDhsw6MttdhYZSzP5YhsSE1E4p3yqtqhvxBapxNAiEAiSeBrpQjzcMpvxn13sgdzCoqN7qXe4z6KQLz0/CX4zQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19501697},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"9ef923256a30ad3b5fdc88226c166dd6335bd988","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd gate && go test ./...","bench":"node scripts/impulso-bench.cjs","doctor":"./doctor.sh","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"_npmVersion":"11.16.0","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman) + RTK. Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.19.1_1785108932210_0.7834943142588122","host":"s3://npm-registry-packages-npm-production"}},"0.20.20":{"name":"impulso","version":"0.20.20","keywords":["opencode","claude-code","plannotator","impulso","directspeech","rtk","plugin"],"license":"MIT","_id":"impulso@0.20.20","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"ae8f3b49507bf9db0dd52f1a0a8505f8a6163d0e","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.20.20.tgz","fileCount":85,"integrity":"sha512-nQWjbjb5Nv/wehgADqRHocsLa5SYvK9BRrLiHT3gpDzxZtu+UZJVig4YS3yw3UTKx3BIi+bT/Gvu96+pUnKXsQ==","signatures":[{"sig":"MEUCIHi1y8fZ02cLS/fQ92l+RoIo6g7SXqBZdQpkavsaJo3XAiEA/bLVGJ/mZH88YV4yJLtxRSaKygR824omvhfX/un5ohI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19511229},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"8a686c7575d500f7941c577bcc0c9bc4baf3f5c1","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd gate && go test ./...","bench":"node scripts/impulso-bench.cjs","doctor":"./doctor.sh","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman) + RTK. Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.20.20_1785123606578_0.23369670499716033","host":"s3://npm-registry-packages-npm-production"}},"0.20.21":{"name":"impulso","version":"0.20.21","keywords":["opencode","claude-code","plannotator","impulso","directspeech","rtk","plugin"],"license":"MIT","_id":"impulso@0.20.21","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"0433dfbb38fade4eba5bc4a813ccb99428b6a5c2","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.20.21.tgz","fileCount":85,"integrity":"sha512-tHaUkEFTPAwUdEe8USEyvCnoNaestJLk/XbKxOLzGWFjtyfPCX5PuW6h3orDdyO3vnmPg3oDEmOv5AX3iLlh0w==","signatures":[{"sig":"MEUCIGiVvjQLQPQRcmiw0et2Y0jDAg7v39oXdAM1IXmRhoI7AiEA1wo8hD2d+woW729JdLFH2IgXhSafqHhQ/w2fe2tCeYQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19511334},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"85abe65741292986d068c6fbbbe9f4c8f5a20def","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd gate && go test ./...","bench":"node scripts/impulso-bench.cjs","doctor":"./doctor.sh","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman) + RTK. Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.20.21_1785124370262_0.6747825996876604","host":"s3://npm-registry-packages-npm-production"}},"0.20.22":{"name":"impulso","version":"0.20.22","keywords":["opencode","claude-code","plannotator","impulso","directspeech","rtk","plugin"],"license":"MIT","_id":"impulso@0.20.22","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"54f52730823e123e8e44809e3e40f0061f4f8a3d","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.20.22.tgz","fileCount":85,"integrity":"sha512-jdiAurzFPEkR5VDnMCayXAbl8fy/J5ZBoA4C9gjxynS1GXdzARaYuTHfFWllb0iXJIgk5yTO14Fygd0Bl6jbZQ==","signatures":[{"sig":"MEUCIFuWF42Mvfyd3SVCDiC6q0kbzqBlBD9kSI1MHVjo+FRxAiEA82MOpcb4Sa6PQ28xUZuzJt9e1pgj/7tf1BZXB6Z43oM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19509933},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"025ccb1d49ff5fdd44e8d4c382d991172665ba85","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","doctor":"./doctor.sh","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman) + RTK. Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.20.22_1785166315081_0.32096393512691157","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"impulso","version":"0.21.0","keywords":["opencode","claude-code","plannotator","impulso","directspeech","rtk","plugin"],"license":"MIT","_id":"impulso@0.21.0","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"c6584d1a16f5516fece8d2fe8fa61fdb9d5b046b","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.21.0.tgz","fileCount":85,"integrity":"sha512-hhZlrEnV5i7Sfm2UGmLEYwM87OlTUAXKtxFwV/qp1jXossWWNxlcq5hfqkT8sA02xxvWaoIDjdW2sYeamfjI+Q==","signatures":[{"sig":"MEQCIHJdH8zG3jQJd3YNWq2RmlxslG1MjUkQfhWpYN65xm4TAiAyQAJSZhZ+W//UwNM42e9EUjhm3+C87NrjKeiByY7yXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19527230},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"4098a127fa7ee647d0bed6dbf9335b50780635a0","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","doctor":"./doctor.sh","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman) + RTK. Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.21.0_1785175178590_0.01635608704935332","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"impulso","version":"0.21.1","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.21.1","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"0905e719c1d96d2a717fb4ef9dc97e64c8ad36a0","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.21.1.tgz","fileCount":82,"integrity":"sha512-8JXVwoMdQ3t27OIGZNTAF3vqtmHgEmPIpofB4jToMZnl0qDG0GjsIUnQB/YxANLM6Lu1dj7kXSFB3H+sYRfWQA==","signatures":[{"sig":"MEUCIGYifa1v7Id094Ba+qaRC5G/47o7NojproG/qEsEir0mAiEAo2GcfjTcCgbWMWe6e+BoUkgsX3Tgsiv8FwXCc0Xksbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19516732},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"6be40dbff18c9d0864841bff5f68f42717306f81","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","doctor":"./doctor.sh","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.21.1_1785179700598_0.9609246451782016","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"impulso","version":"0.22.0","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.22.0","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"4e6910c134b6e0ab24fc41eba6b5788ff29b59d1","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.22.0.tgz","fileCount":82,"integrity":"sha512-jDMoM6GkHwx6N12cv85XhdDBs8JdLWeQBPeXMZ6DaqjU8df2ftRtqfmRm30dRlXz4Z0YtkYjGTdeSb/JMhllcg==","signatures":[{"sig":"MEQCIGwg97+LyuH3kQpYuotZ2Th/SxywsrDDXCzTcE/wp/lGAiAyaZc/07lEjlp0a1ftaruZUfqlmQNEVxgk13a+63TXBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19944888},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"390df749d64446616df4e41770513c353f0d94ca","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.22.0_1785191111167_0.6307689338786402","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"impulso","version":"0.23.0","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.23.0","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"ec56365ab9ab8d9133cb353becb00d3fc5b85642","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.23.0.tgz","fileCount":85,"integrity":"sha512-28C5E1fqMYKjmaSwM07i5LKcuXwkVauuhVb9N2JXFaJoIOlss2ITWqpxtpBOry10wJSyANoC8UHH5RDGxPStxQ==","signatures":[{"sig":"MEUCICZjpyRSADLd+PgmktDtcHj/cUEy8vQbWnlBy+trqm6hAiEAhUk372pywmGQquzvXTDIWhvsEoFfN6+6imd09901ibc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19970345},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"816b9f8d144aa83984e692cac9a18e8db580d5b1","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.23.0_1785208928033_0.04548475807080932","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"impulso","version":"0.24.0","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.24.0","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"d0e18bbd61147ab7da8d94213368848a417ce4d6","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.24.0.tgz","fileCount":86,"integrity":"sha512-7tWvne729VzuPdVKx+dXXmSJUk/MnpJb0swiWGvSqxHEFYUvBGnY+TMm13RD+hgjZoOoSg8d0wLD8kE4VHvmSw==","signatures":[{"sig":"MEUCIQC2GA8jXFlzURBwCcr5Bo9db3hBL83BcJsdiQqSP2X+WgIgUerJ5LJoMA+FwvycAv2Ir64Q/Rn9oPodrfcS4c18FX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20208072},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"d63f23b481ab807c1ed2dd6e132bb0b108da5af0","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.24.0_1785220259297_0.7456662578394171","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"impulso","version":"0.25.0","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.25.0","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"b3131a3cf49a6c74c0e12373f6c0af3e91069b61","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.25.0.tgz","fileCount":86,"integrity":"sha512-UoOCpFnQLH6sdlFEsY5NAUx5ESKQ6ct0XwHxYEKvtnMwGG3HIvvg3k0LJFqpiIANBiL9H2XjlKzyjyrhwblxvw==","signatures":[{"sig":"MEUCIQCrUmtGDZ4r+DWjwFILK2dhHiPQtSUCY8MQ5ApufJXTmAIgFjvfCMi2SgoXFfn21VObdZ8dcJ5BRcPDCBylP1Tt0OY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20208645},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"5ee09b4d80271c749bd64c751051f2d2b0f5e0f7","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.25.0_1785222340396_0.3866029298705864","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"impulso","version":"0.26.0","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.26.0","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"9416a90b42497511888e7eeb2a02cbe38eff2bcb","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.26.0.tgz","fileCount":85,"integrity":"sha512-XY52ReL5k3plkmIpOuYVs9b8wIq3EdwzQLA/orHnvXYbMZEtYyf2I+vOWwLgg8vw4aumpaVhaZKg12ZiqEbiwA==","signatures":[{"sig":"MEYCIQC7l4CsUHhiNkLqx6BNzPjXokq9YUrNvX5I3facd6Ov4AIhAJ53/fPvYtKE2Vodv4Sc97vA9/+Kx7pYIBQ4r6LS1+lh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20189562},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"3ab9fa5871c65be5870b8804de69d0bed1854ba3","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.26.0_1785268387496_0.19718672668740567","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"impulso","version":"0.27.0","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.27.0","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"2fe2dde0b0bf38c694e82b3137c1e3b63bdb5873","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.27.0.tgz","fileCount":85,"integrity":"sha512-eRlHrIguv8Ie2g3l0fGik7xPTjEeILXmGBBYFYDXxScHC7ssSAiuySYVVMY5Mym/OhvE63uIzS7xcTMoY67b7g==","signatures":[{"sig":"MEUCIQD9PQcpUGWjyGruKMP4fTlaYD+CiGuGmXhuofc3x1o+2wIgIkaKOJaV0NRn6m47ENNit/gLmQ86s4UQsVOMSb++lLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20433354},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"439fc7bf8b2f3cffd373fff72325c30fcb188deb","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.27.0_1785281028023_0.21272854805233155","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"impulso","version":"0.28.0","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.0","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"166fd765148b279ea95bfa2ee2b0deaa26ed5289","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.0.tgz","fileCount":85,"integrity":"sha512-M1yTlgq6ixA5GAVhyX/+XQiVYZb5RAWaRWN8vGJg1qGd0bZyvVUKambR96M8XAOJx0mx4cwCviOhsBBVJqTW/w==","signatures":[{"sig":"MEYCIQDgeo63+6WsSqhF6zhVjvOuT6Bawep+mpoZmwVcQPGTfwIhAJv/lXEbL1kSP1SxV4gSwd8j92ZuiRlrL9aukfDVl+z+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20817898},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"aa2ecc134fb17480a9d81582793bc19632a1f4b6","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.0_1785284251731_0.5820961722553077","host":"s3://npm-registry-packages-npm-production"}},"0.28.1":{"name":"impulso","version":"0.28.1","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.1","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"6af19ff88ecf7029c5c565b2c714daf0f512169e","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.1.tgz","fileCount":85,"integrity":"sha512-uhpopqjPwKMeUlFkxAUmAeiXxokDREcQeKkwcLZqu9NKWHduIFAT1y58rHcIHgz2ZgF1Q0buYOArHoGJ+Nia+g==","signatures":[{"sig":"MEUCIFqjNTHD6cDdmcPRsTw+yp3D269PsnT3P1H/pRWbweMRAiEA8n/bNyFFgkR042TeRzLjUsjevRQRJvr2HQ3UHvxbK3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20826898},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"c3edd4bf720f7770816fd7c0199d4ab8eb1db2ca","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.1_1785285608325_0.7342336852931917","host":"s3://npm-registry-packages-npm-production"}},"0.28.2":{"name":"impulso","version":"0.28.2","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.2","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"0fd79283e8177cf322068fab7e4e07118fbede25","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.2.tgz","fileCount":85,"integrity":"sha512-jACR0v2qtrgiiRv2anOJm9YoX2twzaTAk7YPYOtEmskPzwH9gPPW/b/enbFKt3nAy+tEBfxLhKiKWXeCKEooQw==","signatures":[{"sig":"MEQCIH9eqHMkxwR+Ws8OEze10KOgv4WGPHqTbRLcPCq1MRcsAiB/jfbQZkIz6YdqQSXUaqf/IzZl67qJzQl3spXMKrmASg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20826954},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"2be037be0ea55d56e8efcbe60a7c308219905838","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 92 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.2_1785286993429_0.4638647213049736","host":"s3://npm-registry-packages-npm-production"}},"0.28.3":{"name":"impulso","version":"0.28.3","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.3","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"dcf597093cd1b66d38a8d36b2cbc29fa3afa22db","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.3.tgz","fileCount":85,"integrity":"sha512-ooMUzeXv8w9nzpiAv7THpdPHoS/z8T7XNGEj8LoYXiYQAmmNFQvSWG8bGnyNijSROLXLnf41pEHEDg5BCT5YCQ==","signatures":[{"sig":"MEUCIA2Z6oNClhVWTazFrcr3Sqb48pZ7YfrvJvRRMxwt4cJzAiEAgh43HIvyXR+g1glYrfdwY00pdc3Trj2oXKxSb2dHR8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20828762},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"097797d5a68374a8bcd664fa2e2fc14afe332df6","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.3_1785296266383_0.631759526580119","host":"s3://npm-registry-packages-npm-production"}},"0.28.4":{"name":"impulso","version":"0.28.4","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.4","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"252f2801aec24b9ae09e0b1e6e9e809ebf447aab","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.4.tgz","fileCount":85,"integrity":"sha512-Uqk6elVH0wgVPvt5XsAb2Ht/wDdMvYjVg/BYJa0S0P9k5t2BLXFPqpQ+4S5hLDi0HtWDGigt0LtIb/34BzYYlw==","signatures":[{"sig":"MEUCIQDUOE1YnNOy6IYtCq1KvLUfn0DWjB0livQcjEgxNcHOcQIgZLWuSBawOO9rStnd09cOx1KVOlN4TPfjksmVIpyuuD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20828802},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"3c1ae2742a09f2140f7971575ebf9264f4acc730","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.4_1785305513909_0.9446215910383993","host":"s3://npm-registry-packages-npm-production"}},"0.28.5":{"name":"impulso","version":"0.28.5","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.5","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"4f130c07fc5e69231aa3d85f29fff165284a2038","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.5.tgz","fileCount":85,"integrity":"sha512-viSdPp2ghoL5SJGr341bcK5j+JWvdLDT247od+cpMKMXhkSWBgJ/AFXnQpm5dva/6s5TTguZld13/nkaJtSb5A==","signatures":[{"sig":"MEQCIExl87ImUPExSJg83TKN8kp9g5haFGNyESOy0VSMVVV9AiB8uR+DgbecgqH0ku91Jjxsw5efvXBcKBiqFcUh9JXz9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20834414},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"cc7f7964ea8e2847e3b154498690760708821259","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.5_1785361927411_0.5737272927527264","host":"s3://npm-registry-packages-npm-production"}},"0.28.6":{"name":"impulso","version":"0.28.6","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.6","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"a175f0da1c5b1fed263b63b6b4cd7353ebea84ad","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.6.tgz","fileCount":85,"integrity":"sha512-Pr0VXs34RTTp/rSjH/IvmBwXwWtYau5NWJpf5SzzID4LcgKOEdaJol4ODjm1vCax2B4RFfYiLDPpID3Z/QMwKg==","signatures":[{"sig":"MEUCIDEjt+CROeXqz4ar4PZm+xJ2nIDIFIjo+GYUQIQioz6zAiEAvH4QxDLEm2GzHc2d3QHCV9bqvEWQDRqc/sto36RyaZ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20859820},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"fcac4545a6928b867c51fb6be55ed7acbf369c9d","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.6_1785368204494_0.536741566967027","host":"s3://npm-registry-packages-npm-production"}},"0.28.7":{"name":"impulso","version":"0.28.7","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.7","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"650542e8209f1fd7aa7518233e5042ed089e8707","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.7.tgz","fileCount":85,"integrity":"sha512-Xch20rpXjNvuUv952hWKH/LyCThtQ5hTCM7X5obGzggEUkQQzlU5N/p//O17vkoXbJV7KJfB8zFRnb6XDl6Q7g==","signatures":[{"sig":"MEYCIQC9b++dmgHpH46uaIQBqeu2+JQ5Y9VnWVSQxCd5QwG8YAIhAO3W1cX6+o5TdeWz5wRCd8DfcTpjcJ5pR3g+PBMGcI72","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21092866},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"0e0e171174554bd794646831d5ccc976cb72f5a6","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.7_1785375446955_0.5978560813841778","host":"s3://npm-registry-packages-npm-production"}},"0.28.8":{"name":"impulso","version":"0.28.8","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.8","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"d89ad3eee74cd175768b446ec399bb7f438083ab","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.8.tgz","fileCount":85,"integrity":"sha512-vFBHalJHM74eEGURH70FtJeUH6YHvV4GNmLVzTg+dwvsxriGWDfxhNB69dB7hZXS6TsWyH45WINqL8OneIJPWw==","signatures":[{"sig":"MEQCIGdmVNbCJ1Y+FgRO/5SEWXDW6gDton1HeQz3IBOSfMS6AiAbax7PF16NfPnbr/nC+RFKY5QNeoUp8V5/Zf62CisWbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21093268},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"a24296fb5773b35385f5502091d51a702dda7398","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands && git add commands/","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.8_1785383997009_0.30898284507408547","host":"s3://npm-registry-packages-npm-production"}},"0.28.9":{"name":"impulso","version":"0.28.9","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.9","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"dbe4c8daa6b360c35d74857963cc7a15823378ec","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.9.tgz","fileCount":85,"integrity":"sha512-NxjCAHC59ocD+P1FJGcG153nMhS6qoxuOwChUFf1aCJLAfeBASdczoNDXpt6UL0whLMjZczkhvKySSWT9VPXVQ==","signatures":[{"sig":"MEUCIDF2EkT33dNUTSvi9JcGypvKIieoSkvmjlQSKHv4tGrsAiEA/xYDygIYb27vTe87CX5oL7wLLEpPCLloAThcobQV5VA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22710089},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"a4e88d852d42dbdbfddbd4920c436ea074055a70","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.1","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.9_1785547569540_0.2278162965198638","host":"s3://npm-registry-packages-npm-production"}},"0.28.10":{"name":"impulso","version":"0.28.10","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.10","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"000023b7ad9164bef0d729c44d3b0de8cbd6126b","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.10.tgz","fileCount":85,"integrity":"sha512-HpeS6fl1/4H3AHgPICsFVu7bLE/9La13gBVW19IWCvdOoe3YhgX2+tzbQpyJcqEq0sWpzTdU9pxlpl9LnREHaQ==","signatures":[{"sig":"MEUCIFilez5jbK/b2cEkSNywN3Jkurov6Decb9dQ9dcB2rQEAiEAur8Us5f/b1gpBPPAPffATkCTew3X/wUw+4Q6qfKqV3A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22737936},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"8020ddec69264eb74aac19bf077c81db434ec9c2","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.1","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.10_1785559149530_0.7870108421194051","host":"s3://npm-registry-packages-npm-production"}},"0.28.11":{"name":"impulso","version":"0.28.11","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.11","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"2f84ec3a5c528e3247dcb4a64115542c070d48ff","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.11.tgz","fileCount":85,"integrity":"sha512-99V0wo8zakZv7R3PQ/qvMJW4UYsyFIOC7CpaIloW3sZWdwO7tzsGbtqs5rsYvuHn4TilvxvbMCCBW14dCJwBHA==","signatures":[{"sig":"MEUCIQDNEIocY8rrdah8gWGf8a1K4IJSIuyXb0Af9Ch9yydV9wIgYF6n/VEZK8D20yEuBK0GT/GuQsuzDGUiWYe3cMfVpZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22747960},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"0e50ffd39ee575406cfd13a36cca83cabb0509d2","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.1","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.11_1785615814206_0.020328086737180895","host":"s3://npm-registry-packages-npm-production"}},"0.28.12":{"name":"impulso","version":"0.28.12","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.12","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"ec982d8124cc779fa4c5b3d1ece5c951121c01a2","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.12.tgz","fileCount":85,"integrity":"sha512-sSPmoKAADCxA5hGSl5rKV85u/8EIGX2V95cropfiK3zoKXWuO+8UfVpB9n4f9fwQVsR8ABtO9DKForo/HQ6Leg==","signatures":[{"sig":"MEUCIDE/5FKBzHdMWXlKJtG6rkjqwCaj9+wHRN31P7NM84JpAiEA/7qEk5Rt+3ox+4XGANmPvxwX98NuGfW8HVzcvYwXHoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22858566},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"66a37e94f56b12b99bb0e075272019066b5e9d0a","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.1","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.12_1785633838759_0.289654672116783","host":"s3://npm-registry-packages-npm-production"}},"0.28.13":{"name":"impulso","version":"0.28.13","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.13","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"9c694f171f2d62373af26967ee054df14048ad47","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.13.tgz","fileCount":85,"integrity":"sha512-zOroRf5+QIhSSzoNZFSUImc8kPI55V9qq+KvWE5ldS7ECzbe+Wd2GcCaoA62vs5PxSDwTeQ1QEs8qhcVIaxr7Q==","signatures":[{"sig":"MEQCIGjVYskKrkiHc4HNmFzPNn4KuTiBK0oboNWvbI//V+7rAiBYdcm/+Lj1U1JbUFy7x1w2HWe4aVdFd/iqEmJ3SCPNwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22859721},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"6aae81954e561e69b450ea3bde22a69805e4ebb6","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.1","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.13_1785640437483_0.2536051077720456","host":"s3://npm-registry-packages-npm-production"}},"0.28.14":{"name":"impulso","version":"0.28.14","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.14","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"a37baab02dcf8512bfd7b6bafe15765d5c5d66cd","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.14.tgz","fileCount":85,"integrity":"sha512-A6NcimXz3p7deuE6fC6MTfmvUqvjj8iyQksexqlDlzk2g7F/iIL7DwTYt5MMxKZwH7RYPSOlMVbIPM/Nwk6uVQ==","signatures":[{"sig":"MEUCIQCSzqPKS6yHwpAylTjghCe4O5IfXaDm0fBk1j6gCGA73AIgSiVvptlGouPwbE4OB4NpFeB3NSulTf7GtZAIiFeidqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22862945},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"18536cccf4d5775c27dac6016150fd34be2c72f4","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.1","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.14_1785642092048_0.3430914117422672","host":"s3://npm-registry-packages-npm-production"}},"0.28.15":{"name":"impulso","version":"0.28.15","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.15","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"f1dff7245b28a7632415d5c00efdc02f19fea8c6","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.15.tgz","fileCount":85,"integrity":"sha512-FinTqYwItxeEQ52aCZMFO/uQsRphGC5GycTgUPjZg/YeEHIg8MZD6ABrTPkPgQNKHTuL8eVPfinY4MvYMVv1Qw==","signatures":[{"sig":"MEYCIQC/qS9/T4j/PGc4wXrVZvbfXTNw7xG1YdplgAkvb+Fq3AIhAIlUMEEGyHhs8dfTVtWZ0bVeJKT+m7DpPgwlhaoaEB8j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22878129},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"0cebc06e77bd9465d8fe9c70af0754e423569fdf","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.1","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.15_1785701901469_0.1866682716117145","host":"s3://npm-registry-packages-npm-production"}},"0.28.16":{"name":"impulso","version":"0.28.16","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.16","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"1cf54b536b29f779c01ea1d37a0bc69d7cbec0f1","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.16.tgz","fileCount":85,"integrity":"sha512-F22b4OLZOUWnesEgHoAN85VswKdIoExfRWv/bYh8bmjcXsxwCSzKHtE3p0I3ehHtFCFa9j4TKrPbpqNlCCIghA==","signatures":[{"sig":"MEUCIQC5WQVfMEVSZeDvUWsnXm9s+PveqZv/nprGOy2unA8PsgIgIDGwePTWZclmX5ydYfC3tUa2gcqN6JbLzoYGuvoZ904=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22955730},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"cca4c1afa5a53183825c08cc0174dd8868562987","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.1","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.16_1785705989294_0.04499073869280901","host":"s3://npm-registry-packages-npm-production"}},"0.28.17":{"name":"impulso","version":"0.28.17","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.17","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"deec785a6dba18deee649f541b67cabaf3955480","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.17.tgz","fileCount":85,"integrity":"sha512-zztBkQ8eiCzH7jWDs10e5YQJuSe58iQTT4S1UNny4HOGJ15Jr1HnjFc9fMBv13xofyZZOn1D0yogrUHwp334TA==","signatures":[{"sig":"MEYCIQCA9y3Qbi5o8+Vj+/ihyt4bsi9shdy4akuvE2HNd8ggKQIhAP4iCXEOC+jOYbzTP+aDxjpt0lJIozDPST0MTbhcMgZW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22960434},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"86fe266a31151dbdee8cc10f3a3670e04e9bd871","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.18.1","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.17_1785768912569_0.5853613308997874","host":"s3://npm-registry-packages-npm-production"}},"0.28.18":{"name":"impulso","version":"0.28.18","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.28.18","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"309ea18f91c1f25142a9f66e6c4e7df2a382c1f3","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.28.18.tgz","fileCount":85,"integrity":"sha512-5P4g+c6hHAED2jBob2BqAgApA4gMWotzQ+VVVnQNWdKSS0tI0tcJL/44sa4ZFURDjE+Z7CNe1N4PZHoyD1KJ3g==","signatures":[{"sig":"MEQCIDcce7umIuFOWiumMm1lJbp2mUfMHjInr2L6sFcVimHxAiAr7FiozkrIdKSZvxd4wnV5cgnMkldyhOKVLr7GurnXdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23154612},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"93893fa0406449e57cca0ed924f470f55edfdfc5","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.19.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.28.18_1785876196601_0.15757943088913784","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"impulso","version":"0.29.0","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","_id":"impulso@0.29.0","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"homepage":"https://github.com/alexandrekm/Impulso#readme","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"dist":{"shasum":"e3036c2a3667e88b1d4e5fcfc96e6782ec6f7fa1","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.29.0.tgz","fileCount":85,"integrity":"sha512-Gvwva7B0/KyvqtracLVUpHOWQmzW6RLI/t4qnjFzY2bYVUBD13YJ5LwU4P6EfhwtuB96tN6SJtRv2g7Tf4AzUA==","signatures":[{"sig":"MEUCIQD5znFbZ+Yr3xzIbJN8YGF5OSHi2FIZkmVAeTLbbm329gIgNhKbBH9m7oxxMOYZI3pBUcX2n5YJAt+thmpKxQ2fJKQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23600120},"main":"harnesses/opencode/plugin.js","type":"module","gitHead":"3a345f501c95be55a280a2112d709243abcab8c3","scripts":{"lint":"eslint shared/ harnesses/","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","bench":"node scripts/impulso-bench.cjs","format":"prettier --write .","prepare":"husky || true","release":"semantic-release","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","check:hooks":"node scripts/check-hooks-parity.cjs","postinstall":"node scripts/install-hub.js","sync:agents":"node scripts/sync-agents.cjs","format:check":"prettier --check .","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","update:claude":"./update.sh claude","check:canaries":"node scripts/check-canaries.cjs","install:claude":"harnesses/claude/install.sh","update:opencode":"./update.sh opencode","install:opencode":"harnesses/opencode/install.sh","uninstall:claude":"harnesses/claude/uninstall.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh"},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"repository":{"url":"git+https://github.com/alexandrekm/Impulso.git","type":"git"},"_npmVersion":"10.9.8","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","directories":{},"lint-staged":{"skills/*/SKILL.md":"npm run sync:commands","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write"},"_nodeVersion":"24.19.0","dependencies":{"@opencode-ai/plugin":"^1.17.14"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"c8":"^12.0.0","husky":"^9.1.7","eslint":"^9.39.4","globals":"^17.7.0","prettier":"^3.9.4","lint-staged":"^17.2.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/exec":"^6.0.3","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/impulso_0.29.0_1785898910386_0.4732720799400436","host":"s3://npm-registry-packages-npm-production"}},"0.29.1":{"name":"impulso","version":"0.29.1","description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","type":"module","main":"harnesses/opencode/plugin.js","publishConfig":{"access":"public","provenance":false,"registry":"https://registry.npmjs.org/"},"repository":{"type":"git","url":"git+https://github.com/alexandrekm/Impulso.git"},"scripts":{"postinstall":"node scripts/install-hub.js","install:opencode":"harnesses/opencode/install.sh","install:claude":"harnesses/claude/install.sh","uninstall:opencode":"harnesses/opencode/uninstall.sh","uninstall:claude":"harnesses/claude/uninstall.sh","sync:commands":"node harnesses/opencode/sync-commands.js && prettier --write commands/","sync:agents":"node scripts/sync-agents.cjs","check:canaries":"node scripts/check-canaries.cjs","check:hooks":"node scripts/check-hooks-parity.cjs","test":"node shared/tests.cjs && node shared/repository-tests.cjs && node harnesses/claude/tests.cjs && node harnesses/opencode/tests.js && node scripts/impulso-bench.test.cjs && cd hub && go test ./...","coverage":"c8 --check-coverage --lines 90 --functions 80 --branches 68 --reporter=text --reporter=text-summary npm test","lint":"eslint shared/ harnesses/","format":"prettier --write .","format:check":"prettier --check .","bench":"node scripts/impulso-bench.cjs","release":"semantic-release","update:opencode":"./update.sh opencode","update:claude":"./update.sh claude","prepare":"husky || true"},"dependencies":{"@opencode-ai/plugin":"^1.17.14"},"devDependencies":{"@semantic-release/changelog":"^6.0.3","@semantic-release/exec":"^6.0.3","@semantic-release/git":"^10.0.1","c8":"^12.0.0","eslint":"^9.39.4","globals":"^17.7.0","husky":"^9.1.7","lint-staged":"^17.2.0","prettier":"^3.9.4","semantic-release":"^24.2.9"},"keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"license":"MIT","lint-staged":{"*.{js,cjs,jsx,ts,tsx,json,jsonc,md,yml,yaml,css,html}":"prettier --write","shared/**/*.{js,cjs}":"eslint --fix","harnesses/**/*.{js,cjs}":"eslint --fix","skills/*/SKILL.md":"npm run sync:commands"},"_id":"impulso@0.29.1","gitHead":"acf70ecfda363d5309d0638067bfccd23eb67ad1","bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"homepage":"https://github.com/alexandrekm/Impulso#readme","_nodeVersion":"24.19.0","_npmVersion":"10.9.8","dist":{"integrity":"sha512-Q3SghaUxylZfCj2eARni4u2wv8Lza+u7l8Izvt+E3DNFmllAD1XbOBon8HQjJT4opJeCYMJ+zIkkKpAIfOUXFw==","shasum":"5fe382824bec81a45151c6126fff8155942c49c1","tarball":"https://registry.npmjs.org/impulso/-/impulso-0.29.1.tgz","fileCount":85,"unpackedSize":23652364,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDpTDCmsN0phf4ashiw69RpJV11drWdD+rKFozlFZP/jwIhAM1K5bO8NCMu9wErlP0YASOzPszt9xTjkRJPoSirD3PY"}]},"_npmUser":{"name":"alexandrekm","email":"npm@alexkm.me"},"directories":{},"maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/impulso_0.29.1_1785910456030_0.23162373588537855"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-26T23:35:32.110Z","modified":"2026-08-05T06:14:16.554Z","0.19.1":"2026-07-26T23:35:32.480Z","0.20.20":"2026-07-27T03:40:06.896Z","0.20.21":"2026-07-27T03:52:50.562Z","0.20.22":"2026-07-27T15:31:55.394Z","0.21.0":"2026-07-27T17:59:38.962Z","0.21.1":"2026-07-27T19:15:00.950Z","0.22.0":"2026-07-27T22:25:11.506Z","0.23.0":"2026-07-28T03:22:08.370Z","0.24.0":"2026-07-28T06:30:59.582Z","0.25.0":"2026-07-28T07:05:40.696Z","0.26.0":"2026-07-28T19:53:07.839Z","0.27.0":"2026-07-28T23:23:48.366Z","0.28.0":"2026-07-29T00:17:32.048Z","0.28.1":"2026-07-29T00:40:08.706Z","0.28.2":"2026-07-29T01:03:13.790Z","0.28.3":"2026-07-29T03:37:46.688Z","0.28.4":"2026-07-29T06:11:54.253Z","0.28.5":"2026-07-29T21:52:07.727Z","0.28.6":"2026-07-29T23:36:44.773Z","0.28.7":"2026-07-30T01:37:27.347Z","0.28.8":"2026-07-30T03:59:57.296Z","0.28.9":"2026-08-01T01:26:09.959Z","0.28.10":"2026-08-01T04:39:09.880Z","0.28.11":"2026-08-01T20:23:34.539Z","0.28.12":"2026-08-02T01:23:59.080Z","0.28.13":"2026-08-02T03:13:57.839Z","0.28.14":"2026-08-02T03:41:32.351Z","0.28.15":"2026-08-02T20:18:21.924Z","0.28.16":"2026-08-02T21:26:29.607Z","0.28.17":"2026-08-03T14:55:12.872Z","0.28.18":"2026-08-04T20:43:17.025Z","0.29.0":"2026-08-05T03:01:50.839Z","0.29.1":"2026-08-05T06:14:16.387Z"},"bugs":{"url":"https://github.com/alexandrekm/Impulso/issues"},"license":"MIT","homepage":"https://github.com/alexandrekm/Impulso#readme","keywords":["opencode","claude-code","plannotator","impulso","directspeech","plugin"],"repository":{"type":"git","url":"git+https://github.com/alexandrekm/Impulso.git"},"description":"Impulso — plugin bundle for opencode and Claude Code: Plannotator skills + Impulso-DirectSpeech (rethemed ex-Caveman). Harness-neutral repo; per-harness glue under harnesses/.","maintainers":[{"name":"alexandrekm","email":"npm@alexkm.me"}],"readme":"# Impulso\n\nPlugin bundle for opencode + Claude Code: **Plannotator** (vendored skills) +\n**Impulso-DirectSpeech** (terse communication mode).\n\nHarness-neutral repo. Per-harness glue under `harnesses/`.\n\n## Contents\n\n| Piece                | What                                                                                                                                                                                                     |\n| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Plannotator          | 3 vendored skills (annotate/last/review) + 3 commands. Skills invoke the `plannotator` CLI binary directly (user-installed); no npm plugin.                                                              |\n| Impulso-DirectSpeech | Terse communication mode — **always active, enforced by the harness**. Ruleset in `shared/AGENTS.md` + per-turn reinforcement hook on each harness. No toggle. 3 auxiliary skills (compress/stats/help). |\n\n## Install routes\n\nFour ways in — pick **one per profile** (combining the Claude plugin with the\nClaude installer duplicates hooks). The plugin route is the recommended default\nfor both harnesses.\n\n| Route                                                     | Harness  | You get                                                              |\n| --------------------------------------------------------- | -------- | -------------------------------------------------------------------- |\n| **Claude Code plugin (marketplace, recommended)**         | claude   | hooks + skills + commands + tokensave MCP, versioned, auto-updatable |\n| `harnesses/claude/install.sh`                             | claude   | same + ruleset wired into CLAUDE.md; merge-safe into `~/.claude`     |\n| Self-boot (`run_here_claude.sh`)                          | claude   | everything, isolated to this repo — dev/testing                      |\n| **opencode plugin (recommended)** / installer / self-boot | opencode | plugin composes everything; see below                                |\n\n## Install — Claude Code plugin (marketplace, recommended)\n\nInside any claude session:\n\n```\n/plugin marketplace add alexandrekm/Impulso\n/plugin install impulso@impulso\n```\n\nLoads the hooks (preflight, DirectSpeech reinforcement — via\n`${CLAUDE_PLUGIN_ROOT}`), all skills/commands, and the tokensave MCP server.\nUpdate later with `/plugin marketplace update impulso`.\n\nNot covered by the plugin (Claude Code plugins can't ship memory files): the\nfull ruleset in `shared/AGENTS.md`. DirectSpeech still enforces per turn via the\nhook; for the complete ruleset add an import line to your `~/.claude/CLAUDE.md`\npointing at a checked-out copy, or use the installer route instead.\n\nRequires `tokensave` on PATH — the preflight hook blocks prompts otherwise\n(that's the point).\n\n## Install — opencode plugin (recommended)\n\nInstall versioned package from npm:\n\n```bash\nnpm install impulso@latest\n```\n\nPinned package version:\n\n```bash\nnpm install impulso@0.19.1\n```\n\nOr add one entry to your opencode config:\n\n```jsonc\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"plugin\": [\"impulso@git+https://github.com/alexandrekm/Impulso.git\"],\n}\n```\n\nRestart opencode (clear cache first):\n\n```bash\nrm -rf ~/.cache/opencode/node_modules/impulso\npkill -f opencode\nopencode\n```\n\nThe single plugin entry internally composes DirectSpeech + bundled skills and\ncommands. Plannotator skills invoke the user-installed `plannotator` binary\ndirectly — no npm plugin dependency.\n\n### Update\n\nopencode caches git+https plugins locally and won't refetch on its own. Pull the\nlatest revision with the same clear-cache-and-restart steps shown above:\n\n```bash\nrm -rf ~/.cache/opencode/node_modules/impulso\npkill -f opencode\nopencode\n```\n\nIf pinned to a tag or commit, bump it in your config first, then run the same\ncache-clear + restart.\n\n### Pin a version\n\n```jsonc\n\"plugin\": [\"impulso@git+https://github.com/alexandrekm/Impulso.git#v0.1.0\"]\n```\n\n### Install from a local clone\n\n```jsonc\n\"plugin\": [\"impulso@git+file:///abs/path/to/hip-liger\"]\n```\n\nThe `file://` URL must be an **absolute path** with three slashes\n(`file:///abs/...`) and the directory must be a git repo (have `.git/`).\n\n---\n\n## Quick start — target repo directly (no install)\n\nPoint `XDG_CONFIG_HOME` at the repo root:\n\n```bash\ncd /path/to/impulso\nXDG_CONFIG_HOME=$(pwd) opencode\n```\n\nOr use the convenience wrapper:\n\n```bash\n./run_here.sh\n```\n\n> **Prerequisite:** the `plannotator` binary must be on your `PATH` for the\n> Plannotator skills to launch the annotation UI. Install it separately (not\n> bundled with this repo).\n\n## Quick start — Claude Code\n\nPoint `CLAUDE_CONFIG_DIR` at the repo's bundled `claude/` config dir — no\ninstall step, no separate profile dir. Skills and commands resolve via symlinks\ninside `claude/`; hooks resolve via `$CLAUDE_CONFIG_DIR` shell expansion in\n`settings.json`:\n\n```bash\ncd /path/to/impulso\nCLAUDE_CONFIG_DIR=$(pwd)/claude claude\n```\n\nOr use the convenience wrapper:\n\n```bash\n./run_here_claude.sh\n```\n\nFor a permanent isolated install that leaves your main `~/.claude/` untouched:\n\n```bash\n./harnesses/claude/install.sh\nCLAUDE_CONFIG_DIR=~/.config/impulso-profile/claude claude\n```\n\nTo install into `~/.claude/` directly (shared with your normal Claude Code\nconfig): `IMPULSO_CLAUDE_PROFILE=\"$HOME/.claude\" ./harnesses/claude/install.sh`\n\nSee [`harnesses/claude/README.md`](harnesses/claude/README.md) for Plannotator\nupstream plugin setup.\n\n## Install — isolated profiles\n\nFor permanent installs that leave your main config dirs untouched:\n\n```bash\n./harnesses/opencode/install.sh\nXDG_CONFIG_HOME=~/.config/impulso-profile opencode\n\n./harnesses/claude/install.sh\nCLAUDE_CONFIG_DIR=~/.config/impulso-profile/claude claude\n```\n\nThe tokensave MCP server additionally needs a per-project index — run\n`tokensave init` once in each repo you work in (`.tokensave/` is gitignored\nglobally by the installer).\n\n## Usage — everything in one place\n\n### Daily use\n\nDirectSpeech is always on — nothing to activate, no off-switch. tokensave MCP\ntools are available once `tokensave init` has been run in the project.\n\n| Slash command                            | What it does                                        |\n| ---------------------------------------- | --------------------------------------------------- |\n| `/plannotator-annotate <file\\|url\\|dir>` | browser annotation UI, feedback returned to session |\n| `/plannotator-last`                      | annotate the latest assistant message               |\n| `/plannotator-review [PR URL]`           | browser code review of worktree or PR               |\n| `/impulso-directspeech-compress <file>`  | compress a .md file to terse prose (~46% tokens)    |\n| `/impulso-directspeech-stats`            | token-savings stats                                 |\n| `/impulso-directspeech-help`             | reference card                                      |\n\nPlannotator commands need the `plannotator` binary:\n`curl -fsSL https://plannotator.ai/install.sh | bash`\n\n### Per-project setup\n\n```bash\ntokensave init        # build the tokensave index (once per repo)\n```\n\n### Maintenance\n\nWhen a legacy planner bootstrap task 0 is recovered during a plan amendment,\ninspect it with `impulso-hub status --json`. The `legacyTaskRecoveries` array is\nthe audit history; human status reports its count. Automatic recovery is\nintentionally narrow. If criteria are rejected or ambiguous, preserve\n`state.json`, review task and dispatch provenance, and remediate the live entry\nmanually before retrying—never discard the archive.\n\n```bash\nimpulso-hub doctor                   # health check: binaries, symlinks, configs, MCP\n./harnesses/claude/uninstall.sh      # reverse the claude install (targeted, safe)\n./harnesses/opencode/uninstall.sh    # remove the opencode profile\n```\n\n### Development (this repo)\n\n```bash\nnpm test                                  # all unit suites\nnpm run lint && npm run format:check\nnpm run sync:commands                     # regen commands/ after editing skills/\n./harnesses/opencode/integration-tests.sh # live boot tests; model resolved via\n                                          # IMPULSO_TEST_MODEL > bedrock auth > CLI_PROXY_URL\nclaude plugin validate .                  # check plugin/marketplace manifests\n```\n\nEditing rules: skills are the source — never edit `commands/` by hand (CI drift\ncheck will fail); the ruleset lives only in `shared/AGENTS.md` (`claude/` and\n`opencode/` symlink it); claude hooks live in `harnesses/claude/hooks/` and are\nreferenced from both `claude/settings.json` (self-boot/installer) and\n`hooks/hooks.json` (plugin).\n\n## Agent orchestration\n\nSee [docs/DETAILS.md](docs/DETAILS.md) for a full pipeline visual reference.\n\nMulti-agent pipeline (orchestrator → specialist agents) on both harnesses, from\na single source of truth in `shared/orchestration-config.cjs`.\n\n### Roster\n\n| Agent                | Role                                             | CC default     | opencode default           |\n| -------------------- | ------------------------------------------------ | -------------- | -------------------------- |\n| ImpulsoOrchestrator  | Routes tasks to specialist agents; no file edits | session (null) | session (null)             |\n| scout                | Read-only recon; returns path:line refs          | haiku          | `llm/scout`                |\n| planner              | Drafts spec.md / plan.md                         | opus           | `llm/planner`              |\n| implementer          | Code, tests, refactors                           | sonnet         | `llm/implementer`          |\n| implementer-frontend | UI, CSS, component trees                         | sonnet         | `llm/implementer-frontend` |\n| implementer-infra    | Terraform, K8s, CI/CD                            | sonnet         | `llm/implementer-infra`    |\n| reviewer             | Code review (task-level and branch-level)        | opus           | `llm/reviewer`             |\n| debugger             | Root-cause analysis, regression test, fix        | sonnet         | `llm/debugger`             |\n| shipper              | Commits, push, PR                                | haiku          | `llm/shipper`              |\n| generalist           | Catch-all; prefer specialists when type is known | sonnet         | `llm/generalist`           |\n\n### Pipeline\n\nKey orchestration behaviors:\n\n- **Route self-check:** Estimate blast radius before committing to a route.\n  Prefer `small` for config-only / ≤~3-file / unambiguous changes; propose a\n  downgrade when the route feels heavier than the diff.\n- **Brainstorm:** Batch all independent questions in one round (sequential only\n  for dependent decisions). Any post-plan design change restarts the brainstorm\n  cycle — no mid-pipeline pivots.\n- **Spec:** Confirmed in chat with the user — no Plannotator gate at this phase.\n  Plannotator gates remain at Plan and the final branch/code review.\n- **Parallel dispatch:** Plan tasks carry a `parallel-safe: yes|no` field. The\n  orchestrator fans out `parallel-safe: yes` tasks concurrently (edit-only\n  implementers; orchestrator owns gate state + commits); `parallel-safe: no`\n  tasks run sequentially.\n- **Artifact amendments:** User-confirmed revisions use\n  `impulso-hub amend start (--spec|--plan|--spec --plan) --approved-by <user|orchestrator> --reason <text>`\n  and finish with `impulso-hub amend finish`; active amendments are exclusive,\n  selected gates are revision-bound, and finish restores the affected workflow\n  without `advance`. See the canonical skills and regenerated `commands/` files.\n- **Command discovery:** Edit `skills/<name>/SKILL.md`, then run\n  `npm run sync:commands`; generated command files must remain canonical-parity\n  copies and are not edited by hand.\n\n### Override — `.impulso/models.json`\n\nLadder (highest wins): `<repo>/.impulso/models.json` >\n`~/.impulso/models.json` > shipped defaults.\n\nThe file is **harness-partitioned**: top-level keys must be `claude` and/or\n`opencode`. Flat keys (e.g. `\"planner\": \"opus\"`) are rejected with a\nmigration-hint error. A file may carry only one block; the absent block\ncontributes no overrides.\n\nEach block maps an agent key (roster name) to a model string or\n`{ \"model\", \"effort\" }` object; fields merge per-key down the ladder, so an\neffort-only override keeps the lower-rung model. Unknown keys or bad JSON = hard\nfail, no silent fallback.\n\n```json\n{\n  \"claude\": { \"planner\": \"opus\", \"reviewer\": \"opus\" },\n  \"opencode\": { \"planner\": \"llm/deep\", \"implementer\": { \"effort\": \"xhigh\" } }\n}\n```\n\nopencode values are **pass-through strings** — either a logical alias\n(`llm/deep`) or a concrete provider model. Impulso does not resolve or validate\nthem; they replace the shipped `llm/<key>` default verbatim.\n\n`effort` inside a `claude` block is a **hard error** — Claude Code effort comes\nfrom `agents/<name>.md` frontmatter, not `models.json`. Place effort overrides\nin the `opencode` block only.\n\n### opencode aliases (BYO-config required)\n\nopencode ships logical aliases, not concrete model IDs. Every agent in the\n`opencode` block resolves through an `llm/<key>` alias that must be mapped in\nyour opencode provider config — Impulso provides no fallback. An undefined alias\nfails at dispatch. `impulso-hub doctor` warns when aliases are active (spec §7).\n\n| Agent                | Shipped alias              |\n| -------------------- | -------------------------- |\n| scout                | `llm/scout`                |\n| scout-writer         | `llm/scout-writer`         |\n| planner              | `llm/planner`              |\n| implementer          | `llm/implementer`          |\n| implementer-frontend | `llm/implementer-frontend` |\n| implementer-infra    | `llm/implementer-infra`    |\n| reviewer             | `llm/reviewer`             |\n| debugger             | `llm/debugger`             |\n| shipper              | `llm/shipper`              |\n| generalist           | `llm/generalist`           |\n\nTo wire up aliases, define each `llm/<key>` entry in your opencode provider\nconfig (exact syntax depends on your provider plugin). Alternatively, override\nthe `opencode` block in `.impulso/models.json` with concrete model IDs — that\nbypasses the alias layer entirely.\n\n### Inspection\n\n```bash\nimpulso-hub models                              # full resolved map (claude, default)\nimpulso-hub models --agent reviewer             # single agent\nimpulso-hub models --harness opencode           # opencode alias map\n```\n\n### Telematics\n\nEnabled Impulso telemetry writes grouped session logs under\n`~/.impulso/logs/sessions/<session-id>/`. Each session directory contains a\n`manifest.json` with lifecycle metadata, Git context, and child process records,\nplus per-PID `events.ndjson` files. All storage is read-only to the CLI — no\nmutation, migration, or legacy-log impact.\n\n```bash\n# list all sessions (human rows)\nimpulso-hub telematics sessions\n\n# list all sessions (single JSON document)\nimpulso-hub telematics sessions --json\n\n# inspect one session in detail\nimpulso-hub telematics show <correlation-id>\n\n# inspect one session as JSON\nimpulso-hub telematics show <correlation-id> --json\n```\n\n### Caveats\n\nModel strings are **not** validated at config load — a typo surfaces at dispatch\nwhen the provider rejects the ID. Aliases (`sonnet`/`haiku`/`opus`) on the CC\nside track the harness's default for that tier; pin full model IDs to lock a\nspecific version.\n\n**Migration (flat `models.json`):** Existing files with flat top-level keys\n(e.g. `{ \"planner\": \"opus\" }`) now fail at boot with a migration-hint error.\nWrap the content under `\"claude\"` and/or `\"opencode\"` blocks. Move any `effort`\nvalues into the `opencode` block, or into `agents/<name>.md` frontmatter for\nClaude Code effort.\n\n**opencode default behavior change:** opencode no longer defaults to concrete\nmodels; it defaults to `llm/<key>` aliases (see table above). Users who did not\npreviously override models must either define the `llm/*` aliases in their\nopencode provider config or pin concrete models in the `opencode` block of\n`models.json`. There is no fallback — undefined aliases fail at dispatch.\n\n### Harness differences\n\n**Effort** behaves differently per harness:\n\n- **opencode**: `effort` is registered at boot as `reasoningEffort` on the agent\n  config — a provider-passthrough value. The `models.json` ladder applies.\n  Interpretation is provider-specific.\n- **Claude Code**: the Agent tool has no dispatch-time effort parameter, so the\n  `models.json` effort ladder does not apply — specifying `effort` in the\n  `claude` block of `models.json` is a **hard error** (use `agents/<name>.md`\n  frontmatter instead). Effort is a static `effort:` frontmatter key in\n  `agents/*.md` (validated by `sync:agents`; unset = inherit session).\n\n**Model dispatch:**\n\n- **opencode**: models are pinned at boot in `config.agent[name].model`. Boot\n  values are the `llm/<key>` aliases by default (see alias table).\n- **Claude Code**: orchestrator pins the resolved model on every dispatch via\n  the Agent tool `model` parameter.\n\nUse `impulso-hub models --harness claude|opencode` (default `claude`) to inspect\nthe full resolved map for either harness.\n\n**Model ID format and `[1m]` context-suffix:** no difference. Neither harness\ntransforms or validates model IDs; no `[1m]` suffix support exists in either.\n\n### Deterministic orchestration ownership\n\nDeterministic state and precondition validation\n(`impulso-hub status --json schema v1`) are owned by `impulso-hub`. Specialized\nskills retain human interview, dispatch, and remediation policy.\n\n## Structure\n\n```\nimpulso/\n├── AGENTS.md              # contributor guide for AI agents working on this repo\n├── CLAUDE.md              # @AGENTS.md import (Claude Code reads CLAUDE.md)\n├── .claude-plugin/        # plugin.json + marketplace.json (claude plugin route)\n├── hooks/hooks.json       # plugin hook declarations (${CLAUDE_PLUGIN_ROOT})\n├── .mcp.json              # tokensave MCP (plugin route + project-local)\n├── run_here.sh            # boots opencode against this repo\n├── run_here_claude.sh     # boots Claude Code against this repo\n├── opencode/              # self-boot config: opencode.jsonc + AGENTS.md -> shared/ + symlinks\n├── claude/                # self-boot config: settings.json + CLAUDE.md + AGENTS.md -> shared/ + symlinks\n├── skills/                # harness-agnostic skill files (SKILL.md per dir)\n├── commands/              # auto-generated from skills/ (sync-commands.js)\n├── shared/                # harness-neutral: AGENTS.md (canonical ruleset), directspeech-config.cjs, tests.cjs\n└── harnesses/\n    ├── opencode/      # opencode-specific glue\n    │   ├── plugin.js          # orchestrator (composes DirectSpeech + bundled skills/commands)\n    │   ├── compose.js         # hook merging helper\n    │   ├── frontmatter.js     # shared YAML frontmatter parser\n    │   ├── commands-loader.js # runtime command registration\n    │   ├── sync-commands.js   # build-time cmd generation from skills\n    │   ├── install.sh         # isolated profile installer\n    │   ├── uninstall.sh       # removes the isolated profile\n    │   ├── directspeech/      # DirectSpeech plugin (always-on reinforcement)\n    └── claude/        # Claude Code glue\n        ├── install.sh         # profile installer (merge-safe for shared profiles)\n        ├── uninstall.sh       # targeted reversal — never touches foreign content\n        ├── merge-settings.cjs # settings.json merge (foreign hooks/keys survive)\n        ├── tests.cjs\n        └── hooks/            # preflight.cjs, directspeech-context.cjs\n```\n","readmeFilename":"README.md"}