{"_id":"@ascenda-one/windsurf-hooks","_rev":"13-4ea57c42acca694c4fc1985aa1fbbfb2","name":"@ascenda-one/windsurf-hooks","dist-tags":{"latest":"0.1.28"},"versions":{"0.1.16":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.16","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.16","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"6309b0f349965e1fc22a7af85d6678603d321b27","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.16.tgz","fileCount":12,"integrity":"sha512-u7oERIjWnj+XldhZV0V+ZGr6jfUYpnVckAEbnG3JqmZdWhcUTlIZHI6KbZhZE7qgkhcttowTvKttEqgiTM7ivg==","signatures":[{"sig":"MEUCIQDMspAsGL0ofUn0VwrjlXKAGCygL8xiMynpOxYP8/FhEQIgTdnpFnlM5gKYAtt3F2dEZNxpK+HgqaU2bxwsF7uUFNg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":196872},"type":"module","engines":{"node":">=20"},"gitHead":"414b25b83dd062b11c845fde8c7c6eb582905a27","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.16_1788492379157_0.0513553400262321","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.17","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.17","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"83be6f0eac47b2d25f08fc319593180677206c33","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.17.tgz","fileCount":12,"integrity":"sha512-HoSqAloxJ5eEY9lhCkprioMIMvhyQmolCljTdVsW4vdpxGoD0ZJDgJQGsLwkWjA2Xw76Se0X5bYKcaQpMcm6Hg==","signatures":[{"sig":"MEYCIQC9BRTcRv21EnthwgPcA0vNVkadiIsWLO19tZzYyUSscgIhAMN0JWpWHwFUi+F/uH7LgDRXWR0xONDZMbyyxE9cFlJT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":197778},"type":"module","engines":{"node":">=20"},"gitHead":"8fb13b8b541bb90e806c64537b25597268e9f214","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.17_1788744390724_0.7374447554387711","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.18","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.18","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"9d3d9583066c3e37bad0fa9493db86046857d7e1","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.18.tgz","fileCount":12,"integrity":"sha512-730ro8Upff6vj8jPes5GH16rP1xY6bsY9OkBjiFD60etKpT1vMyizSOTnTU4f6hLG6Ve5sy7MDWBTcxfrzZQSg==","signatures":[{"sig":"MEYCIQC9bWuy6a6H+UHCD6ZIWMBIZVy3qxTcdGWshGRFuud0GAIhALoqPRiKlDcx0/zV81mJ1h6iahKun2MpdD8BKMcErM+p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":197778},"type":"module","engines":{"node":">=20"},"gitHead":"cb322aa6d7c16fd6e57eed756ed590be0e7c33c8","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.18_1788753852154_0.5562669629519514","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.19","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.19","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"8d346bb54560482cf2b41ffcc4c4563516887482","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.19.tgz","fileCount":12,"integrity":"sha512-t2zXi/9PVTdI/+kvmHd9Bgo9t2lQ1tLVSGhA5HYSrufw0ZzDWn/jVSfHQbV7+noDD/uhWMK62+5MDJVY8iID4w==","signatures":[{"sig":"MEQCIG050pwB8jQZVAqOfYkYUINB1YO+tejon63bhdsvsdgMAiAe0xeTGSpXaSjB/Sp+lNY6B2o29NSvH81HCIiDmix1hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":201107},"type":"module","engines":{"node":">=20"},"gitHead":"99582dedcab13d38649ad7a96efdb2f2bea74211","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.19_1788913530972_0.763423371471678","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.20","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.20","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"d7b999346488e0692646a24a615041e110b6da67","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.20.tgz","fileCount":12,"integrity":"sha512-3XuXVWYgD57Vicm5IsQyznlpUrDe41atG8Qr5Mp1Sd6bRNYoCeNBOJgHYW32+fM/bHoZ3Kgx1IAT8S2o840rpg==","signatures":[{"sig":"MEUCIQCJGm1HS1DijdhsgDwXeOY9XQob+zgHG02K8HBnZDCYJAIgTVwHEK87IcRJtuhYA96f0yjO18DixytcjqW73UNJBZw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":201322},"type":"module","engines":{"node":">=20"},"gitHead":"00e32f446284dfbbf57143e3c8f7ec9b846356a0","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.20_1788920138671_0.9404367172824257","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.21","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.21","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"ebc79538949b73fd5d05bc63d52d4d87e30dc4de","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.21.tgz","fileCount":12,"integrity":"sha512-V29FuWmb1lrm4Nw2lKTMrxeXjzuF6FnqMmccWT/rzUiJv1T0F2HKEF8tdy6fJowILF+G+jMjgixGif6kbCbLpA==","signatures":[{"sig":"MEYCIQCH9s9pvm3f3vn497HHLA7r3kebG9OWK9zs0lSeB6tA/gIhAJJs47nfqkRfBIoi8SehrXJIQEiVZDGkHqP+zRx9lLFG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":201339},"type":"module","engines":{"node":">=20"},"gitHead":"e0ce58ab02da6b57ab922c36325a3c4f91766c61","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.21_1788943439058_0.07286187400305","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.22","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.22","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"034c0eb87faea0dc871e8beebbf5f38143c6f6d3","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.22.tgz","fileCount":14,"integrity":"sha512-tp3M1uVzQi+GrTAp0E0u3wy0NRSVyiXuSPvruL1XAUZdUa1PLCNBRbU2XVH1TpMWNCzxUq6CJuAhfPuCuAblsA==","signatures":[{"sig":"MEUCIQDTdouzi8A/s1JasseD13jp8WPfy2eiaCkL++6KYJLOEQIgXuyIZVMMgUk1oG4gS1iUbEBB6lsBjILFZdAOB2DbZLM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":208570},"type":"module","engines":{"node":">=20"},"gitHead":"fbb257b423dc5cce771d600228bffe095c462753","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.22_1789298703201_0.10851054065317456","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.23","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.23","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"638910789363a1524630312a3317f158ff1f0948","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.23.tgz","fileCount":14,"integrity":"sha512-qyCSpOowToWs3jTesYdQu+hU2psOllAcYtOzfBjWLaMB9EXRfgAQg/JCUq0D4z+pWPStBY54NdE0Yxpxl++0+Q==","signatures":[{"sig":"MEYCIQC9xnrrwcnIz+M1Sdhm7TvhJdq/XRLkrN3MYYGEqV7e6gIhAPPZv4lreo3pktdVvzcisn7PJ1AF/8Yxih/7Wvi82Bky","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCQUOxydfnhFD1AP6p6hoObdUoDwI6DzLjgNRuRCEETNAIhANV0vcvyAuHzxCGsNQzQouNZzJH6ofJdVmQzCPI8quIz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":210280},"type":"module","engines":{"node":">=20"},"gitHead":"137db4bde5b2f029175772e37afada58d521466c","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.23_1789504836876_0.9009529057510226","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.24","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.24","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"5059afa28ca66b3c1340b60a32f249a1b4b4f69f","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.24.tgz","fileCount":14,"integrity":"sha512-UaHMkn9mxFd3tCcke3kqsMrqN0raFCUiZojpaFNxP8liIYdObHzFldLKOlL7VWpiN8A3D6UZ+FPmkKbMxmdiMA==","signatures":[{"sig":"MEQCIH2pm2LlSchrOzbRa6RP5Y2BFRQOK5SYHckmhMkqY4fTAiBLFWxnXtSEVisPg8+NJqld15EERFd63zSbWYnh/b+lmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCG/Q9hvPXICveFBpJTmTNusVJPjr6TZvQJJ8zyMLzAjgIhAPGGny5F7BSaXbulPMznYpWmaui+SpkY0EoPXzNjsY3b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":210349},"type":"module","engines":{"node":">=20"},"gitHead":"fd05772d254ebf3be74a5c5eb9f79b6e0c345627","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.24_1789614271091_0.8720588203642714","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.25","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.25","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"37ae66aecb28d82dcd34baf8a7534f2912b3ad00","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.25.tgz","fileCount":14,"integrity":"sha512-C/nOJYocK+RUlMtZviY8dHNXeLd3CJsAKcu6FO2bMatDnBtqN0Ih/xouMtfub5pf2tMueO+r8tsApjlfqaHNpA==","signatures":[{"sig":"MEQCIETkZxYzypq/Mko5ovFxJgWF6TAqjcn9I/ajiifkS8JqAiBTfRRIH4qZg8WiNnxzE3P0X+5rHHW0U2WWsN75jyj6MQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHQjSjdOpD6UC01r5xKJTH7LpxLXS1sIV+gTK54z/ClcAiEA+RUYvbJBgdmRNwfLzFS+co38S8hAdJSEge4IphVJ3dc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":210762},"type":"module","engines":{"node":">=20"},"gitHead":"1dc0588ca2c6e427b829e56c1b7d38376a05c8e2","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.25_1789766192201_0.2604920163194351","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.26","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.26","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"76d7724abe63ce72f1e3297d2ed6311febfe625f","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.26.tgz","fileCount":14,"integrity":"sha512-dhPrk/gjwJFk6kvOGASu9dsmcILixugRBeNYSOguyalMB7sbn59Gt7R0LC32q2Bxs5ihClhHyRaQJnWwy2sB/A==","signatures":[{"sig":"MEUCIQDGAQHgjqb4j5EhyINOoHXnvbim5EvSwZVCKIG9uppxkwIgOzi4HEYounrLHiQHnV39RkSxkX6bmFI23TWlWDFGjUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDw4abKTxFCq9rWQ2/PgkIFVq6Fd/fwxZWAXIoKqBua8gIhAMKF7VoIGyTbSkZFAevsvfoeV0nx6WgW17L/Qc/9JW/d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":211748},"type":"module","engines":{"node":">=20"},"gitHead":"a8987ffc6607630a3f55279e6d5c3851d5e2d63e","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.26_1789945876383_0.9572999213754223","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"@ascenda-one/windsurf-hooks","version":"0.1.27","license":"Apache-2.0","_id":"@ascenda-one/windsurf-hooks@0.1.27","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"bin":{"ascenda-windsurf-hook":"dist/cli.js"},"dist":{"shasum":"643cc83425a30e10c678b28f264a96bca883c4ed","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.27.tgz","fileCount":14,"integrity":"sha512-3fcbtPjH/P2JoklfrlQuVwHyjI0Q2YKsNImDUBpNk3bzt6ECnsUvDM0kStf9bSvu2BGevXXmZWKDk8PE07xZbw==","signatures":[{"sig":"MEYCIQCeAFN/eOmy7ipWBIPoKitWJ7gSvOB/0OKk1CxjHCFWQQIhAKU84isLiIInoUXiwlDzzsI+6mftnvumMaPnCyZLv/x+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGDE6g4Ig3z1GAanYSPr6FrVDYrMo8wos0WXPnB2olF7AiAKgT56aad1UdYSvlwK3GAWleZ+Bpb/1G/QJmSZrzJFDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":212870},"type":"module","engines":{"node":">=20"},"gitHead":"d9d373433ffab20f608c8312aca48d661a30fc0e","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"esbuild src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"tmp":"tmp/windsurf-hooks_0.1.27_1790120731850_0.9598481021370167","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"_id":"@ascenda-one/windsurf-hooks@0.1.28","bin":{"ascenda-windsurf-hook":"dist/cli.js"},"bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"dist":{"shasum":"8b07a09ed3eb3bf4f9e90e87d667945d3a02e309","tarball":"https://registry.npmjs.org/@ascenda-one/windsurf-hooks/-/windsurf-hooks-0.1.28.tgz","fileCount":14,"integrity":"sha512-bf12o+WtR5JyriQuVEmQj9/3ohk/Njwyqu02aU21dclPjSV8iS8NwRrm7VN7Vt4C3Vm8MmAlPj09XCfe/R0WOg==","signatures":[{"sig":"MEUCICPfQf9RJENQmhtFMM5Xxf7HXfYFqFj251w2OuDekQ7UAiEAy736GAhVYjGZq1Gga4l8XUESBTDs3oNCKdUiEN9pxL0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDNbGazhesNfarA3mr6+euGUIOi514pRaL0Dx6+pmrPLAiEA/p3DhqBS/7bhND3CqyoRUZiTXsR550VQL5S6986rBJs="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fwindsurf-hooks@0.1.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":228049},"name":"@ascenda-one/windsurf-hooks","type":"module","engines":{"node":">=20"},"gitHead":"a6a2b00ecf617eb77d5bc882b83ff9152409c489","license":"Apache-2.0","scripts":{"test":"node --test","build":"tsc -p ./ && npm run bundle","watch":"tsc -w -p ./","bundle":"node ../scripts/esbuild-collector.mjs src/cli.ts --bundle --platform=node --format=esm --banner:js=\"import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);\" --outfile=dist/cli.js"},"version":"0.1.28","_npmUser":{"name":"ascenda-one-com","email":"nathan@ascenda.one"},"homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"_npmVersion":"10.8.2","description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","directories":{},"maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.10","@ascenda-one/tool-kit":"*","@ascenda-one/tool-contract":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/windsurf-hooks_0.1.28_1790301237276_0.11004477345498231"}}},"time":{"created":"2026-09-04T03:26:19.009Z","modified":"2026-09-25T01:53:57.683Z","0.1.16":"2026-09-04T03:26:19.307Z","0.1.17":"2026-09-07T01:26:30.849Z","0.1.18":"2026-09-07T04:04:12.290Z","0.1.19":"2026-09-09T00:25:31.096Z","0.1.20":"2026-09-09T02:15:38.801Z","0.1.21":"2026-09-09T08:43:59.165Z","0.1.22":"2026-09-13T11:25:03.328Z","0.1.23":"2026-09-15T20:40:36.963Z","0.1.24":"2026-09-17T03:04:31.191Z","0.1.25":"2026-09-18T21:16:32.298Z","0.1.26":"2026-09-20T23:11:16.479Z","0.1.27":"2026-09-22T23:45:31.947Z","0.1.28":"2026-09-25T01:53:57.360Z"},"bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"license":"Apache-2.0","homepage":"https://github.com/ascendaone-com/ai-engineer-tools#readme","repository":{"url":"git+https://github.com/ascendaone-com/ai-engineer-tools.git","type":"git","directory":"ascenda-windsurf-hooks"},"description":"Windsurf Cascade hooks adapter for Ascenda AI workload telemetry","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"readme":"# @ascenda-one/windsurf-hooks\n\nWindsurf (Cascade) agent hooks adapter for Ascenda AI workload telemetry. Metadata only —\nprompt text, file contents and command output never leave the machine.\n\n## Install\n\n```bash\nnpx @ascenda-one/windsurf-hooks setup\n```\n\nThis pairs (printing a 6-digit code to confirm in the Ascenda app), installs a\nself-contained hook bundle to `~/.ascenda/bin`, records the pairing under\n`tools.windsurf` in `~/.ascenda/credentials.json`, and registers the hooks\nin this project's `.windsurf/hooks.json`. Restart Windsurf and events flow — no\nshell exports, no settings file to hand-edit. That matters more than it\nsounds: a GUI-launched editor never sees a shell rc file, so an id that lives\nonly in an `export` line silently stops telemetry the next time the app is\nopened from the Dock.\n\n```bash\nnpx @ascenda-one/windsurf-hooks status      # exits non-zero if anything is unwired\nnpx @ascenda-one/windsurf-hooks uninstall   # removes hooks, the binary and this pairing\n```\n\n| Option | |\n| --- | --- |\n| `--api-base-url <url>` | ingest host (default `https://api.ascenda.one`) |\n| `--local [port]` | shorthand for a local [dev server](../ascenda-dev-server/) (default `4477`) |\n| `--tool-installation-id <id>` / `--token <t>` | reuse an existing pairing instead of creating one |\n| `--scope project\\|user` | register in this project (default) or in `~/.codeium/windsurf/hooks.json` |\n| `--project-dir <path>` | project root for `--scope project` (default cwd) |\n| `--dry-run` | print what would change, write nothing |\n\n`examples/` holds the equivalent hand-written config for anyone who would\nrather not run `setup`.\n\n## Configure\n\nNothing is required after `setup`. A hook resolves its identity from, in\norder: the environment, its own entry in `~/.ascenda/credentials.json`, and\n— when exactly one `cli_agent` token is on disk — the token store. A hook that\nstill cannot name its installation records the skipped send in the journal\n`status` reads, rather than exiting silently.\n\n| Variable | |\n| --- | --- |\n| `ASCENDA_TOOL_INSTALLATION_ID` | overrides the pairing `setup` recorded |\n| `ASCENDA_EVENT_WRITE_TOKEN` | overrides the stored token |\n| `ASCENDA_API_BASE_URL` | overrides the ingest host |\n| `ASCENDA_EVENT_LOG_FILE` | optional local JSONL log of every event |\n\nWith `ASCENDA_EVENT_LOG_FILE` set and no pairing, events are written locally as\n`not_sent` instead of failing — so you can see exactly what would be\ntransmitted before connecting anything. Every payload carries the UTC offset\nand an idempotency key; both come from the shared sender in `tool-kit`, so\nthis adapter holds only its mapping.\n\n## Privacy defaults\n\nMetadata-only. Does not send prompts, responses, code, file paths, command\ntext, repository names or branch names. Correction detection runs locally on\nprompt text; only the classification is transmitted.\n\n`setup` prints the full list before it pairs — every family this adapter sends,\nthe refusals, and how to turn it off. That block is generated from the\nadapter's own declaration in `src/setup.ts`, and a guard test\n(`packages/tool-kit/tests/setupDisclosure.test.mjs`) runs the mapper and fails\nthe build when the declaration claims a family the mapper does not send, or\nomits one it does.\n\n## Event mapping\n\nSee [docs/WINDSURF_MAPPING.md](docs/WINDSURF_MAPPING.md).\n\nCascade has no compaction hook and its post_* hooks carry no exit status, so context-pressure events and shell `compile_error` are unreachable. See the mapping doc.\n\n## Test locally\n\nNo Windsurf (Cascade) install required:\n\n```bash\n./scripts/replay-agent-hooks.sh windsurf\n```\n\nHook invocations always exit `0`: telemetry must never block your work.\n","readmeFilename":"README.md"}