AI Chat
Built-in AI assistant accessible from the TSM top bar. Communicates with a AI backend over WebSocket, supporting real-time streaming responses, conversation threads, image attachments, and context-aware integration with the SpEL Console.
Access
- User must have the
Toolbar.AiChatrole assigned - Application config must include
apiUrls.codexWebsocket(e.g.ws://localhost:8787)
Usage
| Action | How |
|---|---|
| Open / close panel | Click the sparkle icon in the top bar, or press Alt+I |
| Pin panel | Click the pushpin icon in the input area to keep the panel docked while navigating |
| Send a message | Type in the text area and press Enter |
| New line | Shift+Enter |
| Attach images | Click the image button (left of the text area), select one or more image files |
| Remove attachment | Click the x on the image preview thumbnail |
Responses
- Responses stream in real-time with a typing indicator (three animated dots)
- Reasoning steps appear as a collapsible section above the response text — click to expand/collapse
- Code blocks are rendered with syntax highlighting and a Copy button
- Command execution badges appear when the AI runs shell commands, showing the command string
Conversation Threads
| Button | Action |
|---|---|
| + (plus) | Start a new conversation |
| List icon | Open thread history (up to 50 recent conversations, sorted by last update) |
| Click a thread | Resume that conversation and load its message history |
| Trash icon | Clear the visible messages in the current view |
SpEL Console Integration
When you open the SpEL Console and have an active script, AI Chat becomes context-aware:
- The chat automatically knows the current script content, script name, entity type, and microservice
- A context badge appears above the input showing
spel-console - When you ask a question, the AI returns a structured response containing both an explanation and a modified script
- A diff overlay appears over the editor showing the proposed changes
- Click Accept to apply the modified script
- Click Reject to discard and return to the original