b9716a7cd6
Snapshot de WIP acumulado de sesiones previas antes de merge wave 1 del flow 0008 (kanban_cpp + agent_runner_api + DoD schema). Incluye: - dev/flows/0008-kanban-cpp-and-agent-workflows.md - dev/issues/0112-0119*.md (7 sub-issues) - WIP previo en cmd/fn/doctor.go, registry/*, modules/, cpp/, etc. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
62 lines
2.6 KiB
C++
62 lines
2.6 KiB
C++
#pragma once
|
|
// data_table_ai_panel — modal "Ask AI" de la tabla TQL.
|
|
// Sub-funcion extraida de modules/data_table/data_table.cpp (issue 0107c).
|
|
//
|
|
// Responsabilidad:
|
|
// - draw_ask_ai_modal: modal ImGui con prompt de lenguaje natural, llamada
|
|
// a llm_anthropic::ask, render de la respuesta (codigo TQL/SQL editable),
|
|
// botones Apply/Reject/Close, export CSV de la respuesta.
|
|
//
|
|
// El modal usa UiState.ask_* que se mueve aqui (AskAiState) para
|
|
// encapsulacion. Vive en UiState del data_table principal — no en State.
|
|
//
|
|
// Dependencia con llm_anthropic:
|
|
// - Si FN_LLM_ANTHROPIC esta definido: usa core/llm_anthropic.h (real).
|
|
// - Si no: el stub del data_table.cpp provee tipos/funciones no-op.
|
|
// - Tras la extraccion este modulo incluye el stub o el header real.
|
|
//
|
|
// Rangos del fuente original:
|
|
// - Modal "Ask AI" : lineas 4636-4755
|
|
// - Boton trigger : linea 1869 (dentro de draw_viz_selector)
|
|
//
|
|
// Dependencias: data_table_types.h, llm_anthropic.h (o stub), imgui.h.
|
|
|
|
#include "core/data_table_types.h"
|
|
#include "imgui.h"
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace data_table {
|
|
|
|
// AskAiState: estado del modal Ask AI. Debe persistir entre frames
|
|
// (es parte de UiState). Extraido aqui para encapsulacion.
|
|
struct AskAiState {
|
|
bool open = false;
|
|
bool busy = false;
|
|
int mode = 0; // 0 = TQL, 1 = SQL (DuckDB)
|
|
char question[2048] = {};
|
|
std::string current_tql; // TQL emitido del state al abrir modal
|
|
std::string response_raw; // texto raw del modelo
|
|
std::string response_code; // bloque extraido (Lua o SQL)
|
|
std::string error;
|
|
std::string status; // "Sending..." / "Got response." / error
|
|
char edit_buf[8192] = {}; // buffer editable de la propuesta
|
|
};
|
|
|
|
// draw_ask_ai_modal — dibuja el modal "Ask AI".
|
|
// Debe llamarse cada frame (pattern ImGui). Abre el popup si ask_ai.open==true.
|
|
//
|
|
// Parametros:
|
|
// ask_ai — estado mutable del modal.
|
|
// st — State principal (para tql::apply en Apply + active_headers/types).
|
|
// active_headers / active_types — snapshot del output activo (para la llamada llm).
|
|
// orig_cols — numero de cols originales (para tql::apply signature).
|
|
// ---------------------------------------------------------------------------
|
|
void draw_ask_ai_modal(AskAiState& ask_ai,
|
|
State& st,
|
|
const std::vector<std::string>& active_headers,
|
|
const std::vector<ColumnType>& active_types,
|
|
int orig_cols);
|
|
|
|
} // namespace data_table
|