Skip to content

v0.2.0

Choose a tag to compare

@nevindra nevindra released this 18 Feb 00:28
· 267 commits to master since this release

Added

  • InputHandler interface — human-in-the-loop for agents (built-in ask_user tool + programmatic gates via InputHandlerFromContext)
  • Workflow agent primitive — deterministic DAG-based task orchestration
    • Step types: Step, AgentStep, ToolStep, ForEach, DoUntil/DoWhile
    • DAG validation at construction (duplicate, unknown dep, cycle detection)
    • Shared WorkflowContext with concurrent-safe Get/Set
    • Implements Agent interface for recursive composition
  • Ingestor — end-to-end extract → chunk → embed → store API with batched embedding
  • Extractor interface with built-in PlainTextExtractor, HTMLExtractor, MarkdownExtractor
  • Chunker interface with RecursiveChunker (improved sentence boundaries) and MarkdownChunker (heading-aware)
  • StrategyParentChild — two-level hierarchical chunking with Chunk.ParentID linking
  • Store.GetChunksByIDs for batch chunk retrieval (parent-child resolution)
  • PDF extractor stub subpackage (ingest/pdf/)
  • ObservedAgent in observer/ — OTEL lifecycle spans, metrics, and logs for any Agent execution
  • Spawn() + AgentHandle — background agent execution with state tracking, cancellation, and select-based multiplexing
  • ~110 new test cases across framework packages

Changed

  • Switch ID generation from xid to UUIDv7 (RFC 9562) — standard format, native Postgres UUID type support
  • ContentType is now string (MIME type) instead of int enum
  • Remember tool uses Ingestor instead of manual embed+store boilerplate
  • Search tool uses Chunker interface instead of ChunkerConfig

Removed

  • Pipeline, PipelineResult, NewPipeline — use Ingestor
  • ChunkerConfig, DefaultChunkerConfig(), ChunkText() — use NewRecursiveChunker()
  • ExtractText() — use Extractor implementations

Fixed

  • parseScheduledToolCalls partial unmarshal contamination causing duplicates