vb, changelog
This commit is contained in:
parent
0550e363d4
commit
8dbcd4bd7a
6 changed files with 32 additions and 12 deletions
22
CHANGELOG.md
22
CHANGELOG.md
|
|
@ -1,14 +1,33 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.52.0] - 2026-06-01
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- `haiku-ingester run-batch`: one discover sweep across every configured source, drains the queue, then exits. Orphan deletion requires a persisted `ingester.db`.
|
- `haiku-ingester run-batch`: one discover sweep across every configured source, drains the queue, then exits. Orphan deletion requires a persisted `ingester.db`.
|
||||||
|
- `max_file_size` (bytes) on every source type rejects oversized files before they are read into memory; they dead-letter as a permanent `FileTooLargeError`. FS and S3 check the size from metadata before fetching; HTTP and WebDAV rely on a `Content-Length` response header, so a server that omits it is not enforced.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Idle workers wake on enqueue via an `asyncio.Condition` instead of polling on `poll_idle_interval_s`.
|
||||||
|
- `sync_state` writes are batched into one transaction per sweep (`SyncStateRepo.batch_upsert`) instead of one commit per file.
|
||||||
|
- HTTP and WebDAV sources reuse a single `httpx.AsyncClient` across `head`/`fetch`/`discover` instead of opening one per request.
|
||||||
|
- Periodic poll sweeps start after a random jitter of 0–25% of `poll_interval_s`.
|
||||||
|
- New partial index `idx_jobs_succeeded_completed` backs the dashboard rolling-throughput query.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
- `haiku-ingester run-once`. Use `run-batch` to ingest configured sources, or `serve` for continuous operation.
|
- `haiku-ingester run-once`. Use `run-batch` to ingest configured sources, or `serve` for continuous operation.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Revision-less HTTP/S3/WebDAV resources (no ETag or Last-Modified) emit `UNCHANGED` once known instead of re-ingesting on every sweep.
|
||||||
|
- Deleted, unreadable, and directory paths (`FileNotFoundError`, `PermissionError`, `IsADirectoryError`, `NotADirectoryError`) classify as permanent failures instead of exhausting retries first.
|
||||||
|
- FS `discover()` and the watch loop no longer crash when a file is removed between listing and `stat()`.
|
||||||
|
- HTTP `discover()` catches only `httpx.TransportError`; other exceptions propagate instead of being emitted as UPSERT.
|
||||||
|
- A `sync_state` write that fails after a job is marked succeeded is logged instead of crashing the worker.
|
||||||
|
|
||||||
## [0.51.0] - 2026-05-29
|
## [0.51.0] - 2026-05-29
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
@ -1637,7 +1656,8 @@ Existing documents without DoclingDocument data will work but won't have provena
|
||||||
|
|
||||||
- Initial version tracking
|
- Initial version tracking
|
||||||
|
|
||||||
[Unreleased]: https://github.com/ggozad/haiku.rag/compare/0.51.0...HEAD
|
[Unreleased]: https://github.com/ggozad/haiku.rag/compare/0.52.0...HEAD
|
||||||
|
[0.52.0]: https://github.com/ggozad/haiku.rag/compare/0.51.0...0.52.0
|
||||||
[0.51.0]: https://github.com/ggozad/haiku.rag/compare/0.50.0...0.51.0
|
[0.51.0]: https://github.com/ggozad/haiku.rag/compare/0.50.0...0.51.0
|
||||||
[0.50.0]: https://github.com/ggozad/haiku.rag/compare/0.48.1...0.50.0
|
[0.50.0]: https://github.com/ggozad/haiku.rag/compare/0.48.1...0.50.0
|
||||||
[0.48.1]: https://github.com/ggozad/haiku.rag/compare/0.48.0...0.48.1
|
[0.48.1]: https://github.com/ggozad/haiku.rag/compare/0.48.0...0.48.1
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ dependencies = [
|
||||||
"uvicorn[standard]>=0.40.0",
|
"uvicorn[standard]>=0.40.0",
|
||||||
"pydantic-ai-slim[ag-ui,anthropic,openai]>=1.81.0",
|
"pydantic-ai-slim[ag-ui,anthropic,openai]>=1.81.0",
|
||||||
"python-dotenv>=1.2.1",
|
"python-dotenv>=1.2.1",
|
||||||
"haiku.rag-slim>=0.51.0",
|
"haiku.rag-slim>=0.52.0",
|
||||||
"logfire[pydantic-ai]>=3.17.0",
|
"logfire[pydantic-ai]>=3.17.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
name = "haiku.rag-evals"
|
name = "haiku.rag-evals"
|
||||||
description = "Benchmarking and evaluation scripts for haiku.rag"
|
description = "Benchmarking and evaluation scripts for haiku.rag"
|
||||||
version = "0.51.0"
|
version = "0.52.0"
|
||||||
authors = [{ name = "Yiorgis Gozadinos", email = "ggozadinos@gmail.com" }]
|
authors = [{ name = "Yiorgis Gozadinos", email = "ggozadinos@gmail.com" }]
|
||||||
license = { text = "MIT" }
|
license = { text = "MIT" }
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
name = "haiku.rag-slim"
|
name = "haiku.rag-slim"
|
||||||
description = "Opinionated agentic RAG powered by LanceDB, Pydantic AI, and Docling - Minimal dependencies"
|
description = "Opinionated agentic RAG powered by LanceDB, Pydantic AI, and Docling - Minimal dependencies"
|
||||||
version = "0.51.0"
|
version = "0.52.0"
|
||||||
authors = [{ name = "Yiorgis Gozadinos", email = "ggozadinos@gmail.com" }]
|
authors = [{ name = "Yiorgis Gozadinos", email = "ggozadinos@gmail.com" }]
|
||||||
license = { text = "MIT" }
|
license = { text = "MIT" }
|
||||||
readme = { file = "README.md", content-type = "text/markdown" }
|
readme = { file = "README.md", content-type = "text/markdown" }
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
name = "haiku.rag"
|
name = "haiku.rag"
|
||||||
description = "Opinionated agentic RAG powered by LanceDB, Pydantic AI, and Docling"
|
description = "Opinionated agentic RAG powered by LanceDB, Pydantic AI, and Docling"
|
||||||
version = "0.51.0"
|
version = "0.52.0"
|
||||||
authors = [{ name = "Yiorgis Gozadinos", email = "ggozadinos@gmail.com" }]
|
authors = [{ name = "Yiorgis Gozadinos", email = "ggozadinos@gmail.com" }]
|
||||||
license = { text = "MIT" }
|
license = { text = "MIT" }
|
||||||
readme = { file = "README.md", content-type = "text/markdown" }
|
readme = { file = "README.md", content-type = "text/markdown" }
|
||||||
|
|
@ -30,7 +30,7 @@ classifiers = [
|
||||||
]
|
]
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"haiku.rag-slim[docling,voyageai,mxbai,cohere,zeroentropy,tui,cross-encoder]==0.51.0",
|
"haiku.rag-slim[docling,voyageai,mxbai,cohere,zeroentropy,tui,cross-encoder]==0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
|
|
@ -38,9 +38,9 @@ haiku-rag = "haiku.rag.cli:cli"
|
||||||
|
|
||||||
[project.optional-dependencies]
|
[project.optional-dependencies]
|
||||||
tui = ["textual>=8.2.4"]
|
tui = ["textual>=8.2.4"]
|
||||||
s3 = ["haiku.rag-slim[s3]==0.51.0"]
|
s3 = ["haiku.rag-slim[s3]==0.52.0"]
|
||||||
cross-encoder = ["haiku.rag-slim[cross-encoder]==0.51.0"]
|
cross-encoder = ["haiku.rag-slim[cross-encoder]==0.52.0"]
|
||||||
ingester = ["haiku.rag-slim[ingester]==0.51.0"]
|
ingester = ["haiku.rag-slim[ingester]==0.52.0"]
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["hatchling"]
|
requires = ["hatchling"]
|
||||||
|
|
|
||||||
6
uv.lock
6
uv.lock
|
|
@ -1457,7 +1457,7 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "haiku-rag"
|
name = "haiku-rag"
|
||||||
version = "0.51.0"
|
version = "0.52.0"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "haiku-rag-slim", extra = ["cohere", "cross-encoder", "docling", "mxbai", "tui", "voyageai", "zeroentropy"] },
|
{ name = "haiku-rag-slim", extra = ["cohere", "cross-encoder", "docling", "mxbai", "tui", "voyageai", "zeroentropy"] },
|
||||||
|
|
@ -1524,7 +1524,7 @@ dev = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "haiku-rag-evals"
|
name = "haiku-rag-evals"
|
||||||
version = "0.51.0"
|
version = "0.52.0"
|
||||||
source = { editable = "evaluations" }
|
source = { editable = "evaluations" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "datasets" },
|
{ name = "datasets" },
|
||||||
|
|
@ -1547,7 +1547,7 @@ requires-dist = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "haiku-rag-slim"
|
name = "haiku-rag-slim"
|
||||||
version = "0.51.0"
|
version = "0.52.0"
|
||||||
source = { editable = "haiku_rag_slim" }
|
source = { editable = "haiku_rag_slim" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "docling-core" },
|
{ name = "docling-core" },
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue