Skip to main content

Resolution

The SDK is not a version you pick. It ships with the installed host, and your mod resolves against that copy.

<installed host>/…/node_modules/@modular/sdk/dist/
├── ambient/tsconfig.json    ← your mod's tsconfig extends this
├── docs/                    ← the offline reference
├── era.json                 fingerprint keying your build to this host
└── …

The host rewrites your mod's tsconfig.json and eslint.config.mjs every time it activates, so they always match the installed host.

Do not hand-edit them. Your edits are overwritten on the next activation. See Ambient config.

Asking the installed copy questions

Because the SDK is local, depth answers need no network:

# a name you have NOT imported — resolved against the SDK itself
modular mod docs <mod-id> --symbol AiSessionHandle

# a name already in your source — resolved by the real language service
modular mod language <mod-id> --hover --file src/mod.tsx --line 12 --character 8

--hover is the stronger answer where it applies: it runs a TypeScript language service over your mod with these exact SDK types loaded, so it resolves generics and follows aliases at that precise position. It needs a position, which is why --symbol exists — that one resolves a name you have not written yet, and a miss returns didYouMean.

The reference on this site is a third answer to the same question, reading the same generated output those two read. None of the three is a transcription of another.