Diagnostics bridge
How ML.ai asks your editor's own language services for errors after an edit, instead of bundling its own.
How it works
After the agent edits a file, ML.ai asks your editor what's wrong with it, not a language server ML.ai ships itself. It does this over a local socket the extension host opens, which reaches whatever language services your editor already has configured: Python, Go, Rust, or anything else, with no extra packaging cost to ML.ai for supporting each one.
Two implementation details worth knowing
Files the agent wrote but you haven't opened. Language services only analyze files they've been told about. If the agent writes a file that isn't open in any editor tab, ML.ai silently loads that document into language services in the background, without opening a visible tab or stealing your focus, purely so diagnostics can run on it.
Cold analysis takes time. A freshly loaded file's diagnostics take roughly 10 seconds to settle. ML.ai waits for that settling rather than reading an empty diagnostics result immediately and wrongly reporting the file as clean.
Both behaviors exist to avoid a false "no errors" report, not to slow things down for its own sake.
Fallback
If the local socket can't be created for some reason, ML.ai falls back to the engine's own bundled TypeScript server. This narrows what gets checked (TypeScript only), but it doesn't break the extension entirely.