{"_id":"@ascenda-one/codex-hooks","_rev":"26-081ec3c46c88520c7903e673bdf3b430","name":"@ascenda-one/codex-hooks","dist-tags":{"latest":"0.1.28"},"versions":{"0.1.3":{"name":"@ascenda-one/codex-hooks","version":"0.1.3","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.3","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"b68880d649e14b2a665819322a6c9092ad2a1c0c","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.3.tgz","fileCount":15,"integrity":"sha512-Ks4SdozQA5s3FkaV6ysWWD1FFTOHBZGPTUFKopDumRJVqqVblu5lObGEKovi3xRAD+qb9DsPfsDHgrm39bH/JQ==","signatures":[{"sig":"MEYCIQDJPgH8tVnRzEyw3y610/0UKTMh2yk+tIQJnFZA/OIQcQIhAJRE1JftS0KJCAjz999uwNtWGzueEWb3EK9daQabEmGZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":82117},"type":"module","engines":{"node":">=20"},"gitHead":"8b247d4804aeeb72e97ff0551b932705f3a2bafc","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.3_1785877624045_0.3998154055972809","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ascenda-one/codex-hooks","version":"0.1.4","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.4","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"1957a7f16bf3f8983015e98e585f826c492cccfd","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.4.tgz","fileCount":15,"integrity":"sha512-lNF7OiSRH5lUNOrkmeyUoNwGptuOiny6ivhT8Wjl+KIn7eYx6Gc1JaqBzzObkJVU4Eca8MKsYtBZ7oLl8IKwxQ==","signatures":[{"sig":"MEUCIQDioMYc7dqfVqm4cEYuuYY8hzdUhhE1WGOW8f+mw5QhJwIgP6u95fDWvCADCsQjHa/6csiA5mXqNVUdG7rfurcpFsM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":82762},"type":"module","engines":{"node":">=20"},"gitHead":"e1e8fb5e1f8e2f5b1156cb49c425f1172da2c2ca","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.4_1785982462422_0.26894401215243335","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@ascenda-one/codex-hooks","version":"0.1.5","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.5","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"cd20c590ef2de9ab6560a8d95470fb2c3fbd68d6","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.5.tgz","fileCount":15,"integrity":"sha512-ymkS5LhSSI1KSQ+jYc+ts0+EtN/zEsGLjOcgoAxSRJtK83rN8xPuGHqHXwE9lD39HL8wZtmjqso6pq+PulHR0Q==","signatures":[{"sig":"MEYCIQCZGNvceu/kFWvqNn/hPUEJbbn2eb9pau5u9+mJoBWZGwIhANrCafYcIjuS3iluqKbP+N6NRVnmfYrrX4ZGQlIheHzS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":82748},"type":"module","engines":{"node":">=20"},"gitHead":"08c457799d48c33cd8e4aa55f36a20b834560982","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.5_1785982896101_0.4176249125270304","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@ascenda-one/codex-hooks","version":"0.1.6","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.6","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"cc1395f0caa54526b8bebcbd3efdf5655e89e5b8","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.6.tgz","fileCount":15,"integrity":"sha512-rDO9K6Vr2uIJrgw161glnhZ57GLmt8McJStGWKnUtvhdIcX8uw/Udc8M62640CYWc1003w9HeVWROcVXc8nuDg==","signatures":[{"sig":"MEUCIQDsfzejFVhl+E6d0sN2BsWRDjCVW+bU6qwsncQy2ssyWwIgCuv1Kp5l0RGVl0hNZTTXY9HB4awa/+SpW31NgiJHjCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":82748},"type":"module","engines":{"node":">=20"},"gitHead":"6c329f239bcd48734b3bef23cc769f94d985b47c","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.6_1785986257156_0.19810976316413198","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@ascenda-one/codex-hooks","version":"0.1.7","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.7","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"40110a9b9ea9fffe1d0c09fca4c08752c7cefb64","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.7.tgz","fileCount":15,"integrity":"sha512-mO/kphmlSj3giEK3VqH8VGFZU94nMMHV8hTtHj/iA1xZg9tNpsEMmGdoSaUnG7eGSCDL6Ws8vrfKpGRZRhWUAg==","signatures":[{"sig":"MEUCIF+L0asHbxNGl8hG5S/Y3aP2KIW+iaOerHafy4FciytMAiEAx1mbppqkVEDQFYplV1mJyIx3F2/nsSa/ibG/nLqfzms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":85977},"type":"module","engines":{"node":">=20"},"gitHead":"1546656f95d240e42e94df5c1fa1ac21ced91f38","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.7_1786014833774_0.2536406810932468","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@ascenda-one/codex-hooks","version":"0.1.8","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.8","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"e033566cf19ca490b4ff37756873abaeddb69f3d","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.8.tgz","fileCount":15,"integrity":"sha512-YuZihDTrhrhQWrxEBhhdl/jm3ERsbat3Un4q1TMXQrv9bNTYWRsMY0AMFRcgZwQnNGqmK1s5FNi7ZyeGRR6mZA==","signatures":[{"sig":"MEUCIQCeXZAR2Fm3XlQdO1F2JromAJbcWx5WGi7Qp79/VDjKGwIgXMltkUc3Jo4nwp12G8CQoFLe0oTWdZ3YqyQFdeXzKbg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90826},"type":"module","engines":{"node":">=20"},"gitHead":"ef7e6939b60a0c573109d4ecf98c25b4363a682a","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.8_1786061291099_0.42038241905145424","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@ascenda-one/codex-hooks","version":"0.1.9","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.9","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"3f417fb7a3126a60f651e3a1c282a73180daa728","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.9.tgz","fileCount":11,"integrity":"sha512-z5OPT6m51Zk43+sd5MaFfXPMkIjoaqEVlu7Y9ucDBCbF7qbhIHQzALZsLq267RWY5/P4mmCfVW/N5UNrn7rKhw==","signatures":[{"sig":"MEQCIBbZGYgrzNEhxqjc1lis2s/1GWQC5vvWdsFnPBACuivnAiAifPCuKagcgefjpaxTgPM9nQopi2TjLsnTXMEBEBlCJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103034},"type":"module","engines":{"node":">=20"},"gitHead":"4eefc0c708b12c0a149f017ca028175c654bb100","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.9_1787013979216_0.42882730236533506","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@ascenda-one/codex-hooks","version":"0.1.10","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.10","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"851f799d996508db8ea4286f0d7a392e9bd7b111","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.10.tgz","fileCount":11,"integrity":"sha512-CfjRxWI0+TUbRQZjdoh8ja1Xwtf3TRc4QWj9utfE/lloo8Z8cuInoUbJgcSn1KUtF7NQ5ovhXINPp8BJTIP+xA==","signatures":[{"sig":"MEQCIDUxzB0mPiGDe6x/tIAkD5U16xOI0i7Z0SsSQQesattyAiAPbs9x7AuXizz3wphugBdfsZmCpfmHWv/S5eYDZx7X+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103035},"type":"module","engines":{"node":">=20"},"gitHead":"2f3b920c0af72f538c73b5679a8f3aef12f22cf2","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.10_1787022787366_0.33931796323342134","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@ascenda-one/codex-hooks","version":"0.1.11","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.11","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"28a9b79cb88c20ca65b7b856c0d7110c023e8e79","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.11.tgz","fileCount":11,"integrity":"sha512-si8ibTv0mqBCLFgp0Y7aBoLH4NIB1wX9YlDmAs1HP5lMaGsKy3O5KERcuJf2G+wy1w3FuTr/DoDyNuXUnbkooQ==","signatures":[{"sig":"MEYCIQC6P69XTc8kHr3GqZnBcMTGEwfkENHJho/+XT+FPl3mxAIhAKGnwv+jkF8ZORtg1ftkIWmbdK5bWgI4voHBrWw6dEc9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103140},"type":"module","engines":{"node":">=20"},"gitHead":"84c4a38c32a368e8100e7f61301b7cabbb889d44","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.11_1787023602245_0.3056892259855366","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@ascenda-one/codex-hooks","version":"0.1.12","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.12","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"4d45c0d74634bc711a7fa3b4b4da5b79cc8fe6f2","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.12.tgz","fileCount":11,"integrity":"sha512-2ljlJ0JaDXEi7nCGZP5vkph0bPj+8w9YomgVulBiGd7rK6dGKlxsaoY8W9Vvvg2iLt5XwrxwzFb35l1KlFB3HQ==","signatures":[{"sig":"MEQCIEVUUfdVj/d4rrH1eL//NH7G75xAnWqHeSZGwj1353+dAiAb/UUigpciAHLaYIyiUOwAMJF88UgycaWy7brsgpmbQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":104251},"type":"module","engines":{"node":">=20"},"gitHead":"303241e2f404f9efb8c470a85a4273b647e77b42","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.12_1787211289561_0.8940124087483572","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@ascenda-one/codex-hooks","version":"0.1.13","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.13","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"640275dcacab5b429b5d8dd8422920c64ba9d74b","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.13.tgz","fileCount":11,"integrity":"sha512-9wHqv3f1j244VpzkkpNcsbXqZzQHAZRjAIl472a+R5WBfmhU8YBIcGKHjxeTTMSowHkWiACfcXoO4WX6fgd3kw==","signatures":[{"sig":"MEUCIBBksRidKMorj3ed4nicps+IIvMSPgvNX5YEwBSMFVCIAiEAi6UnWdPo8GsomkC9At9hWoiSAsG5xUd+BARcTlZ8YXY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":118121},"type":"module","engines":{"node":">=20"},"gitHead":"925010f352fa29016a26912d9c8b5ed656c5a4a5","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.13_1787710077419_0.08967951992352896","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@ascenda-one/codex-hooks","version":"0.1.14","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.14","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"545be28d575c6067072df34ee6cf93c72cac76ec","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.14.tgz","fileCount":11,"integrity":"sha512-EFK7392M2hA6l9MQN3RzClA5A9gUmoWf9BkmNL9Xj/6zo1r0l5ohtR9ZYUgmL7M19DSxGbrS/0gPXZcEbLw95Q==","signatures":[{"sig":"MEUCIFzP0Z5spOC8Pswd3BU9W3VHgv9RK9yRF2pJG1JspLqgAiEA/ab9Gpqpw2nxtNz9qvN1pN+C+DFIdu6Kv+wdBF+Re+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":118292},"type":"module","engines":{"node":">=20"},"gitHead":"e2588d22670b02da314c2ba89945ce7bffaa9cfb","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.14_1787727039236_0.61416062223886","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@ascenda-one/codex-hooks","version":"0.1.15","license":"Apache-2.0","_id":"@ascenda-one/codex-hooks@0.1.15","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-codex-hook":"dist/cli.js"},"dist":{"shasum":"730bbcad9f2a0cda5930bb7d7970b6605a30e502","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.15.tgz","fileCount":11,"integrity":"sha512-cBf2ItVYOWor9zZzyqhZnzK66ucv7COvw0gyb4UDgEJT1ntTiF5hoiJa5BHtVpma10Zr2TQ0SwufU+JFu1f8ug==","signatures":[{"sig":"MEYCIQD7fnEXb5l78Nn0g8RCQtFrxIVM/G4UDwG/hae+lgvJUgIhAN/kKHKo7LtPYE5DCMfFhbZgffrQ9fV0QEmtnc3cPw7P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127920},"type":"module","engines":{"node":">=20"},"gitHead":"c52bfb88279d66d891fc683d0f98aff23fd6746f","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.15_1787814818392_0.35844612022340816","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@ascenda-one/codex-hooks","version":"0.1.16","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"a62bee487c2290e422e0068f919b5d04f24e8681","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.16.tgz","fileCount":11,"integrity":"sha512-uCpfOPIq+GGEi12DoCU8kHuJEmsxWjajlVrvq6GYDhIZtPmMhlKlvCrBluTnhOUVdGlJMKWpjglCN9OuBInYUw==","signatures":[{"sig":"MEYCIQCax1nxQ0lnDob2w8RyURoPYZYA6mbOLJcHShXIb3CUXAIhAJaYHmGxc86f43Lf1rNKnfyyvYQ+s09bEL18iUh7isx/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":206917},"type":"module","engines":{"node":">=20"},"gitHead":"414b25b83dd062b11c845fde8c7c6eb582905a27","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.16_1788492373388_0.13255799326798434","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@ascenda-one/codex-hooks","version":"0.1.17","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"b103401fa65dc65939495a9e2667c98341dfa9fd","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.17.tgz","fileCount":11,"integrity":"sha512-Mxbj73pn94IJRZ8Y+WSPHpyOrZv8tydz/d8aQaudb8kQP7a1X2MANmsJ7OqMqbTaopCwLAALg9M2ZltTD7n68g==","signatures":[{"sig":"MEUCIF2rop4WlOpIxJRAyFk9s2dDhbBUMYgChanBaHS8dc3gAiEAtNXjNMCU7BPNC+d4n3Gk33jMbmqfUBiAdRBP7HukMF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":207823},"type":"module","engines":{"node":">=20"},"gitHead":"8fb13b8b541bb90e806c64537b25597268e9f214","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.17_1788744385628_0.7560187741513833","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@ascenda-one/codex-hooks","version":"0.1.18","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"967c340d8e0cdb5562c1a8fc96d9edb1c0be2af6","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.18.tgz","fileCount":11,"integrity":"sha512-AA6rSsIGT+bwUA2mORd3YjvFnbSaN7g2esvqTVQgDwPMq6KRl94/+0svhxv26c9iGec3fbyl3PV9ZkNjYR67LQ==","signatures":[{"sig":"MEUCIFGbIrIO6ILzya9ovJ6YKC6WaDZjp5sOHWgk4MAkv/fvAiEAl2rg91ad3wuLNnr7GBpGOy66OduyQT9xX7Z0tbc5i5Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":207823},"type":"module","engines":{"node":">=20"},"gitHead":"cb322aa6d7c16fd6e57eed756ed590be0e7c33c8","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.18_1788753846805_0.5215024765687963","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@ascenda-one/codex-hooks","version":"0.1.19","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"a35eb14d452b39a2db1c3303a7d2a6dd54b3380d","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.19.tgz","fileCount":13,"integrity":"sha512-SlPkfmnc/9kW8urgL0k+dSRV5wbWdEm/ngfWTYtZ+POqqhIs2cwSov/OoscXyBNvrbhQArk4lJPDjFTkDf7poQ==","signatures":[{"sig":"MEYCIQDQKn+OsEUW9Tb6k3N3Iv6bweyVjJTl24b2YbLOpvq7VAIhALKTp5clKg71j9Fc+O/ZRAxJMADa695+3HF8PoVl7uFn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":217627},"type":"module","engines":{"node":">=20"},"gitHead":"99582dedcab13d38649ad7a96efdb2f2bea74211","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.19_1788913525090_0.39959029227159104","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@ascenda-one/codex-hooks","version":"0.1.20","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"72d9750f14dafa95a95fe65e45d9d92da06a7f5f","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.20.tgz","fileCount":13,"integrity":"sha512-RvxAZfFxrXV8UmpgPl9NQM7N3B8HlgrjsCsElQjK5p5FfemeUp2Q4FwXlmobCyRWy8JqBiqVqwTsU99IL+X4eA==","signatures":[{"sig":"MEUCIBOyDCmDvspgZ2DUrwfL3gJaUEl4qnd494EvbhXE5JGBAiEAyAc2t+ZUVO6caG5mJkIn/OcOX1IoXepu1d6AaMqdbA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":219133},"type":"module","engines":{"node":">=20"},"gitHead":"00e32f446284dfbbf57143e3c8f7ec9b846356a0","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.20_1788920132961_0.441808074631276","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@ascenda-one/codex-hooks","version":"0.1.21","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"2735d8f850191fea2169701cd5d1b8ebabd2f117","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.21.tgz","fileCount":13,"integrity":"sha512-r6o6s98Bhq6DE4WWPRUmb8TA2DzzwP65TF87W48gd6ToFWcipGmtu+NX7eSd5Yuk32cg264EAsJr8YBqJxMNOg==","signatures":[{"sig":"MEUCIE9jjX0G2XjCvoDgyIuQdJ1rVxsO0f6e3a/iuT7gD0cSAiEA1fXRof/wnu2TRm2t8mK4xOjRHoaYhnyyq/RVPjiu8Jg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":219150},"type":"module","engines":{"node":">=20"},"gitHead":"e0ce58ab02da6b57ab922c36325a3c4f91766c61","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.21_1788943430126_0.4570167146735453","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@ascenda-one/codex-hooks","version":"0.1.22","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"20593d0ff2ed9807f2a390b5456edff4c4598dbf","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.22.tgz","fileCount":15,"integrity":"sha512-Bea+UaZkVi/duWmYsOCHvtT/PHYHJipwiRR0pg6Mp4nnQSyDs2YHb9K4ekveZO12GfMStbdQrgcfzGOYvBRRjA==","signatures":[{"sig":"MEUCIHO6O840Ofc4kz6k//aWtTv7Pu69RyFVT9ee2glWmB9qAiEAmWdhpORkCOE04UhUq/93kEWyGgp0n1fvsBRLivAgz1U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDjNC1rijZ28vDW1BgtXSOT1EdwwT7d7ucvDP2po7WwOwIhAL5mCBA6Eem63tZlqCsYTsn39MJtFpWgmnpd9hQufAB1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":225912},"type":"module","engines":{"node":">=20"},"gitHead":"fbb257b423dc5cce771d600228bffe095c462753","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.22_1789298772831_0.4747713150500714","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@ascenda-one/codex-hooks","version":"0.1.23","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"49804b99a78726d710deeb46ba9f3093e4543c22","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.23.tgz","fileCount":15,"integrity":"sha512-MUbTpaMDhQVcNIgVvAztvxG9ALYYFEC3beCsDO7fMPp4DQ7clvJOszh8Ct+7d6rlJvJdQ9FWcZnLjwzOZrKn+Q==","signatures":[{"sig":"MEUCIB+ZE2Q2SBe936580/AskC0njReT/lfsOg2tbSM5EjDgAiEA/hcOMWhcuZkOtTfhw7kUIXrSbxvqa7Sdt2J0vwiCop0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGJXHLu5oVYG3ff3OoZLDdGK3Z0MjWyL0QehC0w3WXMQAiEApYEs1xLlZso3anw+Pzu/C7BsPMXPC7ojcTX0QkSvvlM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":227932},"type":"module","engines":{"node":">=20"},"gitHead":"137db4bde5b2f029175772e37afada58d521466c","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.23_1789504884747_0.27776507331199696","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@ascenda-one/codex-hooks","version":"0.1.24","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"756df6aaa006ba03ec875e909d880be0e9c1b189","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.24.tgz","fileCount":15,"integrity":"sha512-57uQw/uJdQTv0KyKCYFZdFGOhrECAM6uzwfT+IjLiDDnusKw2N39H5GPlvsoZKvyCoXwgkQWUUToVNC5Q9L+3A==","signatures":[{"sig":"MEUCIGfI4I9RoBcTomYEjo6BFQFHdNtlSa0I5TM23cnLmz4JAiEAqMsJLV/71drmJ2knY4b+L6LB4lCg0js58QT3DW1l1PQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFdNxSVlnCj/QMKtvZLU51jk/jiSknijrbrmlWCMJCSiAiAKBpGvw4gjiB8LXHuCfIe/xESLboNOWRTprTocFD+zHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":228001},"type":"module","engines":{"node":">=20"},"gitHead":"fd05772d254ebf3be74a5c5eb9f79b6e0c345627","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.24_1789614244801_0.7518766742424281","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@ascenda-one/codex-hooks","version":"0.1.25","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"e51a75e33856211afba3e4bd8c397654fef49ba7","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.25.tgz","fileCount":15,"integrity":"sha512-z9ecsQ7z7Y5s2sZs5EPUpiMdCzxpJGv5VHrbbWXTk2JIZHDx56qwswSvnWzF+r80zTsYBxFZe+OkhqxR1px21A==","signatures":[{"sig":"MEUCIQDjbzMw2lSmRm6yHs47Jtugdssh/I6zeQ2vG8RKlz0roAIgL3q0eYvSGenbKCREYyHTga8vsgRgB3gK2DT5Vk0iN+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICuiQkRIYvIHrD+jnlLa5+Anzw1LOJxKwjPTLFCki53yAiB0HpAuMu6QlV03N/JwLM8BoUa+i5j33Mv6UB+/+SGLQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":228414},"type":"module","engines":{"node":">=20"},"gitHead":"1dc0588ca2c6e427b829e56c1b7d38376a05c8e2","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.25_1789766269484_0.9846622727091319","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@ascenda-one/codex-hooks","version":"0.1.26","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"0c4f9581b82a8cb819824dce4fc5a51f0cc081b7","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.26.tgz","fileCount":15,"integrity":"sha512-AILRObYsz/+U0JQSuhe85hE46rlDyyyM83YYi/+3B9LGyChz0rFlUOMBa0S0J2H8kRmy1Sgyw3ZQxfB6Dn4XLg==","signatures":[{"sig":"MEUCIQDetTov02udKnx7tcLxpM3JpB9I+TL5OrLTQwLYjtLugwIgKC8jkHhisK+Dv4xW83SQkPd/YAj39E6dIFWcgLYC410=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEHgJ+M5dYt86Jfw+LSXfx7R33NGOk6oWKfpStZBrxq4AiB4jwJ4bX6WUEiu0nbTQn+fg2C7EMp/gP7/uZif+Oy3pQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":232137},"type":"module","engines":{"node":">=20"},"gitHead":"a8987ffc6607630a3f55279e6d5c3851d5e2d63e","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.26_1789945872072_0.5181638698549274","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"@ascenda-one/codex-hooks","version":"0.1.27","license":"Apache-2.0","_id":"@ascenda-one/codex-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-codex-hook":"dist/cli.js"},"dist":{"shasum":"dd6832fe646886a25ae2533260209cb72b334d65","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.27.tgz","fileCount":15,"integrity":"sha512-2zHpaYhW18XqrsZ1Y7eBvQcjs8iH8lNU8i50HmzGZn+JQ1drMi31G4mjyd2j9Inh2TvSURtOdkXbN4dw3CVfXg==","signatures":[{"sig":"MEYCIQDFmqzEx48vhFbZtCcw5w49KHQygCNGelq+F+pRVa7QAQIhAKMUgSbEvSOw9IhbxKZZYexhZzYRR49x9M7meQzDYkCj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDyc8znk8MxUFJ+eBdjEEArgGVWULAzQraRC3wV7z6bAgIhAP8L3A7z38EVlqQlzUWMOrf8xDNgHMPqjPF2Br6vfcdS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":233259},"type":"module","engines":{"node":">=20"},"gitHead":"d9d373433ffab20f608c8312aca48d661a30fc0e","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"_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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.27_1790120747546_0.8758412096160886","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"_id":"@ascenda-one/codex-hooks@0.1.28","bin":{"ascenda-codex-hook":"dist/cli.js"},"bugs":{"url":"https://github.com/ascendaone-com/ai-engineer-tools/issues"},"dist":{"shasum":"6554c0fabf20674e547e3bb65950c18e81c33ae5","tarball":"https://registry.npmjs.org/@ascenda-one/codex-hooks/-/codex-hooks-0.1.28.tgz","fileCount":15,"integrity":"sha512-gMdTWnQFi9hGH5UwT2sx2yOs/TS/3gt86Rrk7MwJNTcXS9NP+2v/iz9jkn6d+DBp7ED4AbrB/o24aEuf6OuWtQ==","signatures":[{"sig":"MEYCIQCXzZLQr7S/BebalYEoZCz25whz64mG51i0nMpCLA/OqQIhAJX/KhQR0o/5+erHC3PZqvkRl897ZUtJBxfQrcHWzSwz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEGKBvOVjS83YoL3/TFzRIQx76e73odZzuonzcA8QzzJAiBYuGsSbv/0cIaz2PN9mn9l2JbXzJxojp5mhBqM6vM+gg=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascenda-one%2fcodex-hooks@0.1.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":247922},"name":"@ascenda-one/codex-hooks","type":"module","engines":{"node":">=20"},"gitHead":"a6a2b00ecf617eb77d5bc882b83ff9152409c489","license":"Apache-2.0","scripts":{"test":"node --test --require ./tests/isolateHome.cjs","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","test:sample":"npm run build && cat examples/sample-post-tool-use-bash.json | node dist/cli.js PostToolUse"},"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-codex-hooks"},"_npmVersion":"10.8.2","description":"OpenAI Codex 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/codex-hooks_0.1.28_1790301230822_0.6570740854799162"}}},"time":{"created":"2026-08-04T21:07:03.882Z","modified":"2026-09-25T01:53:51.227Z","0.1.3":"2026-08-04T21:07:04.197Z","0.1.4":"2026-08-06T02:14:22.600Z","0.1.5":"2026-08-06T02:21:36.250Z","0.1.6":"2026-08-06T03:17:37.281Z","0.1.7":"2026-08-06T11:13:54.046Z","0.1.8":"2026-08-07T00:08:11.265Z","0.1.9":"2026-08-18T00:46:19.373Z","0.1.10":"2026-08-18T03:13:07.502Z","0.1.11":"2026-08-18T03:26:42.370Z","0.1.12":"2026-08-20T07:34:49.712Z","0.1.13":"2026-08-26T02:07:57.582Z","0.1.14":"2026-08-26T06:50:39.373Z","0.1.15":"2026-08-27T07:13:38.539Z","0.1.16":"2026-09-04T03:26:13.523Z","0.1.17":"2026-09-07T01:26:25.761Z","0.1.18":"2026-09-07T04:04:06.952Z","0.1.19":"2026-09-09T00:25:25.224Z","0.1.20":"2026-09-09T02:15:33.121Z","0.1.21":"2026-09-09T08:43:50.262Z","0.1.22":"2026-09-13T11:26:12.900Z","0.1.23":"2026-09-15T20:41:24.848Z","0.1.24":"2026-09-17T03:04:04.887Z","0.1.25":"2026-09-18T21:17:49.572Z","0.1.26":"2026-09-20T23:11:12.145Z","0.1.27":"2026-09-22T23:45:47.623Z","0.1.28":"2026-09-25T01:53:50.909Z"},"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-codex-hooks"},"description":"OpenAI Codex hooks adapter for Ascenda AI workload telemetry","maintainers":[{"name":"ascenda-one-com","email":"nathan@ascenda.one"},{"name":"klubiniecki","email":"klubiniecki@gmail.com"}],"readme":"# Ascenda Codex Hooks\n\nOpenAI Codex hooks adapter for Ascenda AI workload telemetry.\n\nPart of [ai-engineer-tools](../). Event mapping: [docs/CODEX_MAPPING.md](./docs/CODEX_MAPPING.md). Codex hooks reference: [developers.openai.com/codex/hooks](https://developers.openai.com/codex/hooks).\n\n## Role in workload detection\n\nThird agent producer after the IDE extensions and [Claude Code hooks](../ascenda-claude-code-hooks/). Contributes the same AI interaction load signals — prompts, correction loops, tool calls, verification runs, compaction pressure, long agent turns — from Codex sessions, into the shared canonical event catalog.\n\n| Workload input | How this adapter contributes |\n| --- | --- |\n| AIInteractionLoad | Prompts, tool calls, correction loops, compaction |\n| FocusDuration | Session starts, long turns (`agent_loop_long`, measured locally) |\n| Workflow friction | Tool failures, context pressure |\n| Verification load | shell test/lint/build → `editor_verification_activity` / `compile_error` |\n\nIdentity: Codex rides the canonical `cli_agent` toolType/source (the backend registry has no codex value yet); events carry `metadata.host: \"codex\"` for later disaggregation.\n\n## Hook safety contract\n\nCodex **awaits** command hooks and treats **exit code 2 as blocking** the user's action. This adapter therefore always exits `0` and caps every HTTP call at 3 s (`ASCENDA_HTTP_TIMEOUT_MS` to change): telemetry failures surface as a one-line `systemMessage` or stderr note and never stall or block the engineer.\n\n## Install\n\n### Prerequisites\n\n- [Codex CLI](https://developers.openai.com/codex) with hooks support (v0.117+)\n- Node.js **20+**\n\n### 1. Set up\n\nOne command pairs Codex, installs the hook binary, and registers the hooks:\n\n```bash\nnpx -y @ascenda-one/codex-hooks setup --scope user\n```\n\nIt prints a 6-digit code — confirm it in the Ascenda app under\n**Connections → Ingest telemetry** — then writes:\n\n- the write token to `~/.ascenda/tokens/`\n- the pairing to `tools.codex` in `~/.ascenda/credentials.json`\n- the hook entries to `~/.codex/hooks.json`\n\n**There is no shell profile line to add.** Codex reads its identity from the\ncredentials file, which is per agent — so pairing Codex cannot disturb a\nClaude Code or Cursor pairing on the same machine, and a Codex hook launched\nfrom the Dock with an empty environment still names itself correctly.\n\n`--scope user` registers machine-wide. Omit it and hooks land in\n`<cwd>/.codex/hooks.json`, instrumenting that project only — which is the\ndefault, so pass the flag unless you mean one repo.\n\n### 2. Check it\n\n```bash\nnpx @ascenda-one/codex-hooks status --scope user\n```\n\nNames the pairing, the binary and how many of the 7 events are registered.\nExits non-zero when something is missing, so it can gate a CI step.\n\nTo undo everything it wrote:\n\n```bash\nnpx @ascenda-one/codex-hooks uninstall --scope user\n```\n\n### 3. Restart Codex and review hooks\n\nOpen `/hooks` in the Codex CLI and review and trust the Ascenda commands.\nCodex skips untrusted hooks; registration and workspace trust alone do not\nauthorize them. Changes to a hook definition require review again. See the\n[Codex hook trust reference](https://learn.chatgpt.com/docs/hooks).\n\nThe setup command registers hooks but does not write Codex trust hashes or\nbypass review. A successful `status` checks installation, not runtime trust\nor accepted delivery.\n\n### On a Dev backend with no phone\n\n`setup --local` points at the [dev server](../ascenda-dev-server), which\nauto-confirms the pairing:\n\n```bash\nnode ../ascenda-dev-server/dist/cli.js      # in another terminal\nnpx @ascenda-one/codex-hooks setup --local --scope user\n```\n\n`--api-base-url` takes any other host; the default is `https://api.ascenda.one`.\n\n### Registering hooks by hand\n\n`setup` is the supported path. [`examples/hooks.json`](./examples/hooks.json)\nis the same content for anyone who would rather merge it themselves, or who\nneeds the inline `config.toml` form:\n\n```toml\n[[hooks.UserPromptSubmit]]\n[[hooks.UserPromptSubmit.hooks]]\ntype = \"command\"\ncommand = \"npx -y @ascenda-one/codex-hooks UserPromptSubmit\"\ntimeout = 10\n```\n\nA hand-merged file still needs a pairing — run `setup` for that, or export\n`ASCENDA_TOOL_INSTALLATION_ID` yourself. A matching `cli_agent:` id or an unqualified id overrides the credentials\nfile. An id qualified for another tool type, such as `claude_code:`, is ignored\nso a shell-wide setting cannot redirect Codex events to that pairing. Multiple\nagents using `cli_agent` should use per-host credentials instead of a shared\nenvironment override.\n\n### Verify\n\nRun a Codex session, then read the send journal at\n`~/.ascenda/state/<installationId>.json`. Look for `lastOutcome: \"accepted\"` and a fresh attempt timestamp. The journal\nrecords delivery attempts under the resolved installation id, not hook process\nstarts. An absent expected journal can also mean a different identity was\nselected, input processing failed before delivery, or the hook mapped to no\nevent. Check the local event log for `metadata.host: \"codex\"` and confirm its\n`toolInstallationId` matches `tools.codex` in the credentials file. The hook\nalways exits `0`, so its exit code alone cannot prove delivery.\n\nSet `ASCENDA_EVENT_LOG_FILE` to also log each payload locally.\n\n## Build from source\n\nNot needed to use this — npm ships it prebuilt. It is here so you can verify\nwhat runs.\n\n```bash\n# from the repo root (workspace install + shared packages first)\nnpm install\nnpm run build:shared\n\ncd ascenda-codex-hooks\nnpm run build\nnpm link                # exposes `ascenda-codex-hook`\nwhich ascenda-codex-hook\n\nnpm run test            # unit tests for the mapping\nnpm run test:sample     # pipes a sample PostToolUse payload through the CLI\n```\n\nA local build exposes the binary as `ascenda-codex-hook` — substitute it for\n`npx -y @ascenda-one/codex-hooks` in the hook config above. If it is not on\nCodex's PATH, use the absolute path to the binary.\n\n## Supported Codex hook events\n\n`SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, `PreCompact`, `PostCompact`, `Stop`, `PermissionRequest`. (`SubagentStart` and `SubagentStop` have no catalog counterpart and are skipped.)\n\n`PermissionRequest` records that the agent stopped at an approval gate, and\nnothing about what it was asking to do — one field, `interruptionKind:\n\"permission_request\"`. The command, its arguments and the paths involved are\nnever read.\n\n## Turn duration\n\nCodex's `Stop` payload has no duration, so the adapter records a turn-start timestamp per session under `~/.ascenda/state/` at `UserPromptSubmit` and consumes it at `Stop`; turns of 30+ minutes emit `agent_loop_long`, and every turn emits `ai_turn_completed`. State failures degrade silently to \"no duration\".\n\n## Privacy defaults\n\nMetadata-only. Does not send prompts, responses, code, file names, repository names, branch names, or terminal output. Correction detection runs locally on prompt text; only the classification is transmitted. `consentScope: ide_telemetry`, `provenance: ai_work_telemetry` on every event.\n\nRepository and branch identity travel only as machine-salted digests, never as\ntext: `workspaceHash`/`projectHash` from folder names, and `metadata.branchHash`\nfrom the branch the checkout is on. A branch name is low-entropy, so that digest\nis not a security boundary — the machine salt is what makes the input space\nunguessable. On a detached HEAD, outside a checkout, or with no readable salt\nthe key is omitted rather than sent blank.\n","readmeFilename":"README.md"}