Editor (Monaco + LSP)

The same editor engine VS Code uses, with full Language Server Protocol support for whatever languages the workspace has servers installed for.

What you get out of the box

  • Syntax highlighting for ~70 languages.
  • Diagnostics — red squigglies for syntax errors and type errors, within ~500ms of the keystroke.
  • Hover tooltips — symbol signatures and docstrings.
  • CompletionsCtrl+Space to trigger.
  • Go to definitionF12 (or -click).
  • Find referencesShift+F12.
  • Rename symbolF2.
  • Multi-cursorAlt+Click to add a cursor; Ctrl+D to add the next match.
  • Format on save — when a formatter is configured.

Language servers

The LSP backend runs on the server side. KrowForge proxies a single workspace LSP session per language. Currently bundled:

  • Pythonpyright / pylsp (whichever is installed in the workspace's environment).
  • TypeScript / JavaScripttypescript-language-server.
  • JSON — built-in Monaco JSON service.
  • Markdown — built-in.
  • Other languages — fall back to syntax highlighting only unless a server is installed in the workspace.

To add a new server, install it in the workspace (e.g. pip install python-lsp-server) and restart the workspace.

Buffer persistence

Open a file → edit → close it → re-open it. Your cursor position and scroll are restored. KrowForge holds an unsaved-changes buffer per file in the browser; save (⌘S / Ctrl+S) writes to disk.

If you see a yellow dot next to the file tab, that file has unsaved changes.

File save side effects

Every successful save triggers a few background things:

  1. Embed-index upsert — the file's chunks are re-embedded so Ask the codebase sees the latest version within ~2 seconds.
  2. LSP didChange + didSave — the language server is notified.
  3. Watchers — any registered file-watch hooks (test runners, agent watchers) fire.

When Monaco fails to load

If you open a file and see a plain <textarea> instead of the rich editor, and the browser console says:

[KFMonaco] load failed: monaco loader.js failed to fetch

The CDN was blocked by the page's Content-Security-Policy. The current build allows https://cdn.jsdelivr.net. Hard-refresh (Ctrl+Shift+R) to clear any stale CSP from a previous build.

If the problem persists, see Troubleshooting.