Supported projects
Runtime and source languages
Section titled “Runtime and source languages”| Capability | Status |
|---|---|
| Node.js runtime | Node 20 or later |
| TypeScript matching | Supported: .ts, .tsx, .mts, .cts |
| JavaScript matching | Supported: .js, .jsx, .mjs, .cjs |
| Python dependency detection | Supported |
| Python source matching | Not yet supported |
Python files can be identified by the source walk, but no Python grammar or PyPI feed entry ships yet. A Python candidate produces a coverage warning instead of being guessed through a JavaScript matcher.
Manifests and lockfiles
Section titled “Manifests and lockfiles”| Ecosystem | Files |
|---|---|
| npm | package.json, package-lock.json, pnpm-lock.yaml, pnpm-workspace.yaml, yarn.lock |
| PyPI | pyproject.toml, requirements.txt, poetry.lock, uv.lock |
Emendant reports both direct and transitive dependencies during detection, but normal feed selection uses directly declared packages. npm package aliases are supported and matched under the local import name.
Monorepos
Section titled “Monorepos”Declared workspaces are supported through:
workspacesin the rootpackage.json;packagesinpnpm-workspace.yaml; and[tool.uv.workspace]inpyproject.toml.
Each workspace is scanned separately so a package installed in one workspace is not attributed to code in another. Nested workspace declarations are not expanded.
Change feed
Section titled “Change feed”The following releases have published migration pages and confirmed feed coverage:
| Package | Releases described |
|---|---|
@ai-sdk/anthropic | 4.0.0 |
@ai-sdk/google | 4.0.0, 4.0.98 |
@ai-sdk/openai | 4.0.0, 4.0.99 |
@ai-sdk/provider | 4.0.22, 4.0.25, 4.0.29 |
@anthropic-ai/sdk | 0.50.1, 0.58.0, 0.59.0, 0.62.0, 0.70.0, 0.72.1, 0.75.0, 0.76.0, 0.105.0, 0.118.0, 0.119.0, 0.122.0, 0.132.0, 0.134.0, 0.135.0 |
@google/genai | 1.50.1, 2.8.0 |
@langchain/core | 1.0.0, 1.1.7, 1.1.25, 1.1.28, 1.1.30, 1.1.31, 1.1.32, 1.1.35, 1.1.38, 1.1.45, 1.2.0, 1.2.18 |
ai | 4.0.0, 5.0.0, 6.0.0, 6.0.312, 7.0.0, 7.0.14, 7.0.40, 7.0.50, 7.0.63, 7.0.76, 7.0.94, 7.0.102, 7.0.128, 7.0.129, 7.0.143 |
langchain | 0.3.0, 1.0.1, 1.0.3, 1.0.5, 1.1.0, 1.2.7, 1.2.12, 1.2.13, 1.2.24, 1.2.29, 1.2.35, 1.2.36, 1.2.39, 1.4.0, 1.4.1, 1.4.4, 1.4.6, 1.5.3, 1.5.16, 1.5.17 |
openai | 5.0.0, 5.4.0, 5.8.0, 5.18.0, 6.3.0, 6.9.0, 6.21.0, 6.28.0, 6.29.0, 6.30.1, 6.31.0, 6.35.0, 6.36.0, 6.37.0, 6.49.0, 7.2.0, 7.5.0, 7.6.0, 7.8.0, 7.12.1 |
emendant feed status prints the snapshot your machine holds, and emendant explain <change-id> prints the entry behind any single result, so the feed itself is always the exact answer to what is covered today. The SDK Changes pages describe what each covered release breaks, with the coverage table generated from the feed entry itself, and there is an RSS feed of them.
Each change links to sources for the published release. The release pages show what Emendant detects, which fixes it offers, and the checks available for each patch.
New coverage is available through emendant feed update, without a new release of the tool. A scan checks changes in the feed; read the release’s migration guidance for steps outside that coverage.
You can request an API or SDK to help us prioritise new coverage. Submitting a request does not guarantee coverage or a delivery date.
Files intentionally skipped
Section titled “Files intentionally skipped”The source walk skips:
- dependencies, build output, caches, virtual environments, coverage, and vendored directories;
- paths excluded by committed
.gitignorerules oremendant.json; - minified and bundled JavaScript;
- files over 1,000,000 characters; and
- extensions no current matcher can interpret.
See Known limitations for the precision trade-offs behind these boundaries.