Description
When scanning a JavaScript or TypeScript repository after a fresh install of OpenAnt, the typescript_analyzer stage fails with:
Error: Cannot find module 'ts-morph'
Require stack:
- /tmp/OpenAnt/libs/openant-core/parsers/javascript/typescript_analyzer.js
Root Cause
The JS parser at libs/openant-core/parsers/javascript/ has a package.json declaring dependencies (ts-morph, typescript, @typescript/vfs), but npm install is never run automatically. The Go CLI's EnsureRuntime() bootstraps Python (creates venv, runs pip install -e) but has no equivalent step for npm.
Reproduction
# Fresh install
git clone https://github.com/knostic/OpenAnt.git
cd OpenAnt/apps/openant-cli && make build
./bin/openant set-api-key <key>
./bin/openant init /path/to/typescript-project -l javascript
./bin/openant parse
# → typescript_analyzer fails with MODULE_NOT_FOUND
Workaround
cd libs/openant-core/parsers/javascript && npm install
Suggested Fix
Add an ensureNodeDeps() check to EnsureRuntime() in apps/openant-cli/internal/python/runtime.go that:
- Checks for
parsers/javascript/node_modules/ts-morph as a fast-path marker
- Runs
npm install --prefix <parser-dir> if missing
- Treats failure as non-fatal (warning only) so non-JS workflows are unaffected
This mirrors the existing Python auto-install pattern. I have a fix ready and will open a PR.
Environment
- OpenAnt: commit 1d9c8ca (master)
- macOS 15.5 / darwin arm64
- Node.js v25.6.1
- Go 1.26.0
Description
When scanning a JavaScript or TypeScript repository after a fresh install of OpenAnt, the
typescript_analyzerstage fails with:Root Cause
The JS parser at
libs/openant-core/parsers/javascript/has apackage.jsondeclaring dependencies (ts-morph,typescript,@typescript/vfs), butnpm installis never run automatically. The Go CLI'sEnsureRuntime()bootstraps Python (creates venv, runspip install -e) but has no equivalent step for npm.Reproduction
Workaround
Suggested Fix
Add an
ensureNodeDeps()check toEnsureRuntime()inapps/openant-cli/internal/python/runtime.gothat:parsers/javascript/node_modules/ts-morphas a fast-path markernpm install --prefix <parser-dir>if missingThis mirrors the existing Python auto-install pattern. I have a fix ready and will open a PR.
Environment