chore: snapshot WIP previo + flow 0008 + 7 sub-issues (0112-0119)
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>
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user