gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 604Rust 56Shell 36Markdown 281227 Definiciones

⎇ main crates/takana-agent/src/lib.rs Rust · 48 líneas · 2.1 KB Historia Quién tocó qué crudo

takana etapa 4: los 10 crates de librería y el CLI pasan a takana-* 24bcf1783 · Sergio ·

1//! Cliente del bus de agente + bucle agéntico (Fase 6). Ver `docs/08-ai-integration.md`.
2//!
3//! Tres piezas:
4//!
5//! 1. [`client`] — `AgentClient`: envoltorio síncrono de `/run/agent.sock`. Hace el
6//!    handshake, envía comandos y devuelve eventos. Diseñado para que el orquestador
7//!    pueda esperar a un `BuildReady` específico tras un `Compile`.
8//! 2. [`translator`] — Trait `IntentTranslator` + `MockTranslator`: convierte una intención
9//!    en lenguaje natural a un `.swm`. El traductor real (LLM) se conecta detrás del trait;
10//!    el mock cubre los tests y los smoke en el host de desarrollo.
11//! 3. [`orchestrator`] — El bucle plan→build→try→apply→verify→propose. Aplica las
12//!    mutaciones a un overlay (o a un prefix para tests), valida postcondiciones y
13//!    devuelve un `Proposal` que el humano usa para decidir `commit`.
14//!
15//! Decisión de diseño: el cliente es **bloqueante** (std::sync), no async. La cadencia
16//! agéntica es de comandos/seg, no de RPS; y un cliente sync es 5× menos código y debuggable
17//! con un breakpoint normal. Cuando aparezca un caso real de N agentes concurrentes,
18//! evaluamos tokio.
19
20pub mod client;
21pub mod orchestrator;
22pub mod translator;
23pub mod translator_claude;
24
25pub use client::{AgentClient, ClientError, CompileOutcome, Welcome};
26pub use orchestrator::{Orchestrator, Proposal, VerifyCheck};
27pub use translator::{IntentCatalog, IntentTranslator, MockTranslator, SystemContext, TranslateError};
28pub use translator_claude::{ClaudeConfig, ClaudeTranslator, HttpClient};
29
30#[derive(Debug, thiserror::Error)]
31pub enum Error {
32    #[error("client: {0}")]
33    Client(#[from] ClientError),
34    #[error("translator: {0}")]
35    Translate(#[from] TranslateError),
36    #[error("orchestrator: {0}")]
37    Orchestrate(String),
38    #[error("io: {0}")]
39    Io(#[from] std::io::Error),
40    #[error("overlay: {0}")]
41    Overlay(#[from] takana_overlay::Error),
42    #[error("apply: {0}")]
43    Apply(#[from] takana_core::apply::ApplyError),
44    #[error("core: {0}")]
45    Core(#[from] takana_core::Error),
46}
47
48pub type Result<T> = std::result::Result<T, Error>;