Yiorgis Gozadinos
7685a592c2
bump haiku.skills to 0.16.0
2026-04-28 12:03:14 +03:00
Yiorgis Gozadinos
758bd3ee72
Group relative-path test with the other connect_lancedb dispatch tests
2026-04-25 09:28:46 +03:00
Tres Seaver
0d70f4aec6
fix: pass absolute 'db_path' to 'lancedb.connect_async'
...
Closes #354 .
2026-04-24 17:59:01 -04:00
Yiorgis Gozadinos
821b7361e9
Push document-id filter into chunk search query
2026-04-24 16:07:07 +03:00
Yiorgis Gozadinos
cd4224a727
drop private title/embedding forwarders from HaikuRAG
2026-04-24 15:52:50 +03:00
Yiorgis Gozadinos
0ffca7727c
Fix caplog-based assertion flaking under xdist ordering
2026-04-24 15:51:29 +03:00
Yiorgis Gozadinos
ddcc4518ad
Cover FULL rebuild source-failure branch
2026-04-24 15:32:53 +03:00
Yiorgis Gozadinos
258ffa41fa
Improve test coverage
2026-04-24 14:43:59 +03:00
Yiorgis Gozadinos
aca3ccc29f
Close connections if __aenter__ fails mid-initialization
2026-04-24 14:43:59 +03:00
Yiorgis Gozadinos
3224d1f20c
Extract document orchestration into client/documents.py
2026-04-24 14:43:59 +03:00
Yiorgis Gozadinos
e814459e1f
Extract download_models into client/downloads.py
2026-04-24 14:42:53 +03:00
Yiorgis Gozadinos
d0ed9e213f
Pin FTS search column to content_fts
2026-04-24 14:42:53 +03:00
Yiorgis Gozadinos
b6ea07d2de
Track all in-flight background vacuum tasks, not just the last one
2026-04-24 14:42:53 +03:00
Yiorgis Gozadinos
57385506c1
Fix is_new_db detection when create=True is passed on an existing DB
2026-04-24 14:42:53 +03:00
Yiorgis Gozadinos
ba911a35f6
Add test for background vaccum being awaited
2026-04-24 14:42:52 +03:00
Yiorgis Gozadinos
82fd10e0ee
Migrate LanceDB to native async API
...
Convert all LanceDB operations from sync calls wrapped in async
functions to the native async API (connect_async, AsyncConnection,
AsyncTable, AsyncQuery). Database I/O no longer blocks the event loop.
- Store and HaikuRAG use async context managers (async with). Store
initialization is deferred to __aenter__; direct construction
without async with is no longer supported.
- Index creation uses config objects (FTS, BTree, IvfPq) instead of
string-based index_type parameter.
- Upgrade callbacks are async.
- HaikuRAG tracks background vacuum tasks and awaits them in __aexit__
and before destructive rebuild operations to avoid races with
concurrent table mutations.
- temp_db_path fixture uses pytest's tmp_path for reliable async
cleanup.
2026-04-24 14:42:52 +03:00
Yiorgis Gozadinos
cb9360ef7b
fix chat TUI citation rendering after state flattening
2026-04-24 13:48:57 +03:00
Yiorgis Gozadinos
ae2b8461be
flatten skill state citations from list[list[str]] to list[str]
2026-04-22 16:50:13 +03:00
Yiorgis Gozadinos
206c4ffcf2
address review: top-level AnalysisRunDeps import, asserts, e2e tests
...
- Move AnalysisRunDeps to the module-level import in _tools.py.
- Swap the RuntimeError guards in _require_rag and execute_code for
plain asserts with the same diagnostic messages. Apply the same
treatment to the ty-reachability guard in Sandbox._ensure_initialized.
- Add end-to-end lifespan tests for both skills that drive _run_skill
with TestModel, covering the sub-agent entry path that the existing
tool-level tests bypass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 15:04:24 +03:00
Yiorgis Gozadinos
9067b89d2f
fix convert() misreading text content that starts with a URL
2026-04-22 14:47:23 +03:00
Yiorgis Gozadinos
f0016ebcd2
scope citations, searches, and executions to the current invocation
2026-04-22 13:53:39 +03:00
Yiorgis Gozadinos
4a9dd9b49a
persist sandbox variables across execute_code calls within one invocation
2026-04-22 13:30:38 +03:00
Yiorgis Gozadinos
4e9c02afc2
open one HaikuRAG client per skill invocation via lifespan
2026-04-22 13:13:42 +03:00
Yiorgis Gozadinos
8e555ab76f
Improve coverage
2026-04-20 15:45:27 +03:00
Yiorgis Gozadinos
eb4e1721ce
remove dead code, add tool descriptions in frontend, update changelog
2026-04-20 15:38:17 +03:00
Yiorgis Gozadinos
ff8ad0879c
fix context expansion: respect section boundaries, remove max_context_items
2026-04-20 15:18:16 +03:00
Yiorgis Gozadinos
4d75943df5
use MontyRepl for persistent variables across execute_code calls
2026-04-20 10:47:50 +03:00
Yiorgis Gozadinos
68a9f191d2
Remove documents from state, fix tests
2026-04-20 09:48:18 +03:00
Yiorgis Gozadinos
d52f453c44
flatten skill architecture: replace ask/analyze/research with direct tools
2026-04-17 18:35:17 +03:00
Yiorgis Gozadinos
7d98d0ec57
add citation support to analysis agent
2026-04-17 18:35:16 +03:00
Yiorgis Gozadinos
aa4ce07dc9
remove filter parameter from analyze skill tool and clean up unused filter helpers
2026-04-17 18:35:16 +03:00
Yiorgis Gozadinos
2a0e89bbe7
add --skill flag to chat TUI for rag and analysis skills
2026-04-17 18:35:16 +03:00
Yiorgis Gozadinos
a45820dbf7
add document virtual filesystem to analysis sandbox
...
Replace get_document() and get_docling_document() with a VFS at
/documents/{id}/ with metadata.json (eager), content.txt (lazy),
and items.jsonl (lazy). Keep search(), list_documents() (now returns
all), and llm() as external functions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 18:35:16 +03:00
Yiorgis Gozadinos
bacc21b38b
expose doc_item_refs and labels in sandbox search results
2026-04-17 18:35:16 +03:00
Yiorgis Gozadinos
4118533db1
fold context expansion into sandbox search and remove get_context
2026-04-17 18:35:16 +03:00
Yiorgis Gozadinos
44fd0c9906
add get_context() to analysis sandbox and improve prompt
2026-04-17 18:32:45 +03:00
Yiorgis Gozadinos
d2b3ba1b59
rename RLM agent to analysis throughout the codebase
2026-04-17 18:32:01 +03:00
Yiorgis Gozadinos
499a843a43
remove unused create_analysis_toolset and AnalysisResult
2026-04-17 18:32:01 +03:00
Yiorgis Gozadinos
a1181ff52d
extract get_database_stats and share it across info, inspector, and backend
2026-04-17 15:33:30 +03:00
Yiorgis Gozadinos
a0a9a3410b
info: report partial stats and pending migrations on pre-migration DBs
2026-04-17 14:00:03 +03:00
Yiorgis Gozadinos
d3c8ed62a8
preserve original chunk when expansion produces less content
2026-04-16 12:11:54 +03:00
Yiorgis Gozadinos
e2bac1e887
deduplicate escape_sql_string into utils
2026-04-16 12:11:53 +03:00
Yiorgis Gozadinos
39b9d0f683
Additional tests
2026-04-16 12:11:53 +03:00
Yiorgis Gozadinos
b6113bf8ab
replace fixed-radius expansion with section-bounded algorithm
...
Context expansion is now automatic and structure-aware. For structured
documents, expands within the section containing the match. For sections
that exceed the budget or are too small, expands item-by-item outward
skipping noise labels. Unstructured documents use budget-based outward
expansion. Results sorted by relevance score.
2026-04-16 12:11:53 +03:00
Yiorgis Gozadinos
364b1bc509
add document_items table for fast context expansion
2026-04-16 12:11:53 +03:00
Yiorgis Gozadinos
a51b922be3
fix skill analyze tool ignores state.document_filter
2026-04-09 15:29:20 +03:00
Yiorgis Gozadinos
99af4fe11d
fix skill list_documents tool ignores state.document_filter
2026-04-09 15:29:20 +03:00
Yiorgis Gozadinos
367accb814
Replace MinIO with SeaweedFS for S3 integration tests
2026-04-08 14:19:32 +03:00
Yiorgis Gozadinos
98641c24e4
S3 storage tests
2026-04-08 14:19:10 +03:00
Yiorgis Gozadinos
2522d46304
support remote storage in skill generator
2026-04-08 14:19:10 +03:00
Yiorgis Gozadinos
343bfd7199
guard app/UI filesystem checks for remote storage
2026-04-08 14:19:09 +03:00
Yiorgis Gozadinos
110accb8e7
Add ConnectionMode enum (LOCAL/CLOUD/OBJECT_STORAGE) and connect_lancedb() utility to support S3, GCS, Azure, and HDFS backends via storage_options.
2026-04-08 14:19:09 +03:00
Yiorgis Gozadinos
3fe953eccb
Minor fixes
2026-04-08 14:04:32 +03:00
Yiorgis Gozadinos
53445b8722
Add docling_pages column to DocumentRecord/Document for separate page image storage.
2026-04-08 14:04:32 +03:00
Yiorgis Gozadinos
b614ef19e1
switch compression from gzip to zstd, use stdlib for python >= 3.14
2026-04-08 14:04:32 +03:00
Yiorgis Gozadinos
f8db7fccb6
fix: apply config.prompts.domain_preamble in generated skills
2026-04-08 13:54:53 +03:00
Yiorgis Gozadinos
32258d4e2a
Add batching to embeddings for huge documents
2026-04-07 12:06:28 +03:00
Yiorgis Gozadinos
6fdb15e3b2
Add DocumentRepository.get_docling_data() for lazy loading docling in expand_context
2026-04-07 11:19:04 +03:00
Yiorgis Gozadinos
f2998ad0b5
add visualize_chunk test for multi-page chunks
2026-04-03 20:20:42 +03:00
Yiorgis Gozadinos
eb5db78026
clarify domain_preamble purpose
2026-04-01 13:13:52 +03:00
Yiorgis Gozadinos
c4c90b3930
Propagate domain_preamble to skill instructions and main agent preamble
2026-04-01 13:13:36 +03:00
Yiorgis Gozadinos
15d94bfe7f
replace UUIDs with readable identifiers in citation text
2026-04-01 11:44:17 +03:00
Yiorgis Gozadinos
ef6c69e9a8
Fix typos
2026-03-28 10:01:46 +02:00
Tres Seaver
c2745c987b
chore: linting
2026-03-27 14:23:55 -04:00
Tres Seaver
ed69bf4262
fix: include 'db_path'/'config' in 'extras'
...
fix: 'skills.rlm.create_skill' includes extras
Closes #329 .
Closes #330 .
2026-03-27 14:20:31 -04:00
Yiorgis Gozadinos
61a38fc0a9
Coverage for skill extras
2026-03-27 11:54:53 +02:00
Yiorgis Gozadinos
f4dd2dafc3
Use haiku.skills extras for passing utility functions
2026-03-27 11:31:10 +02:00
Yiorgis Gozadinos
a07a64a31f
enable repeat_table_header for self-contained table chunks and docling-serve parity
2026-03-26 14:02:12 +02:00
Yiorgis Gozadinos
a3a1ad9811
detect per-document failure status in docling-serve chunker
2026-03-26 14:02:11 +02:00
Yiorgis Gozadinos
1c9035ebb5
Add optional db_path and config params to generated skill create_skill()
2026-03-26 13:41:58 +02:00
Yiorgis Gozadinos
9d986421a0
add visualize_chunk to generated skills and built-in RAG skill
2026-03-26 11:41:22 +02:00
Yiorgis Gozadinos
ffc70be7b0
include SKILL.md and assets in generated skill package wheels. Add README to generated skills
2026-03-26 10:49:57 +02:00
Yiorgis Gozadinos
75b9a172cb
Minor fixes
2026-03-24 17:45:46 +02:00
Yiorgis Gozadinos
705ce80b4f
Allow all spec-compliant names
2026-03-24 17:27:56 +02:00
Yiorgis Gozadinos
7d50edea86
Fix validate_metadata layering and type annotations in _tools.py
2026-03-24 17:09:14 +02:00
Yiorgis Gozadinos
26da4a0624
Skill generator core
2026-03-24 15:44:24 +02:00
Yiorgis Gozadinos
aa9fdf051d
Remove support for structured output
2026-03-24 14:11:43 +02:00
Yiorgis Gozadinos
83ea6347b6
Fix CI failures: update tests for pydantic-ai 1.70.0 and FastMCP API changes
2026-03-24 14:02:03 +02:00
Yiorgis Gozadinos
5474465610
Fix mcp test
2026-03-24 13:36:14 +02:00
Yiorgis Gozadinos
ce320ca772
Update docling, docling-core and move to version 1.10.0 of DoclingDocument.
2026-03-23 17:34:06 +02:00
Yiorgis Gozadinos
fd327996b8
Configurable judge and reflect models for evaluations
2026-03-18 17:14:11 +02:00
Yiorgis Gozadinos
d4e34ab79f
Support for plantuml diagrams
2026-03-13 17:18:19 +02:00
Yiorgis Gozadinos
2c5128e5ba
Re-record rlm tests
2026-03-12 17:31:26 +02:00
Yiorgis Gozadinos
713e9087cc
Bump pydantic-monty to 0.0.8, remove regex external functions, update skill
2026-03-12 17:24:01 +02:00
Yiorgis Gozadinos
90fe624fa7
improve QA citation reliability via prompt and ID normalization
2026-03-12 11:50:46 +02:00
Yiorgis Gozadinos
b8c377da1e
Prevent read-only mode from creating tables in empty directories
2026-03-12 11:42:04 +02:00
Yiorgis Gozadinos
e2749ad2a6
Cap QA agent search iterations to reduce response time
2026-03-11 12:13:43 +02:00
Yiorgis Gozadinos
d460d553f3
Set repeat_table_header=False to match docling serve
2026-03-05 13:02:18 +02:00
Yiorgis Gozadinos
5e99b84308
Prevent HuggingFace network access during tests
2026-03-05 12:10:07 +02:00
Yiorgis Gozadinos
c7b03eb9ab
Strengthen weak assertions in context enhancement and converter tests
...
- Add doc_item_refs and headings assertions to test_expand_context_docling_merges_metadata
- Add page count and markdown content assertions to test_convert_pdf_with_ocr_engine
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 11:44:51 +02:00
Yiorgis Gozadinos
3c7d746d57
Strengthen search tests, remove redundant title test, relocate primary label test
...
- Strengthen test_search_returns_search_result with chunk_id, document_id, and
non-empty labels assertions
- Remove test_chunks_include_document_title (subsumed by strengthened test) and
its cassette
- Rename test_chunks_include_document_info to
test_search_chunk_includes_document_provenance; add document_title is None
assertion for untitled documents
- Move test_search_result_get_primary_label from test_context_enhancement.py to
test_search.py; rename, remove unnecessary @pytest.mark.vcr() decorator
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 11:39:45 +02:00
Yiorgis Gozadinos
f73d4f4da9
Remove stale cassette, dead vcr_cassette_dir fixtures, and unnecessary VCR decorator
2026-03-05 11:36:22 +02:00
Yiorgis Gozadinos
28e90e5a87
Auto-detect structured output mode from model profile. Remove the structured_output config field from ModelConfig.
2026-03-04 14:51:09 +02:00
Yiorgis Gozadinos
fdd7c21757
Add configurable structured output mode (tool vs native)
2026-03-04 13:35:32 +02:00
Yiorgis Gozadinos
3f02abbc70
Expose skill state metadata as module-level API
2026-03-04 11:38:00 +02:00
Yiorgis Gozadinos
c9f63b9ab6
Re-record RLM vcrs
2026-03-03 16:59:35 +02:00
Yiorgis Gozadinos
034ee27daf
Use ToolOutput for structured output.
2026-03-03 16:14:45 +02:00
Yiorgis Gozadinos
1a3ea64aa6
Remove filter parameter from search and list_documents tools
2026-03-03 11:01:58 +02:00
Yiorgis Gozadinos
b5cb2852c4
Simplify _resolve_title()
2026-02-26 10:56:28 +02:00
Yiorgis Gozadinos
41f694d377
Better exception handling
2026-02-26 08:55:53 +02:00
Yiorgis Gozadinos
49f9843db3
add generate_title(), rebuild --title-only, and --title on add
2026-02-26 08:40:07 +02:00
Yiorgis Gozadinos
ae3469b282
add automatic title generation for documents
2026-02-25 17:12:24 +02:00
Yiorgis Gozadinos
6759a2e0a5
Give regex to monty as externals
2026-02-24 13:12:56 +02:00
Yiorgis Gozadinos
1ee9747551
Catch MontyRuntimeError from Monty() constructor
2026-02-24 12:11:20 +02:00
Yiorgis Gozadinos
459fdfca71
Add get_docling_document external function to sandbox
2026-02-24 11:51:43 +02:00
Yiorgis Gozadinos
d3c6322481
Simplify sandbox with run_monty_async, replace manual ThreadPoolExecutor start/resume loop
2026-02-24 11:35:39 +02:00
Yiorgis Gozadinos
454f12b319
Update coverage
2026-02-24 09:55:45 +02:00
Yiorgis Gozadinos
017712c9b1
Update prompts & docs. Remove docker sandbox workflow
2026-02-24 09:55:45 +02:00
Yiorgis Gozadinos
c61ded1271
Replace Docker sandbox with pydantic-monty
2026-02-24 09:55:40 +02:00
Yiorgis Gozadinos
d1fdbdeb21
Refactor MCP to use proper models, test
2026-02-20 17:39:02 +02:00
Yiorgis Gozadinos
69083c8cb4
Fix stale docs
2026-02-20 16:59:58 +02:00
Yiorgis Gozadinos
a1c09e1a47
Break apart RLM analysis as a separate skill
2026-02-20 16:37:15 +02:00
Yiorgis Gozadinos
37f28ea8de
Clean up stale references and dead code
2026-02-20 16:37:15 +02:00
Yiorgis Gozadinos
cb41f84615
Add tests
2026-02-20 16:36:51 +02:00
Yiorgis Gozadinos
eb9436eb2a
Remove unused conversational output mode from research graph
2026-02-20 16:36:50 +02:00
Yiorgis Gozadinos
c567842420
Rewire document filter
2026-02-20 16:36:50 +02:00
Yiorgis Gozadinos
696f8598eb
Remove get_session_context, handle it automatically in ask()
2026-02-20 16:36:49 +02:00
Yiorgis Gozadinos
a7850e2210
Assign stable index to citations. Use a strong prompt preamble for our app agents
2026-02-20 16:36:48 +02:00
Yiorgis Gozadinos
643ed20d6f
Rewrite chat TUI and app backend with haiku.skills
2026-02-20 16:36:48 +02:00
Yiorgis Gozadinos
8176103eb0
Remove agents/chat/
2026-02-20 16:36:48 +02:00
Yiorgis Gozadinos
ed89ff0fc9
Simplify tools/ — remove AG-UI state machinery, keep core toolsets
2026-02-20 16:36:48 +02:00
Yiorgis Gozadinos
524647c501
Add unified RAG skill with session context and reuse existing tools;
2026-02-20 16:36:47 +02:00
Yiorgis Gozadinos
4855051936
Add research() to client and add haiku.skills dependency, remove --deep flag and simplify app
2026-02-20 16:36:47 +02:00
Yiorgis Gozadinos
1e8d29d938
test-cover download models
2026-02-19 14:14:07 +02:00
Yiorgis Gozadinos
a870052ee9
Fix coverage
2026-02-17 13:22:23 +02:00
Yiorgis Gozadinos
f4735667df
emit StateDeltaEvent with client-aware baseline
2026-02-17 12:24:09 +02:00
Yiorgis Gozadinos
9685bd533b
Expand ~ in paths
2026-02-16 17:21:35 +02:00
Yiorgis Gozadinos
7ff2123806
Introduce toolkit to reduce toolset creation ceremony
2026-02-16 11:51:02 +02:00
Yiorgis Gozadinos
72c8f6e1b1
Additional tests
2026-02-13 18:08:46 +02:00
Yiorgis Gozadinos
84c48e1541
Add preamble parameter to chat agent and citations_history to ChatSessionState
2026-02-13 16:59:21 +02:00
Yiorgis Gozadinos
969c64d106
Add citations_history to SessionState for unified citation rendering between search and ask
2026-02-13 16:21:50 +02:00
Yiorgis Gozadinos
c0ed93da2d
Expand tests
2026-02-13 14:34:24 +02:00
Yiorgis Gozadinos
b64d9721bb
Mark with pragma no cover areas that are just wiring. Consolidate tests and bring coverage to 100%
2026-02-13 11:56:37 +02:00
Yiorgis Gozadinos
5f6d9e9812
handle state_key duplication between deps and ToolContext
2026-02-13 10:23:12 +02:00
Yiorgis Gozadinos
a5b8e3be7e
Add AgentDeps and prepare_context for custom agent DX
2026-02-12 17:37:37 +02:00
Yiorgis Gozadinos
8f180f707b
Decouple QA toolset from chat agent, add ToolContext state methods
2026-02-12 17:27:47 +02:00
Yiorgis Gozadinos
0c6d73409d
Move SessionContext from agents/chat/state.py to tools/session.py, change QASessionState.session_context to use it
2026-02-12 17:13:01 +02:00
Yiorgis Gozadinos
05ebd781d4
Move client and tool_context from toolset factories to RunContext.deps
2026-02-12 15:50:46 +02:00
Yiorgis Gozadinos
58c2bd49ea
Clean up server vs client session setting priorities
2026-02-11 16:54:00 +02:00
Yiorgis Gozadinos
0434cd068b
Simplify TUI app
2026-02-11 15:10:50 +02:00
Yiorgis Gozadinos
9e63ff1ff7
Remove session_id from state layer, remove module-level caches
2026-02-11 14:55:53 +02:00
Yiorgis Gozadinos
d88f2f003a
Remove incoming_* fields, simplify delta computation
2026-02-11 14:31:37 +02:00
Yiorgis Gozadinos
d67df09cce
Introduce ToolContextCache
2026-02-11 14:18:26 +02:00
Yiorgis Gozadinos
c916356a42
Clean up toolset exports, simplify update_session_context(), fix health check
2026-02-11 12:46:50 +02:00
Yiorgis Gozadinos
87bcb7a5dc
Extract run_qa_core() from ask closure in QA toolset. Remove redundant tests and cassettes for OpenAI and Anthropic QA tools, as they are now tested in the core function tests.
2026-02-11 11:38:34 +02:00
Yiorgis Gozadinos
2cc4a8a88f
Fix VCR cassette
2026-02-10 18:01:13 +02:00
Yiorgis Gozadinos
a592a04031
Removed unused accumulator states
2026-02-10 16:15:30 +02:00
Yiorgis Gozadinos
cf4083d2d7
Add multi-turn integration test with initial context and summarization
2026-02-10 14:55:12 +02:00
Yiorgis Gozadinos
ce3c3e7ed5
Add feature-based chat agent & prompt composition
2026-02-10 14:38:14 +02:00
Yiorgis Gozadinos
da47e3e345
Unify get_typed() into get() with optional type parameter
...
Fix find_document regression
2026-02-10 14:38:14 +02:00
Yiorgis Gozadinos
0dd181356e
Update vcr
2026-02-10 14:38:14 +02:00
Yiorgis Gozadinos
bd3b26f78b
Extract get_session_filter helper, remove dead code and duplicate tests
2026-02-10 14:38:13 +02:00
Yiorgis Gozadinos
df57b0cf43
Remove SearchAgent & friends, consolidate duplicate models
2026-02-10 14:38:13 +02:00
Yiorgis Gozadinos
84b320765a
Fix analysis tool to use docker sandbox
2026-02-10 14:38:13 +02:00
Yiorgis Gozadinos
3ed9cbb7d3
Use the tools inside the chat agent.
2026-02-10 14:38:12 +02:00
Yiorgis Gozadinos
2be3389222
DocumentToolset, QAToolset, AnalysisToolset
2026-02-10 14:38:12 +02:00
Yiorgis Gozadinos
2f229f91e1
Create SearchToolset, refactor QA Agent to use it
2026-02-10 14:38:12 +02:00
Yiorgis Gozadinos
a3863882cd
Introduce tool module & ToolContext to save state
2026-02-10 14:38:12 +02:00
Yiorgis Gozadinos
a7b79c433d
TUI now generates a UUID session_id on mount and on chat clear
2026-02-10 14:21:22 +02:00
Yiorgis Gozadinos
d1a9439500
Fix session_id not persisting across AG-UI requests
2026-02-10 13:14:05 +02:00
Yiorgis Gozadinos
8c2a101a8a
Fix out-of-memory in list_documents by adding column projection
2026-02-06 14:11:36 +01:00
Yiorgis Gozadinos
20414ed959
Additional tests
2026-02-06 12:07:21 +01:00
Yiorgis Gozadinos
720f697a48
Cleanup
2026-02-06 12:07:21 +01:00
Yiorgis Gozadinos
f8ec511250
Return consolidated program from RLM agent instead of execution history
2026-02-06 12:07:20 +01:00
Yiorgis Gozadinos
dc83dde9ab
Make test_client_resolve_document not require embeddings
2026-02-06 12:07:20 +01:00
Yiorgis Gozadinos
122da834d7
Use resolve_document()
2026-02-06 12:07:19 +01:00
Yiorgis Gozadinos
764b62ee20
Fix tests
2026-02-06 12:07:19 +01:00
Yiorgis Gozadinos
b426827fc2
Docker-based sandbox. Reused within a single rlm() call for latency
2026-02-06 12:07:19 +01:00
Yiorgis Gozadinos
4241a4b09e
Security fixes for RLM. Fix type() builtin, AST validation for dict key access, sql injection
2026-02-06 12:07:19 +01:00
Yiorgis Gozadinos
fb6bbca124
Remove analyze tool from chat agent, not yet ready for integration
2026-02-06 12:07:19 +01:00
Yiorgis Gozadinos
9a480cee90
Return program in chat agent analyze;
2026-02-06 12:07:18 +01:00
Yiorgis Gozadinos
ed570633cd
Basic integration of RLM with chat agent
2026-02-06 12:07:18 +01:00
Yiorgis Gozadinos
198a8d5a88
Add pre-loaded documents support and improve RLM test coverage
2026-02-06 12:07:04 +01:00
Yiorgis Gozadinos
fa4d7731d7
Replace ask() with llm(). Add and document the programs written in tests
2026-02-06 12:07:03 +01:00
Yiorgis Gozadinos
5e7832a6ea
Fix REPL for docling document, add test
2026-02-06 12:07:03 +01:00
Yiorgis Gozadinos
5e5fc4a7d9
Integration tests for RLM
2026-02-06 12:07:03 +01:00
Yiorgis Gozadinos
b68b2393e9
Integrate with client, cli, app, mcp
2026-02-06 12:07:03 +01:00
Yiorgis Gozadinos
75de81accf
RLM agent
2026-02-06 12:07:03 +01:00
Yiorgis Gozadinos
ad416cac84
RLM sandbox environment
2026-02-06 12:07:02 +01:00
Yiorgis Gozadinos
b22ac33dde
Pass OCR options from conversion_options to docling-serve chunker
2026-02-03 11:34:46 +02:00
Yiorgis Gozadinos
ac76ecee86
Remove dead code from iterative research planning refactor
2026-01-31 10:51:34 +02:00
Yiorgis Gozadinos
57d5b1bde5
Simplify research planning: remove gather_context, always use planner
2026-01-30 22:32:08 +02:00
Yiorgis Gozadinos
109f770a2a
Refactor research graph to iterative planning approach
2026-01-30 20:46:29 +02:00
Yiorgis Gozadinos
77894b8c35
Clena citation handling now that we handle the total state
2026-01-29 12:12:48 +02:00
Yiorgis Gozadinos
202df368a0
TUI now syncs full session state from AG-UI events
2026-01-29 12:05:46 +02:00
Yiorgis Gozadinos
cbd94f6cc9
Always use state deltas instead of conditional snapshot/delta logic
2026-01-28 17:03:18 +02:00
Yiorgis Gozadinos
57fd08d600
Revert "Synthesis steps now select only relevant citations instead of including all"
2026-01-28 16:00:27 +02:00
Yiorgis Gozadinos
e2158c7dad
Handle snapshot deltas in TUI
2026-01-28 15:23:56 +02:00
Yiorgis Gozadinos
3741274c6c
Update ty and fix
2026-01-28 14:24:16 +02:00
Yiorgis Gozadinos
639accc923
Update tests for state deltas
2026-01-28 14:19:42 +02:00
Yiorgis Gozadinos
c27dde2497
Send state deltas updates instead of full state snapshots
2026-01-28 14:06:29 +02:00
Yiorgis Gozadinos
1bc2b5f05a
Add vcr test
2026-01-27 17:28:50 +02:00
Yiorgis Gozadinos
5bfd6db984
Test count_documents
2026-01-27 17:17:05 +02:00
Yiorgis Gozadinos
cca03dbe61
Give the conversational agent a list documents and a summarize tools
2026-01-27 16:39:48 +02:00
Yiorgis Gozadinos
8a587ec554
Synthesis steps now select only relevant citations instead of including all
2026-01-27 15:56:29 +02:00
Yiorgis Gozadinos
09aa94bfe5
Fix datetime JSON serialization in AG-UI StateSnapshotEvent
2026-01-27 11:05:01 +02:00
Yiorgis Gozadinos
ee3cb5bd87
Allow initial_context to be set for the chat agent
2026-01-27 10:38:18 +02:00
Yiorgis Gozadinos
6f9bc369dc
Improve coverage
2026-01-26 16:43:12 +02:00
Yiorgis Gozadinos
5976cebe8c
Concolidate tests
2026-01-26 16:43:12 +02:00
Yiorgis Gozadinos
9ce711db29
Update tests
2026-01-26 16:43:11 +02:00
Yiorgis Gozadinos
a7d7a09c22
Integrate recall functionality into ask tool
2026-01-26 16:43:11 +02:00
Yiorgis Gozadinos
7835509213
Fix tui test that still wanted to use shortcuts
2026-01-26 16:43:11 +02:00
Yiorgis Gozadinos
77647b08bc
Recall tool in chat agent
2026-01-26 16:42:41 +02:00
Yiorgis Gozadinos
8f35033a42
Update search(), ask() to use get_or_assign_index()
2026-01-26 16:42:41 +02:00
Yiorgis Gozadinos
30e9ff3038
Use session document filter in agent, combine with document name filter if necessary
2026-01-26 16:42:40 +02:00
Yiorgis Gozadinos
5b14038dc5
Add document_filter to ChatSessionState for session-level filtering
2026-01-26 16:42:40 +02:00
Yiorgis Gozadinos
0f0c3a076f
minor fixes
2026-01-26 16:42:39 +02:00
Yiorgis Gozadinos
ff92ee8271
Skip gather_context when session context exists
2026-01-26 16:42:39 +02:00
Yiorgis Gozadinos
5aabae4d06
Remove background_context & simplify
2026-01-26 16:42:39 +02:00
Yiorgis Gozadinos
9d71ccb213
Move session context to agent, make AGUI work
2026-01-26 16:42:39 +02:00
Yiorgis Gozadinos
93737852a8
Use previous context in summarization
2026-01-26 16:42:38 +02:00
Yiorgis Gozadinos
9ed8773672
Unify Citation class and context formatting between chat and research agents
2026-01-26 16:42:38 +02:00
Yiorgis Gozadinos
74eac57ffa
Remove qa_history ranking in favor of SessionContext, planner can skip searching if context adequate
2026-01-26 16:42:38 +02:00
Yiorgis Gozadinos
8441516a73
Tests, widget to show context in tui
2026-01-26 16:41:13 +02:00
Yiorgis Gozadinos
aaddf4a5a9
Dynamic session context to be used in the conversational agent
2026-01-26 16:41:12 +02:00
Yiorgis Gozadinos
b96e5a3be1
Additional prompts needing adapting. Missing cassettes.
2026-01-21 15:17:56 +02:00
Yiorgis Gozadinos
7f51c63ad7
Search results now show rank position instead of raw scores. Consolidate cassettes
2026-01-21 14:54:15 +02:00
Yiorgis Gozadinos
ce95dc47a5
Do not run coverage on download-models & code that requires integration tests
2026-01-21 11:09:35 +02:00
Yiorgis Gozadinos
36a675e1bb
Add jina, mxbai and sentence-transformers to download-models when used
2026-01-21 10:53:45 +02:00
Yiorgis Gozadinos
7ff014684a
Support for jina reranker, both local and API
2026-01-21 10:39:21 +02:00
Yiorgis Gozadinos
b8cf8f5198
Remove reranker cache
2026-01-20 17:26:24 +02:00
Yiorgis Gozadinos
62d35d2907
Add ocr_engine field to ConversionOptions
2026-01-20 13:41:43 +02:00
Yiorgis Gozadinos
f05159859c
Additional fixes to remove type ignores
2026-01-19 16:00:18 +02:00
Yiorgis Gozadinos
5e55c0df54
replace pyright with ty type checker
2026-01-19 15:50:14 +02:00
Yiorgis Gozadinos
f582552f6a
Add tests for migration scenarios
2026-01-19 14:12:51 +02:00
Yiorgis Gozadinos
8b2cc19288
Fix tests
2026-01-19 13:47:20 +02:00
Yiorgis Gozadinos
1316c89135
docs
2026-01-19 13:30:17 +02:00
Yiorgis Gozadinos
5464d24483
require explicit migrate command for database migrations
2026-01-19 13:22:09 +02:00
Yiorgis Gozadinos
bdfc6b87e7
Rename initial_context to background_context
2026-01-16 15:03:42 +02:00
Yiorgis Gozadinos
2054450142
ChatDeps implements StateHandler protocol for proper AG-UI state management
2026-01-16 15:03:41 +02:00
Yiorgis Gozadinos
18362f01c2
Pass context for CLI/app
2026-01-16 15:03:06 +02:00
Yiorgis Gozadinos
d82e1f95c1
Optimize context prompts
2026-01-16 15:03:05 +02:00
Yiorgis Gozadinos
dff489f75f
Add initial_context support to chat agent
2026-01-16 15:03:05 +02:00
Yiorgis Gozadinos
7639c2915e
Add AGUI_STATE_KEY for namespaced AG-UI state emission
2026-01-15 15:46:37 +02:00
Yiorgis Gozadinos
e0da58bb6c
Add tests for settings validation and app operations
2026-01-15 10:46:29 +02:00
Yiorgis Gozadinos
affffc1013
Extract get_package_versions() for info & modals
2026-01-14 18:24:41 +02:00
Yiorgis Gozadinos
fc1ea82cb1
Display on info pydantic-ai and docling-document schema version
2026-01-14 18:14:53 +02:00
Yiorgis Gozadinos
8bdfbe526c
Fix embed-only rebuild with changed vector dimensions
...
When a database was created with one embedding model and rebuild
--embed-only was run with a different model, it failed with a
vector dimension validation error.
- Store reads stored vector_dim when opening existing databases
- _rebuild_embed_only recreates chunks table to handle dimension changes
- Add test for rebuild with changed vector dimensions
2026-01-14 17:42:28 +02:00
Yiorgis Gozadinos
bff613b7dc
Better test coverage
2026-01-14 17:12:33 +02:00
Yiorgis Gozadinos
11f7f02262
Add option to namespace state key as a "feature" for ag-ui apps that maintain their own state
2026-01-14 14:21:08 +02:00
Yiorgis Gozadinos
929c29250e
Additional tests for page & picture images for local and docling-serve
2026-01-14 12:48:13 +02:00
Yiorgis Gozadinos
447e94c5db
Config options for generating page images
2026-01-14 11:55:08 +02:00
Yiorgis Gozadinos
98b3d114b3
Update to docling-document 1.9.0
2026-01-13 19:20:27 +02:00
Yiorgis Gozadinos
c9cbf04cc8
Reverted docling from 2.67.0 to 2.65.0 to use docling-document 1.8.0
2026-01-13 18:22:58 +02:00
Yiorgis Gozadinos
525e5f9831
Fix vaccum test
2026-01-13 11:55:04 +02:00
Yiorgis Gozadinos
6b3ff5ef1e
CLI app
2026-01-13 11:31:21 +02:00
Yiorgis Gozadinos
3e66d6b21d
Make qa list a FIFO with 50 max, keep a cache of embeddings
2026-01-12 17:02:23 +02:00
Yiorgis Gozadinos
ce326d80ff
Disable ocr in tests previously marked as integration
2026-01-12 16:19:25 +02:00
Yiorgis Gozadinos
52363639a6
Remove integration marker from tests that have vcr
2026-01-12 16:03:05 +02:00
Yiorgis Gozadinos
51836a1c55
Add tests for chat agent & friends
2026-01-12 16:00:07 +02:00
Yiorgis Gozadinos
e4a7d86348
Rank q/a history with respect to cosine similarity to new queries. Adapt the chat agent to only pass relevant q/as
2026-01-12 14:15:36 +02:00
Yiorgis Gozadinos
a9ed178a90
Research graph test cassette
2026-01-12 12:43:51 +02:00
Yiorgis Gozadinos
7cc561d1db
Refactor to make agents a top-level module. Bring in the conversational agent from the app
2026-01-12 12:37:08 +02:00
Yiorgis Gozadinos
bb61e8fab6
Remove custom AG-UI infrastructure in favor of pydantic-ai native support
2026-01-12 12:37:07 +02:00
Yiorgis Gozadinos
9c4fd08c47
Update client serialization for compressed docling documents
2026-01-11 09:23:56 +02:00
Yiorgis Gozadinos
afc5b02285
Update schema to store docling_document as compressed bytes
...
- Change DocumentRecord.docling_document_json (str) to docling_document (bytes)
- Use large_binary Arrow type (64-bit offsets) to avoid 2GB column limit
- Decompress in Document.get_docling_document() using gzip
- Update DocumentRepository field mappings
2026-01-10 15:17:27 +02:00
Yiorgis Gozadinos
face6f95bc
compression utils
2026-01-10 15:11:58 +02:00
Yiorgis Gozadinos
3603b00513
Fix base64 images leaking into expanded search results
...
PictureItem.export_to_markdown() defaults to ImageRefMode.EMBEDDED,
which embeds base64 image data. When _extract_item_text() called this
method during context expansion, base64 data would leak into results.
Now explicitly handles PictureItem with ImageRefMode.PLACEHOLDER to
prevent base64 while still including VLM descriptions and captions.
2026-01-08 18:42:58 +02:00
Yiorgis Gozadinos
1616891c40
Fix non-reasoning OpenAI models that do not support reasoning config
2026-01-07 18:47:31 +02:00
Yiorgis Gozadinos
f861664656
Extract shared DoclingServeClient for async workflow & use it for VLM support, chunking, converting
2026-01-07 11:09:23 +02:00
Yiorgis Gozadinos
3b7fd440cc
End-to-end test for VLM annotation
2026-01-07 11:09:23 +02:00
Yiorgis Gozadinos
769e0d4746
Update picture description prompt, move its config under prompts
2026-01-07 11:09:23 +02:00
Yiorgis Gozadinos
3c4116397d
Add VLM picture description support for image handling
2026-01-07 11:09:22 +02:00
Yiorgis Gozadinos
5b34b9ed0e
Track potentially more than one running step in agui emitter
2026-01-05 10:41:35 +02:00
Yiorgis Gozadinos
679d0bfafd
Merge pull request #212 from ggozad/feat/contextualize-fts
...
Add additional context (headers/sections etc) to the FTS index
2025-12-29 18:42:19 +02:00
Yiorgis Gozadinos
1dc40abab3
get_reranker() tests
2025-12-29 17:13:14 +02:00
Yiorgis Gozadinos
22f22d2181
Add vcr to tests
2025-12-29 14:59:15 +02:00
Yiorgis Gozadinos
c9cb005d07
Use FTS on contextualized text
2025-12-29 14:50:07 +02:00
Yiorgis Gozadinos
1609582c1f
Move cassettes to default location, add development.md to docs
2025-12-29 14:13:25 +02:00
Yiorgis Gozadinos
bfae711a17
Do not run test requiring docling OCR in CI
2025-12-29 13:44:57 +02:00
Yiorgis Gozadinos
1e9a10a235
Record cassettes for embedder, ignore huggingface while recording
2025-12-29 13:23:53 +02:00
Yiorgis Gozadinos
5844d07c5d
Add lint github action
2025-12-27 18:50:57 +02:00
Yiorgis Gozadinos
b64a2b08ee
Commit dataset for CI and github workflow
2025-12-26 19:30:26 +02:00
Yiorgis Gozadinos
0da8ba97c4
Docling-serve cassettes
2025-12-26 18:59:46 +02:00
Yiorgis Gozadinos
c3a3b4a5b4
Extended VCR cassette recording to embedder, client, research graph, and search filter tests
2025-12-26 18:53:17 +02:00
Yiorgis Gozadinos
4a82e47d03
Use cassette to record and reply llms in qa tests
2025-12-26 15:41:11 +02:00
Yiorgis Gozadinos
958fe43f2a
Remove vllm and lmstudio custom configs, they can now use the openai base
2025-12-26 12:02:55 +02:00
Yiorgis Gozadinos
3852e961b9
Update tests and client for explicit embed_query/embed_documents API
2025-12-26 11:26:56 +02:00
Yiorgis Gozadinos
13cc453e9d
Make tests ignore haiku.rag.yaml
2025-12-19 12:35:06 +02:00
Yiorgis Gozadinos
716cf420be
Tests for history
2025-12-19 12:03:19 +02:00
Yiorgis Gozadinos
1e5eebfbf0
Checkout version logic and datetime utils
2025-12-19 12:03:16 +02:00
Yiorgis Gozadinos
8c0adb47e1
Merge branch 'main' into feat/read-only-db
2025-12-19 12:01:36 +02:00
Yiorgis Gozadinos
090be293d2
Clarify folder mounts in docker docs, check monitor paths exist in FileWatcher
2025-12-19 11:58:08 +02:00
Yiorgis Gozadinos
98727ad080
Add global --read-only mode in CLI
2025-12-18 16:43:49 +02:00
Yiorgis Gozadinos
1a8f72f99a
Add is_read_only property to Store. Guard all write operations in repositories
2025-12-18 15:55:24 +02:00
Yiorgis Gozadinos
a1f5d944ba
Replace custom event classes with ag_ui.core types
2025-12-18 12:07:37 +02:00
Yiorgis Gozadinos
ff13be1210
Human-in-the-loop in ag-ui-example
2025-12-18 11:48:34 +02:00
Yiorgis Gozadinos
9818cac4eb
Fix agui tool call args being a json string
2025-12-18 11:48:34 +02:00
Yiorgis Gozadinos
218126de8d
Interactive research agent through AGUI client-side tool calls in CLI
2025-12-18 11:48:34 +02:00
Yiorgis Gozadinos
45de9bf0d5
Flatten graph structure, simplify
2025-12-18 11:41:57 +02:00
Yiorgis Gozadinos
f0a7abd953
Remove deep qa graph, everything now uses the simplified research graph
2025-12-18 11:41:10 +02:00
Yiorgis Gozadinos
50b7fb4461
Chunkers now set chunk.order directly
2025-12-18 11:35:48 +02:00
Yiorgis Gozadinos
3149552a61
Add 'plain' format and fallback for text conversion
2025-12-12 18:11:25 +02:00
Yiorgis Gozadinos
5c4799164c
Escape when getting by URI
2025-12-12 10:56:37 +02:00
Yiorgis Gozadinos
f25a949758
Fix tests
2025-12-11 16:05:49 +02:00
Yiorgis Gozadinos
448d00f9b2
Add pagination to chunk repo's get_by_document_id
2025-12-11 15:38:19 +02:00
Yiorgis Gozadinos
5f4f5f70f0
Search filter in qa & research graphs
2025-12-11 14:37:43 +02:00
Yiorgis Gozadinos
2161727716
Add auto_vacuum config option to control automatic vacuuming
2025-12-10 11:42:14 +02:00
Yiorgis Gozadinos
ed809759d5
Fix mxbai rerank default model
2025-12-10 11:39:33 +02:00
Yiorgis Gozadinos
68457f251e
Do not generate base64 images by default
2025-12-09 18:42:56 +02:00
Yiorgis Gozadinos
2e06cf5277
Delete unecessary tests
2025-12-09 18:33:13 +02:00
Yiorgis Gozadinos
156bba3359
Infinite scroll lazy load document list in inspector
2025-12-09 17:48:27 +02:00
Yiorgis Gozadinos
9e16e8dc98
Fix text_context_radius references
2025-12-09 17:42:18 +02:00
Yiorgis Gozadinos
802f058205
Move search related config under SearchConfig
2025-12-09 12:28:28 +02:00
Yiorgis Gozadinos
4da50873bd
Make search limit configurable
2025-12-09 11:46:43 +02:00
Yiorgis Gozadinos
a56e1ba67c
Simplify import_document, update_document
2025-12-08 18:19:12 +02:00
Yiorgis Gozadinos
06b4f6a224
Add format parameter for text-to-DoclingDocument conversion
2025-12-08 15:56:21 +02:00
Yiorgis Gozadinos
1b14a4643d
Remove unused bounding box calculations
2025-12-08 15:56:21 +02:00
Yiorgis Gozadinos
9a5f8e4368
Add type-aware context expansion for search results
2025-12-08 15:56:21 +02:00
Yiorgis Gozadinos
4f0f214f26
Remove unecessary tests, add no coverage pragmas where appropriate
2025-12-08 15:56:02 +02:00
Yiorgis Gozadinos
2572125804
Move embedding logic from ChunkRepository to client._ensure_chunks_embedded()
2025-12-08 15:56:02 +02:00
Yiorgis Gozadinos
e97d235c98
Unify update_document, update_document_fields
2025-12-08 15:56:02 +02:00
Yiorgis Gozadinos
16ba3a9962
Remove create_chunks_for_document from repositories
2025-12-08 15:56:01 +02:00
Yiorgis Gozadinos
17c7147a49
Remove pre-processor, no longer needed
2025-12-08 15:56:01 +02:00
Yiorgis Gozadinos
69b1afa534
Remove _create_and_chunk & _update_and_rechunk, keep storage independent of chunking
2025-12-08 15:55:31 +02:00
Yiorgis Gozadinos
e299aed788
contextualize() and embed_chunks() utilities in embeddings
2025-12-08 15:55:30 +02:00
Yiorgis Gozadinos
4fbb4609b6
HaikuRag.chunk() utility method
2025-12-08 15:55:30 +02:00
Yiorgis Gozadinos
ace915473c
HaikuRag.convert() utility method
2025-12-08 15:55:30 +02:00
Yiorgis Gozadinos
ab57c55eaa
Drop ChunkWithMetadata, use good old Chunk
2025-12-08 15:55:30 +02:00
Yiorgis Gozadinos
33e6a36290
Make document import/update handling consistent for DoclingDocument
2025-12-08 15:55:29 +02:00
Yiorgis Gozadinos
60ab864fc1
Add docling_document_json to update_document_fields() and
2025-12-08 15:55:29 +02:00
Yiorgis Gozadinos
8e30f67266
Introduce import_document(), remove chunks from create_document()
2025-12-08 15:55:29 +02:00
Yiorgis Gozadinos
de14bb9f90
Avoid citation meta inside LLM context
2025-12-08 15:55:28 +02:00
Yiorgis Gozadinos
a57203065a
Fix test
2025-12-08 15:55:28 +02:00
Yiorgis Gozadinos
910d382748
Introduce visualize_chunk(), refactor inspector to use it
2025-12-08 15:55:27 +02:00
Yiorgis Gozadinos
b5bd56e110
Fix after rebase
2025-12-08 15:55:27 +02:00
Yiorgis Gozadinos
d808c6c425
Simplify citations in qa & graph agents
2025-12-08 15:55:27 +02:00
Yiorgis Gozadinos
16a97cc140
Properly expand context in the case of docling documents and merge chunks and meta
2025-12-08 15:55:26 +02:00
Yiorgis Gozadinos
c69b934eac
Incorporate additional docling meta in search(), expand_context() and relevant qa/research agents
2025-12-08 15:54:56 +02:00
Yiorgis Gozadinos
d267b2c433
LRU cache for DoclingDocument
2025-12-08 15:54:31 +02:00
Yiorgis Gozadinos
a5d8af07e9
Resolve DoclingDocument
2025-12-08 15:54:31 +02:00
Yiorgis Gozadinos
84aa46a10b
Update rebuild to handle DoclingDocument json
2025-12-08 15:54:31 +02:00
Yiorgis Gozadinos
ad4e79ab5d
Store DoclingDocument json
2025-12-08 15:54:31 +02:00
Yiorgis Gozadinos
343272d6fb
Chunkers return chunks with metadata, i.e. (refs, labels, headings, page_numbers)
2025-12-08 15:54:31 +02:00
Yiorgis Gozadinos
44e8d7b340
Update Document & Chunk schemas to include DoclingDocument references.
2025-12-08 15:54:30 +02:00
Yiorgis Gozadinos
33b254ae3d
Always upgrade database on access. Explicitly create db by running init or HaikuRAG(path, create=True)
2025-12-02 16:49:55 +02:00
Yiorgis Gozadinos
3525fae625
Use EmbeddingModelConfig similar to ModelConfig for embeddings
2025-12-02 11:55:31 +02:00
Yiorgis Gozadinos
e548a51ff7
Optimized rebuild --embed-only to use batch updates via LanceDB merge_insert instead of individual chunk updates
2025-12-01 17:53:27 +02:00
Yiorgis Gozadinos
88a4edb537
--embed-only, --rechunk options in rebuild command
2025-11-28 10:11:52 +02:00
Yiorgis Gozadinos
51104ddb5a
Use httpx for docling-serve
2025-11-27 15:06:13 +02:00
Yiorgis Gozadinos
e40c352026
Switch from requests to httpx.AsyncClient for docling-serve
2025-11-26 18:00:29 +02:00
Yiorgis Gozadinos
14bdb7cb27
async versions for convert_file() convert_text()
2025-11-26 17:46:25 +02:00
Yiorgis Gozadinos
0303e6a8cd
Support LMStudio
2025-11-26 10:31:40 +02:00
Yiorgis Gozadinos
283c44867d
Generate the config from the AppConfig model directly, add tests
2025-11-26 10:17:22 +02:00
Yiorgis Gozadinos
2c554a9350
Do not use private methods in tests
2025-11-25 14:19:28 +02:00
Yiorgis Gozadinos
e83978f88b
Revert embeddings to use flat config
2025-11-25 12:51:58 +02:00
Yiorgis Gozadinos
a9701616c8
Rename model to name under model
2025-11-25 12:28:43 +02:00
Yiorgis Gozadinos
1bb7b6d5bd
Add support for per-model configuration settings including thinking, temperature and max_tokens
2025-11-25 12:14:24 +02:00
Yiorgis Gozadinos
13d3a366e8
Enhanced ActivitySnapshot events with richer structured data
2025-11-24 16:18:27 +02:00
Yiorgis Gozadinos
b5892699a0
Use Mean Reciprocal Rank for single document evaluation as metric. Use Mean Average Precision for variable document evaluation as metric
2025-11-24 14:49:30 +02:00
Yiorgis Gozadinos
89a2668c25
inspector command that runs a textual app to browse documents and chunks in the database
2025-11-21 16:48:34 +02:00
Yiorgis Gozadinos
8c02e865c7
Change default embedding model to qwen3-embedding:4b
2025-11-21 16:30:41 +02:00
Yiorgis Gozadinos
2f54ee7d59
Replace allow_create with cleaner read_only. Elaborate on the test_info tests
2025-11-21 14:37:33 +02:00
Yiorgis Gozadinos
c45d507213
Allow custom config when building research/deep ask graphs. Closes #149
2025-11-21 12:37:41 +02:00
Yiorgis Gozadinos
5c4a32f1c8
Fix ACTIVITY_SNAPSHOT payloads. Closes #150
2025-11-21 12:27:54 +02:00
Yiorgis Gozadinos
5089ea4203
New update_document_fields() method for partial document updates
2025-11-19 11:37:36 +02:00
Yiorgis Gozadinos
0bb3f4301c
Additional options for document conversion with docling
2025-11-18 15:44:04 +02:00
Yiorgis Gozadinos
81b7c7d9d1
Tests for docling-serve chunker
2025-11-17 13:05:06 +02:00
Yiorgis Gozadinos
75cbdb47a8
Add chunker configuration options
...
- Add `chunker_type` config field to choose between "hybrid" (default) and "hierarchical" chunking strategies
- Add `chunking_merge_peers` config field for HybridChunker (default: true)
- Add `chunking_use_markdown_tables` config field to control table serialization format (default: false, matching docling's default)
2025-11-17 13:05:06 +02:00
Yiorgis Gozadinos
de5bb117fe
Chunker abstraction
2025-11-17 13:05:06 +02:00
Yiorgis Gozadinos
541552215e
Switch to using HuggingFace tokenizers
2025-11-17 13:05:05 +02:00
Yiorgis Gozadinos
fe7d0c5c24
Implement docling-serve converter
2025-11-17 13:05:05 +02:00
Yiorgis Gozadinos
7ba1c2376e
Introduce converters for supporting more than local docling document conversion. Transform existing FileReader and utils to "docling-local" converter
2025-11-17 13:05:05 +02:00
Yiorgis Gozadinos
4599dd1481
Drop disable_auto_create flag, simply create only on write operations
2025-11-13 13:53:11 +02:00
Yiorgis Gozadinos
4a623934b2
Log additional ag-ui events in the cli renderer
2025-11-13 13:22:52 +02:00
Yiorgis Gozadinos
68d1127e46
Compute and emit state deltas instead of full state snapshots by default
2025-11-13 13:22:52 +02:00
Yiorgis Gozadinos
032625b0bb
Refactor everything graph-related under the graph module
2025-11-13 13:22:03 +02:00
Yiorgis Gozadinos
8f0597e89e
Update deep ask graph
2025-11-13 13:22:03 +02:00
Yiorgis Gozadinos
dccef431b0
Update tests
2025-11-13 13:22:02 +02:00
Yiorgis Gozadinos
908296e155
Do not create unecessary DoclingDocument when chunks are provided. Rename private _create_with_docling & _update_with_docling to _create_and_chunk & _update_and_rechunk
2025-11-13 13:16:15 +02:00
Yiorgis Gozadinos
b6650d0486
Introduce delete_orphans in monitor (default=false) to delete db entries that do not resolve in the filesystem
2025-11-07 14:40:13 +02:00
Yiorgis Gozadinos
31713e5fb6
Properly skip (and log as such) documents without changing updated_at when the md5 hash is unchanged
2025-11-07 14:00:05 +02:00
Yiorgis Gozadinos
9ee64a33e0
Remove A2A from haiku.rag, turn it into an example
2025-11-07 13:31:51 +02:00
Yiorgis Gozadinos
5d88e3b87f
Fix CLI test mocks
2025-11-07 11:52:15 +02:00
Yiorgis Gozadinos
0b696d9629
Remove deprecated use of env variables for configuration
2025-11-07 10:54:32 +02:00
Yiorgis Gozadinos
782fbafb3d
Make graph settings part of config for both deep ask and research graphs
2025-11-06 14:31:22 +02:00
Yiorgis Gozadinos
38861da549
Go back and separate common patters in graph_common
2025-11-06 11:02:32 +02:00
Yiorgis Gozadinos
9075dac23a
Remove graph common and move its content to deep QA, research.
2025-11-06 11:02:32 +02:00
Yiorgis Gozadinos
bc71ad6fb0
Refactor research, deep ask to work with new beta pyndtic AI graph
2025-11-06 11:02:32 +02:00
Yiorgis Gozadinos
b8bc6d9b68
Let ruff know about our package structure
2025-11-05 17:47:27 +02:00
Yiorgis Gozadinos
1f22f74e1a
Add filtering to document listing in CLI/client
2025-11-04 16:02:58 +02:00
Yiorgis Gozadinos
d19d2b7f00
Fix tests
2025-10-31 12:50:08 +02:00
Yiorgis Gozadinos
5c7c79397c
Merge pull request #125 from ggozad/feat/filtering
...
Filtered searches
2025-10-30 14:28:42 +02:00
Yiorgis Gozadinos
6e0587c40e
Merge pull request #124 from ggozad/fix/add-src-monitor-filter
...
Apply configured include/exclude filters when using CLI's add-src to add a directory
2025-10-30 14:27:00 +02:00
Yiorgis Gozadinos
2f00686605
Support for zero entropy reranker
2025-10-30 13:36:44 +02:00
Yiorgis Gozadinos
7d57fd6c97
Add filter param to search(). When filtering, we search in two steps: First filter documents, then search on the chunks with document_id IN the filtered documents
2025-10-30 13:03:23 +02:00
Yiorgis Gozadinos
79d3559f15
Apply configured include/exclude filters when using CLIs add-src to add a directory recursively
2025-10-29 14:55:00 +02:00
Yiorgis Gozadinos
f9b6894974
Fix info to not use old .env settings
2025-10-29 13:31:54 +02:00
Yiorgis Gozadinos
5a7d90ce9f
Change default location for config from XDG statndatd to use the platform-specific folder we use for the db as well
2025-10-29 11:50:30 +02:00
Yiorgis Gozadinos
ad1ee52a27
Move monitor config in its own section
2025-10-29 11:23:56 +02:00
Yiorgis Gozadinos
987ddab683
Tests for filtering with pathspec
2025-10-29 10:39:00 +02:00
Yiorgis Gozadinos
cabb7748f5
Filtering based on pathspec
2025-10-29 10:27:16 +02:00
Yiorgis Gozadinos
a15f1d8cf5
Use pathspec for monitor filtering
2025-10-29 10:13:53 +02:00
Yiorgis Gozadinos
e11a5128f9
Pass config to embedders
2025-10-28 09:15:08 +02:00
Yiorgis Gozadinos
4cc25407ef
Properly skip a2a tests if fasta2a not installed
2025-10-27 11:28:35 +02:00
Yiorgis Gozadinos
469d993542
Remove provider API keys from config, rely on environment variables for those
2025-10-23 13:52:57 +03:00
Yiorgis Gozadinos
618b3ffd5f
Refactor config from flat to nested Pydantic models
2025-10-23 13:30:21 +03:00
Yiorgis Gozadinos
082811a846
tests for yaml configuration
2025-10-23 11:58:47 +03:00
Yiorgis Gozadinos
1cab0339ad
add-src in cli & create_document_from_source will recursively add directories
2025-10-16 09:55:50 +03:00
Yiorgis Gozadinos
7b371b96ed
Use TestModel from pydantic AI where appropriate
2025-10-14 13:27:20 +03:00
Yiorgis Gozadinos
c0691bc237
Remove list documents, make separate artifacts for q/a, search & get document
2025-10-13 18:01:24 +03:00
Yiorgis Gozadinos
1f2552bd6a
Make serve cli command run monitor, mcp or a2a independently
2025-10-13 18:01:24 +03:00
Yiorgis Gozadinos
6ea7d73eed
Remove deep q/a from a2a agent
2025-10-13 18:01:23 +03:00
Yiorgis Gozadinos
352637faa6
Refactor into own module
2025-10-13 18:01:23 +03:00
Yiorgis Gozadinos
1a88b0355a
deep q/a skill and skill selection
2025-10-13 18:01:22 +03:00
Yiorgis Gozadinos
5c0f0e5830
Add skills
2025-10-13 18:01:22 +03:00
Yiorgis Gozadinos
48cdb8a1db
Implement an LRUMemoryStorage for context
2025-10-13 18:01:22 +03:00
Yiorgis Gozadinos
e70fa737b7
Tests for a2a
2025-10-13 18:01:21 +03:00
Yiorgis Gozadinos
43dac018c0
Test mcp tools
2025-10-08 09:20:26 +03:00
Yiorgis Gozadinos
5e4928ccad
Make sure vacuum task has been complete before exiting the client
2025-10-07 12:27:55 +03:00
Yiorgis Gozadinos
094f0e0d44
Centralize vacuuming
2025-10-07 12:05:25 +03:00
Yiorgis Gozadinos
c6eaf9d5cd
Add vacuum retention setting
2025-10-07 10:47:28 +03:00
Yiorgis Gozadinos
a6275fcf25
Rename nodes to make it clear they are part of Q/A
2025-09-30 16:59:36 +03:00
Yiorgis Gozadinos
49eac86259
Add verbose flag to ask
2025-09-30 16:59:36 +03:00
Yiorgis Gozadinos
2dfb1882dd
Deep QA multi-agent
2025-09-30 16:59:36 +03:00
Yiorgis Gozadinos
42c54a8d25
Shuffle reusable nodes under graph/
2025-09-30 16:59:36 +03:00
Yiorgis Gozadinos
05c382fcb5
When rebuilding if a document does not exist anymore, re-embed the chunks instead of failing
2025-09-30 16:57:02 +03:00
Yiorgis Gozadinos
57e86d00fd
Refactor evaluations so that we can perform with multiple datasets..
...
Introduce Wix dataset.
2025-09-30 11:31:50 +03:00
Yiorgis Gozadinos
19ad1b9d7d
improve output
2025-09-30 11:30:35 +03:00
Yiorgis Gozadinos
87f28ed96b
Update docs
2025-09-30 11:30:35 +03:00
Yiorgis Gozadinos
7cc4e13b57
Make benchmarks use pydantic evals
2025-09-30 11:30:34 +03:00
Yiorgis Gozadinos
14168db795
Fix embedding client test
2025-09-26 13:52:06 +03:00
Yiorgis Gozadinos
184fd12e42
Do not run db upgrades when creating a new db
2025-09-25 10:52:11 +03:00
Yiorgis Gozadinos
064b823020
Break Evaluation node into AnalyzeInsights & DecisionNode. Use a list of updateable insights & gaps
2025-09-24 16:26:48 +03:00
Yiorgis Gozadinos
84e94f8257
Wire gaps that were forgotten
2025-09-24 14:03:53 +03:00
Yiorgis Gozadinos
cf9d6a116f
Do not duplicate ResearchContext in ResearchState
2025-09-24 13:43:07 +03:00
Yiorgis Gozadinos
086eb56d34
Stream research
2025-09-24 11:27:05 +03:00
Yiorgis Gozadinos
8f3055d37d
Parse non-strings
2025-09-23 16:42:40 +03:00
Yiorgis Gozadinos
45d0b47a02
Meta in CLI add-src, add
2025-09-23 16:39:27 +03:00
Yiorgis Gozadinos
5ea5de274c
Make styles consistent
2025-09-23 12:27:01 +03:00
Yiorgis Gozadinos
52ea1ebb70
info command in CLI
2025-09-23 12:20:25 +03:00
Yiorgis Gozadinos
2c93f4f823
Preserve title if it exists when expanding context
2025-09-22 13:45:59 +03:00
Yiorgis Gozadinos
20993b48a7
Fix test after rebase
2025-09-22 12:53:52 +03:00
Yiorgis Gozadinos
73aff1695f
Update LLM prompts/tools to reflect we will pass title (if available) or URI
2025-09-22 12:45:32 +03:00
Yiorgis Gozadinos
4077e3ecb2
Handle title in client & CLI
2025-09-22 12:45:32 +03:00
Yiorgis Gozadinos
dce60fa461
Remove SSE transport, fix cli tests
2025-09-20 10:58:28 +03:00
Yiorgis Gozadinos
cba8ad7696
Research agent as a pydantic graph
2025-09-19 14:39:39 +03:00
Yiorgis Gozadinos
a215a64686
Refactor to give its research subagent full responsibility
2025-09-19 12:10:00 +03:00
Yiorgis Gozadinos
5bfa720864
Remove openai models from research tests
2025-09-19 12:09:59 +03:00
Yiorgis Gozadinos
d1e2470d94
Upgrades are back. Make chunk order a table column rather than a metadata property
2025-09-18 13:42:07 +03:00
Yiorgis Gozadinos
03289bb644
Fix MCP test
2025-09-18 12:54:36 +03:00
Yiorgis Gozadinos
a807f3ea36
Simplify structured output for research agents
2025-09-17 18:31:55 +03:00
Yiorgis Gozadinos
05e08c48e4
Simplify SearchAgent. Omit search results, but keep QA results.
2025-09-17 12:37:16 +03:00
Yiorgis Gozadinos
70544b5112
Research agent tests
2025-09-17 08:54:54 +03:00
Yiorgis Gozadinos
98ca5c4746
Simplify orchestration & subagents
2025-09-17 08:54:54 +03:00
Yiorgis Gozadinos
c029350d79
Make search agent more like a qa agent
2025-09-17 08:51:44 +03:00
Yiorgis Gozadinos
53905c2d69
Simplify search agent
2025-09-17 08:51:44 +03:00
Yiorgis Gozadinos
fe8e48df38
Config research provider/model, CLI
2025-09-17 08:51:44 +03:00
Yiorgis Gozadinos
86b44c47f9
Adapt clarification agent, basic orchestrator
2025-09-17 08:51:43 +03:00
Yiorgis Gozadinos
b03ee08f18
Search agent
2025-09-17 08:51:43 +03:00
Yiorgis Gozadinos
4a07444030
Rollback version if a failure occurs when creating/updating documents
2025-09-15 11:54:50 +03:00
Yiorgis Gozadinos
765a6e647d
Allow for custom pre-processing after markdown is generated and before it is chunked.
2025-09-15 11:02:34 +03:00
Yiorgis Gozadinos
c43ae62018
Fix client test on context expansion to not depend on .env settings
2025-09-12 12:38:22 +03:00
Yiorgis Gozadinos
d90dfe258c
Use logfire when running evaluations
2025-09-12 09:45:06 +03:00
Yiorgis Gozadinos
2207b7d1ed
vacuum() in store, client, cli. Removes old versions and reduces disk usage
2025-09-10 11:24:51 +03:00
Yiorgis Gozadinos
8dfb8638be
Fix SSE server setup
2025-09-08 15:31:56 +03:00
Yiorgis Gozadinos
b99f88f104
Support batch embedding
2025-09-05 10:48:31 +03:00
Yiorgis Gozadinos
bc28e60cf7
Support vLLM for QA agents
2025-09-04 15:20:37 +03:00
Yiorgis Gozadinos
f2847d0524
Reranking support for vLLM, documentation update
2025-09-04 13:13:10 +03:00
Yiorgis Gozadinos
16f7ba9d99
VLLM embedding
2025-09-04 10:44:07 +03:00
Yiorgis Gozadinos
3c235e8b6c
Suppress logging from deps
2025-09-03 11:42:08 +03:00
Yiorgis Gozadinos
b73949c784
update benchmarks
2025-09-02 15:10:57 +03:00
Yiorgis Gozadinos
9e5f11060d
Allow connecting to lancedb cloud, s3, gc, az etc
2025-09-02 12:49:17 +03:00
Yiorgis Gozadinos
fe850e778d
Remove Ollama reranker, this was a bad idea
2025-09-02 11:42:31 +03:00
Yiorgis Gozadinos
27b16bdf8d
Update basic benchmarks
2025-09-02 10:51:20 +03:00
Yiorgis Gozadinos
b05e5f5408
Set/get haiku version to db
2025-09-01 17:41:41 +03:00
Yiorgis Gozadinos
a5e087aa53
Fix scores depending on search type
2025-09-01 14:56:15 +03:00
Yiorgis Gozadinos
628bdc8151
Cleanup
2025-09-01 14:56:15 +03:00
Yiorgis Gozadinos
0592a7d122
Adapt search to lancedb
2025-09-01 14:56:14 +03:00
Yiorgis Gozadinos
b83596ff07
Basic moving to lancedb.
2025-09-01 14:56:14 +03:00
Yiorgis Gozadinos
1f61d78165
Bring back QA_MODEL and keep compatibility with previous versions
2025-08-17 15:27:03 +02:00
Yiorgis Gozadinos
d6d79d5e94
Allow any provider/model supported by pydantic AI
2025-08-17 14:55:50 +02:00
Yiorgis Gozadinos
4ac658e9dd
Convert LLM Judge
2025-08-17 14:36:51 +02:00
Yiorgis Gozadinos
79841f32ca
Do not use mocks in embeddings test
2025-08-15 22:01:57 +02:00
Yiorgis Gozadinos
26a3715902
Refactor Ollama reranker around pydantic AI
2025-08-15 21:26:16 +02:00
Yiorgis Gozadinos
390397570a
Migrate QA agent to Pydantic AI.
2025-08-15 21:13:17 +02:00
Yiorgis Gozadinos
bf8a4f22be
Make radius a parameter we can pass to expand_context()
2025-08-12 16:53:45 +02:00
Yiorgis Gozadinos
99f7401817
Merge expanded context if possible
2025-08-12 15:02:07 +02:00
Yiorgis Gozadinos
eb13426aae
expand_context() by using the adjacent chunks
2025-08-12 14:14:18 +02:00
Yiorgis Gozadinos
2f42b1a3ac
Get adjacent chunks method
2025-08-12 13:24:04 +02:00
Yiorgis Gozadinos
842e4a882d
Make citations optional, through cite parameter
2025-08-12 13:19:11 +02:00
Yiorgis Gozadinos
5103e6c2d7
Add Ollama reranker
2025-08-10 20:50:17 +02:00
Yiorgis Gozadinos
8d98eed2e2
Make mxbai reranker optional. Only use a reranker if mxbai or cohere are installed
2025-08-10 19:49:14 +02:00
Yiorgis Gozadinos
ad4b655a31
Operate on DoclingDocument instead of Document
2025-08-08 17:24:34 +02:00
Yiorgis Gozadinos
6a3c85e6ae
text_to_docling_document() util
2025-08-08 15:38:57 +02:00
Yiorgis Gozadinos
b92f25d6fb
Make FileReader return a DoclingDocument instead of a md string
2025-08-08 14:45:24 +02:00
Yiorgis Gozadinos
b428cb4c5d
Forgotten test for FileReader
2025-08-01 16:41:24 +02:00
Yiorgis Gozadinos
91f6122ef7
Basic chunking using docling
2025-08-01 16:27:44 +02:00
Yiorgis Gozadinos
74eea9284a
create_document now optionally accepts pre-computed chunks
2025-07-26 10:42:27 +03:00
Yiorgis Gozadinos
dfe23482da
Tune parameters
2025-07-20 22:45:24 +03:00
Yiorgis Gozadinos
c1d5334804
Update benchmarks with reranking
2025-07-19 19:02:47 +03:00
Yiorgis Gozadinos
2343ab7751
Return tuple (Chunk, score,) in rerank()
2025-07-19 12:16:17 +03:00
Yiorgis Gozadinos
f25416b0ff
Properly test cohere reranker
2025-07-18 20:55:28 +03:00
Yiorgis Gozadinos
044e1b0a06
mixedbread reranker as default
2025-07-18 20:29:24 +03:00
Yiorgis Gozadinos
859860318a
Cohere reranker
2025-07-17 13:17:16 +03:00
Yiorgis Gozadinos
0bf5606117
Store haiku.rag version, enabling upgrades
2025-07-16 18:21:41 +03:00
Yiorgis Gozadinos
a2e0f2cefd
Remove Claude nonsense, use context manager
2025-07-12 23:00:49 +03:00
Yiorgis Gozadinos
62a519b094
Prevent rebuild from throwing and recreate the embeddings table
2025-07-12 21:21:14 +03:00
Yiorgis Gozadinos
4444ec50da
Check if settings are compatible when loading a db
2025-07-12 20:56:49 +03:00
Yiorgis Gozadinos
a59b38158d
Settings table & repo, tests
2025-07-12 20:21:34 +03:00