<p>Every release we ship makes the agent <em>slightly</em> less dependent on you saying "wait, check the type first." Version 0.9.18 is entirely about that instinct — the agent looking something up before it becomes a problem, instead of after.</p><h2>Why this release</h2><p>Here's a pattern anyone who's paired with a coding agent recognizes: it edits a function signature, changes what a parameter expects, and confidently declares victory — without ever looking at the interface it just broke compatibility with. You catch it in the next message. It fixes it. You've burned a round trip on something the agent could plausibly have caught itself, since the information was one LSP call away the whole time.</p><p>Elyra already ships full LSP integrations for TypeScript and PHP — go-to-definition, find-references, diagnostics, hover. The tools existed. They just weren't being used <em>proactively</em>. The agent had to think to reach for them.</p><p>0.9.18 closes that gap, adds a third language to the LSP lineup, and ships a stack profile for a framework close to home.</p><h2>What's new</h2><h3>1. Symbol-aware auto-context (TypeScript + PHP)</h3><p>After every <code>edit</code> tool call, Elyra now:</p><ol><li><p>Re-syncs the file with the language server (forcing a fresh read, not a stale cache)</p></li><li><p>Scans the diff for PascalCase identifiers — the kind that usually name a type, interface, or class</p></li><li><p>Fires <code>textDocument/hover</code> at each one, in parallel</p></li><li><p>Appends a short, one-line summary of each to the edit's own tool result</p></li></ol><p>No extra turn, no extra tool call from the agent's perspective. It just <em>sees</em> the type it's working against, right there in the result of the edit it made.</p><p><strong>Example.</strong> Say the agent edits a function to accept a new parameter:</p><pre><code class="language-ts">function scheduleExport(job: ExportJob, options: ExportOptions) { ... }
</code></pre><p>Previously: the agent would either already know what <code>ExportOptions</code> looks like (if it read the file recently) or guess, and only discover a mismatch when a type error surfaced later — or when you pointed it out. Now, the tool result for that edit automatically includes something like:</p><pre><code class="language-text">ExportOptions (interface, export-job.ts:14): { format: "csv" | "json"; compress?: boolean; notifyOnComplete?: boolean }
</code></pre><p>The agent has the shape of the type immediately, in-band, without a <code>lsp_hover</code> round trip and without asking you to paste it in. It's a small thing per edit — but it's the kind of small thing that happens dozens of times in a session, and each one used to cost a turn.</p><p>It's deliberately conservative: capped at 4 candidates per edit, filtered through a per-language stoplist (so it's not firing hover requests at <code>String</code>, <code>Promise</code>, <code>Array</code>), and wrapped in a try/catch that silently does nothing on failure. It only ever adds information — it can't break an edit.</p><h3>2. Rust support — <code>@elyracode/lsp-rust</code></h3><p>Elyra now speaks Rust. The new <code>@elyracode/lsp-rust</code> extension wires up <code>rust-analyzer</code> the same way <code>lsp-typescript</code> and <code>lsp-php</code> wire up their respective servers:</p><ul><li><p><code>rust_definitions</code>, <code>rust_references</code>, <code>rust_diagnostics</code>, <code>rust_hover</code> as agent tools</p></li><li><p>Auto-detected in any project with a <code>Cargo.toml</code></p></li><li><p>The same proactive auto-context behavior on edit — a <code>Result&lt;T, E&gt;</code> change gets its <code>E</code> type surfaced automatically</p></li></ul><p>Install it with:</p><pre><code class="language-bash">elyra install npm:@elyracode/lsp-rust
</code></pre><p>or just open a Rust project — Elyra will offer it via the package browser.</p><h3>3. Elyra Framework stack profile</h3><p>If you're building on <a target="_blank" rel="noopener noreferrer nofollow" href="https://github.com/kwhorne/elyra-framework">Elyra Framework</a> — the Rust + Svelte 5 desktop app framework with Laravel-flavored ergonomics — Elyra now recognizes it. Drop into a project with an <code>elyra.toml</code> or an <code>elyra</code> dependency in <code>Cargo.toml</code>, and Elyra suggests <code>@elyracode/stack-elyra-framework</code>: a deep skill covering <code>#[command]</code> handlers, the <code>Ctx</code> container, the typed <code>rata codegen</code> bridge, <code>EventBus</code>, the <code>Database</code>/<code>#[derive(Model)]</code> layer, <code>Cache</code>/<code>Storage</code>/<code>Queue</code> facades, the <code>elyra::ai</code> SDK, and the <code>rata</code> CLI workflow.</p><p>Same pattern as our TALL, SILT, VILT, and RILT stack profiles — Elyra doesn't just recognize your stack, it comes pre-loaded with how to work in it.</p><h3>4. A bug we found on the way, and fixed</h3><p>While building the new stack profile off the existing <code>stack-silt</code> template, we noticed <code>/silt:info</code> was silently broken — a handler signature mismatch and a swapped argument order in the notification call meant the command threw instead of showing anything. Turned out the same copy-paste bug was sitting in <code>/tall:info</code> and <code>/vilt:info</code> too. All three are fixed now. Not glamorous, but worth knowing if you'd noticed those commands doing nothing.</p><h2>Get it</h2><pre><code class="language-bash">npm install -g @elyracode/coding-agent@latest
</code></pre>