/* * aiwin.c - AI Chat Window Management * * Provides functions for managing the AI chat window (ProfAiWin) in the * profanity client. This includes retrieving window strings for identification, * displaying AI/LLM responses in the chat view, and handling error messages * from AI interactions. * * Key functions: * aiwin_get_string() - Returns a descriptive string for the window * aiwin_display_response() - Displays an AI/LLM response and appends it * to the conversation history * aiwin_display_error() - Displays an error message from AI operations * * vim: expandtab:ts=4:sts=4:sw=4 */ #include "config.h" #include #include "ai/ai_client.h" #include "log.h" #include "ui/ui.h" #include "ui/win_types.h" char* aiwin_get_string(ProfAiWin* win) { assert(win->memcheck == PROFAIWIN_MEMCHECK); return g_strdup_printf("AI Chat (%s: %s)", win->session->provider_name, win->session->model); } void aiwin_display_response(ProfAiWin* win, const char* response) { log_debug("[AI-WIN] aiwin_display_response ENTER: win=%p, response='%s'", (void*)win, response); assert(win->memcheck == PROFAIWIN_MEMCHECK); if (!response) { log_error("[AI-WIN] FAIL: null response"); return; } // Display AI response win_println(&win->window, THEME_DEFAULT, "<< LLM:", "%s", response); log_debug("[AI-WIN] Displayed AI response"); } void aiwin_display_error(ProfAiWin* win, const char* error_msg) { log_debug("[AI-WIN] aiwin_display_error ENTER: win=%p, error='%s'", (void*)win, error_msg); assert(win->memcheck == PROFAIWIN_MEMCHECK); const char* msg = error_msg ? error_msg : "Unknown error"; win_println(&win->window, THEME_ERROR, "[ERROR]", "%s", msg); // Also show error in console so user sees it regardless of active window cons_show_error("AI Error: %s", msg); }