ingest

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package ingest parsea los archivos de sesión de los agentes (Codex, Claude Code) y los persiste en el Store de nem. Los parsers son puros (archivo → ParsedChat); la orquestación inserta de forma idempotente.

Index

Constants

View Source
const (
	RoleUser      = "user"
	RoleAssistant = "assistant"
	RoleReasoning = "reasoning"
	RoleTool      = "tool"
)

Roles con los que se persisten los mensajes. user/assistant son la conversación; reasoning es el razonamiento del agente (thinking/reasoning); tool son las llamadas a herramientas y sus salidas (compactadas).

Variables

This section is empty.

Functions

This section is empty.

Types

type Option

type Option func(*config) error

Option configura una corrida de Ingest.

func WithRoot

func WithRoot(root string) Option

WithRoot fuerza el directorio raíz de sesiones (en vez del default del parser).

type ParsedChat

type ParsedChat struct {
	Chat     db.Chat
	Messages []db.Message
}

ParsedChat es el resultado de parsear un archivo de sesión: el chat y sus mensajes, listos para persistir.

type Parser

type Parser interface {
	// Source identifica al agente: "codex" | "claude".
	Source() string
	// DefaultRoot devuelve el directorio raíz por defecto de las sesiones.
	DefaultRoot() (string, error)
	// Parse parsea el contenido de un archivo de sesión.
	Parse(r io.Reader, sessionPath string) (*ParsedChat, error)
}

Parser convierte un archivo de sesión de un agente en un ParsedChat. Es la abstracción que implementa cada agente soportado (codex, claude).

func NewClaudeParser

func NewClaudeParser() Parser

NewClaudeParser crea el parser de sesiones de Claude Code.

func NewCodexParser

func NewCodexParser() Parser

NewCodexParser crea el parser de sesiones de Codex.

type Report

type Report struct {
	Source   string
	Files    int
	Chats    int
	Messages int64
	Skipped  int
	Errors   []string
}

Report resume el resultado de una corrida de ingesta.

func Ingest

func Ingest(store db.Store, p Parser, options ...Option) (*Report, error)

Ingest recorre los archivos .jsonl bajo el root del parser, los parsea y los persiste en el store de forma idempotente (re-ingestar no duplica). Los errores por archivo no abortan la corrida: se acumulan en el Report.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL