Skip to content

JS/TS parser fails on fresh install: missing npm dependencies #6

@cbchhaya

Description

@cbchhaya

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:

  1. Checks for parsers/javascript/node_modules/ts-morph as a fast-path marker
  2. Runs npm install --prefix <parser-dir> if missing
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions