Bring Diaphora into your editor: author FML plans with full language support, chat with the plan-authoring assistant, reach every MCP / APICP tool configured on your Diaphora account, and run plans — all backed by the account you sign in with.
Status: early development (
0.0.1). Points at a local Diaphora stack by default; the language server default targets the hosted endpoint.
Features
- FML language support — diagnostics, completions, hover, and go-to-definition
for
.fmlfiles, driven by the remotefragslanguage server (overws:///wss:///tcp://). No local binary to install. - Diaphora account integration — OAuth2 sign-in (Hydra); tokens live in VS Code SecretStorage, never in the webview.
- Chat assistant — a Secondary Side Bar chat for authoring Diaphora plans,
with editor-aware tools (read/validate the active
.fml, fold in LSP diagnostics). - MCP / APICP tools — the assistant can list and call the MCP servers and API control-planes configured under your account's tool profile.
- Run plans from the editor — execute a
.fmlplan through your Diaphora account via the ephemeral run endpoint, with a live timeline and JSON result, from the palette or the editor Diaphora context menu.
Getting started
- Install the extension and reload VS Code.
- Open a
.fmlfile, or run Diaphora: Open Chat from the Command Palette. - Sign in when prompted — the chat splash walks you through creating an OAuth client and authenticating against your Diaphora account.
- Point the settings below at your Diaphora environment if you are not using the hosted defaults.
Commands
All commands are available from the Command Palette (prefixed Diaphora:).
| Command | ID | What it does |
|---|---|---|
| Diaphora: Open Chat | diaphora.openChat |
Reveal the Diaphora Chat side bar (also an editor title-bar button). |
| Diaphora: Run Plan | diaphora.chat.runPlan |
Run the active/selected .fml plan via your account. In the palette only when a .fml is active; also in the editor/tab/explorer Diaphora submenu. |
| Diaphora: Configure Tools (MCP / API) | diaphora.chat.configureTools |
Open the web UI to edit your tool profile (MCP servers / API CPs). |
| Diaphora: Restart Language Server | diaphora.restartServer |
Reconnect the FML language client (useful after changing the server URL). |
| Diaphora: Clear Auth Token | diaphora.chat.clearTokens |
Sign out — clears the stored access token. |
| Diaphora: Clear OAuth Client Credentials | diaphora.chat.clearClient |
Forget the per-user OAuth client credentials. |
| Diaphora: Clear All Auth (Token + Client) | diaphora.chat.clearAll |
Clear both the token and the client credentials. |
Settings
All settings live under the diaphora.* namespace.
| Setting | Default | Description |
|---|---|---|
diaphora.server.url |
wss://api.diaphora.io/public/lsp |
Remote FML language server URL. Supports ws://, wss://, tcp://. |
diaphora.trace.server |
off |
LSP trace level (off, messages, verbose). |
diaphora.chat.webappBase |
http://localhost.me:5173 |
Diaphora web app base — opens the OAuth-client creation and tool-config pages. |
diaphora.chat.uiApiBase |
http://api.localhost.me |
API gateway (Oathkeeper) base — chat requests POST to {…}/ui/chat/gemini. |
diaphora.chat.oauthBase |
http://mcp.localhost.me |
OAuth2 issuer (Hydra) base — used for discovery/authorize/token. |
diaphora.chat.serverContextId |
plan-authoring |
Server-side chat context id (system-prompt selector). |
diaphora.chat.toolId |
_default |
Tool profile id used by the MCP tools. |
Changing diaphora.server.url reconnects the language client automatically.
Development
npm install
npm run compile # typecheck + build webview (vite) + bundle (esbuild)
npm run watch # esbuild watch mode
Press F5 to launch an Extension Development Host. The bundled test-workspace/
opens automatically with dev-time settings (see
test-workspace/.vscode/settings.json).
Design notes live under .blueprints/.
Packaging & publishing
npm run vsix # produce a .vsix you can sideload
npm run publish # vsce publish to the Marketplace (requires a PAT)
See the vsce and Open VSX documentation for publishing prerequisites.
License
MIT — see LICENSE.