Code Editor
The code editor is the in-workspace C# editing surface. Wherever the admin UI asks you to write code, it renders the same editor — a Monaco-based component with completion, hover documentation, formatting, and inline compile errors wired to the workspace's compiler.
You'll meet the same editor in every code-authoring surface:
- Custom endpoints
- Code indexes
- AI tools
- Scheduled tasks
- The admin Shell, NLP pattern editors, skill and agent editors, and custom AI provider settings.
Editing features
| Feature | Behaviour |
|---|---|
| Context-aware completion | Suggestions reflect the execution scope of what you're editing — an endpoint editor completes endpoint members, an index editor completes index members, and so on. Inline (ghost-text) suggestions are shown as you type. |
| Hover documentation | Hover a symbol to see its signature and its authored XML documentation. A type's tooltip lists its public constructors first, ordered by parameter count, so you can see how to build it and not only what it exposes. Hovering never navigates — it shows tooltips and documentation popups only. |
| Go to definition | F12, or a single Ctrl-click (⌘-click on a Mac) on a symbol, jumps to its declaration. A symbol declared in another Build item opens that item's tab at the right line rather than dead-ending. A framework or schema symbol with no source to open shows its documentation panel instead. |
| Find all references | Shift + F12 lists every use of the symbol under the caret. |
| Formatting | Reformats through the workspace's C# formatter (see keyboard shortcuts below). |
| Inline compile errors | As you type, the workspace compiles the code in the background and underlines errors in place; hover an underline for the message. The previously-saved version stays live until a new one compiles cleanly. |
| Bracket-pair colourisation | Matching brackets share a colour, so nesting is easy to follow. |
| Word wrap | Off by default; toggle per editor (see shortcuts). |
| Read-only mode | Some surfaces (history, comparisons) render the editor read-only — you can read and copy, but not edit. |
| Unsaved-change guard | An editor holding unsaved work asks before it is lost — when the tab is closed, when you navigate elsewhere in the app, and when the page is reloaded. Filtering or searching inside an admin page does not count as navigating, so a search is not interrupted. |
| Code history | Every code surface keeps an edit trail, so a change can be reviewed as a diff and rolled back. Endpoints, AI tools and scheduled tasks have always had one; code indexes and entity post-processing now record one too. Deleting an index takes its history with it. |
Keyboard shortcuts
| Shortcut | Action |
|---|---|
Ctrl + S (⌘ + S) |
Save the editor in front of you, leaving it open. Closing a modal editor with unsaved code asks first. |
F12 / Ctrl + click |
Go to definition |
Shift + F12 |
Find all references |
Alt + F12 |
Peek definition (inline, without leaving the file) |
Ctrl + Space |
Trigger completion suggestions |
Shift + Alt + F |
Format Document |
Ctrl + K Ctrl + F |
Format Selection |
Alt + Z |
Toggle word wrap (also on the right-click menu) |
Cross-links
- Debugging endpoints — tightening the edit → compile → run loop.