Map the JavaScript repository
Codna builds a dependency and blast-radius graph of the repository from its import patterns. No model call, zero tokens.
Codna maps your JavaScript project for zero tokens, fixes from evidence, and runs your test command until it passes.
The problem
Codna builds a dependency and blast-radius graph of the repository from its import patterns. No model call, zero tokens. import and require are the edges, so the agent follows the call chain from the failing test to the promise that resolves out of order.
How Codna fixes it
Codna builds a dependency and blast-radius graph of the repository from its import patterns. No model call, zero tokens.
The agent receives an evidence bundle scoped to the issue: the suspect files, the call paths, the failing test. Codna prints the raw-to-bundle token size on every run. Every fix reports root cause, confidence, blast radius and regression risk, and passes a risk gate before it is applied or a pull request opens.
Run codna fix --tests --apply and Codna runs your tests in a sandbox and re-fixes until they pass, up to the iteration limit you set. Set fix.test_command in codna.yaml, or pass --test-cmd, when your runner is not pytest. With --open-pr, or through the GitHub App, the pull request states the issue, the root cause, the symbols touched and a confidence score, and asks for review before merging. Codna never merges.
pip install codna codna fix . --issue "uploads resolve out of order under load" --tests --apply --test-cmd "npx jest --ci --reporters=default --reporters=jest-junit"
What you get
Both import and require are edges in the map.
Jest, Vitest or node:test through --test-cmd or fix.test_command, writing JUnit to $CODNA_JUNIT.
On-device recall parses .js, .jsx, .mjs and .cjs with tree-sitter.
The proof
Codna builds a dependency and blast-radius graph of the repository from its import patterns. No model call, zero tokens. The agent receives an evidence bundle scoped to the issue: the suspect files, the call paths, the failing test. Codna prints the raw-to-bundle token size on every run. Every fix reports root cause, confidence, blast radius and regression risk, and passes a risk gate before it is applied or a pull request opens.
A fix tool. Give it the issue and it returns a patch with root cause, confidence, blast radius and regression risk, then opens a pull request if you ask.
Yes. Both module systems are edges in the map.
Any of them. Set fix.test_command or pass --test-cmd with a JUnit-writing command.
Describe the behaviour in --issue. The failing test and its call chain are the evidence; the agent fixes the ordering, not the symptom.
Understanding runs on your machine and spends no tokens. Only the evidence bundle or the diff reaches your model provider, with your key from the OS keychain. Set privacy.egress to fail-closed in codna.yaml and Codna runs your tests only under kernel-level network denial. Secret redaction is always on.
Related