From 98572d57ee3b51cc0fc6c069bdd14d1fcb670029 Mon Sep 17 00:00:00 2001 From: Silas Pignotti Date: Sat, 25 Apr 2026 16:03:46 +0200 Subject: [PATCH 1/3] chore: improve pyproject package metadata --- pyproject.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index fe51489..3d2d426 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,17 @@ authors = [ { name = "Silas Pignotti", email = "pignottisilas@gmail.com" }, ] license = { text = "MIT" } +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Environment :: Console", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.12", + "Topic :: Scientific/Engineering :: Information Analysis", + "Typing :: Typed", +] dependencies = [ "httpx>=0.28.1", "litellm==1.82.6", @@ -24,6 +35,9 @@ dependencies = [ [project.urls] Homepage = "https://github.com/spignotti/litresearch" Repository = "https://github.com/spignotti/litresearch" +Documentation = "https://github.com/spignotti/litresearch#readme" +Changelog = "https://github.com/spignotti/litresearch/blob/main/CHANGELOG.md" +Issues = "https://github.com/spignotti/litresearch/issues" [project.scripts] litresearch = "litresearch.cli:main" From 657d654ae2d0b707e3ac1418a7555b6ae1e4371b Mon Sep 17 00:00:00 2001 From: Silas Pignotti Date: Sat, 25 Apr 2026 16:03:54 +0200 Subject: [PATCH 2/3] style: add missing settings type hints and stage docstring --- src/litresearch/config.py | 17 +++++++++++------ src/litresearch/stages/__init__.py | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/litresearch/config.py b/src/litresearch/config.py index 3bf6405..7a47bbc 100644 --- a/src/litresearch/config.py +++ b/src/litresearch/config.py @@ -3,7 +3,12 @@ from typing import Literal from pydantic import computed_field -from pydantic_settings import BaseSettings, SettingsConfigDict, TomlConfigSettingsSource +from pydantic_settings import ( + BaseSettings, + PydanticBaseSettingsSource, + SettingsConfigDict, + TomlConfigSettingsSource, +) class Settings(BaseSettings): @@ -19,11 +24,11 @@ class Settings(BaseSettings): def settings_customise_sources( cls, settings_cls: type[BaseSettings], - init_settings, - env_settings, - dotenv_settings, - file_secret_settings, - ): + init_settings: PydanticBaseSettingsSource, + env_settings: PydanticBaseSettingsSource, + dotenv_settings: PydanticBaseSettingsSource, + file_secret_settings: PydanticBaseSettingsSource, + ) -> tuple[PydanticBaseSettingsSource, ...]: """Load settings from init, env, dotenv, TOML, then secrets.""" return ( init_settings, diff --git a/src/litresearch/stages/__init__.py b/src/litresearch/stages/__init__.py index e69de29..58b2e5b 100644 --- a/src/litresearch/stages/__init__.py +++ b/src/litresearch/stages/__init__.py @@ -0,0 +1 @@ +"""Pipeline stage modules for litresearch.""" From 3c3d62c292eb429e84e409e7196d58719049d4c3 Mon Sep 17 00:00:00 2001 From: Silas Pignotti Date: Sat, 25 Apr 2026 16:09:09 +0200 Subject: [PATCH 3/3] chore(repo): ignore local project state and align lock metadata --- .gitignore | 1 + .opencode/PROJECT_STATE.md | 23 ----------------------- uv.lock | 2 +- 3 files changed, 2 insertions(+), 24 deletions(-) delete mode 100644 .opencode/PROJECT_STATE.md diff --git a/.gitignore b/.gitignore index 214e2fb..33062ee 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ htmlcov/ output-smoke/ litresearch.toml .opencode/LESSONS.md +.opencode/PROJECT_STATE.md diff --git a/.opencode/PROJECT_STATE.md b/.opencode/PROJECT_STATE.md deleted file mode 100644 index e39e82e..0000000 --- a/.opencode/PROJECT_STATE.md +++ /dev/null @@ -1,23 +0,0 @@ -# Project State - -## Current Focus -- Validate installed `litresearch` behavior with low-cost end-to-end smoke runs. - -## Active Work -- None. - -## Key Decisions -- [2026-04-11] v1.0.0 release blockers were resolved (security fixes, CLI fix, settings wiring, rate limiting, tests added). -- [2026-04-20] Use a temporary workspace with constrained runtime settings (`max_results_per_query=5`, `screening_selection_mode=top_k`, `screening_top_k=3`, `top_n=5`) for low-cost verification before broader test campaigns. - -## Lessons -- [2026-04-20] `--stop-after-screening` pause + `resume` currently re-runs full screening in `analysis` stage instead of resuming post-screening, which increases LLM cost and time for pause/resume workflows. -- [2026-04-20] Resume writes a new `metrics.json` run timeline from the resume invocation, so pre-pause stage metrics are not preserved in the final metrics artifact. - -## Next Steps -- Add a dedicated post-screening checkpoint state so `resume` can skip re-screening. -- Preserve/merge metrics across paused and resumed segments. -- Add a configurable hard cap for total generated queries or total candidates to keep cost predictable. - -## Blocked -- None. diff --git a/uv.lock b/uv.lock index 486e377..38ab163 100644 --- a/uv.lock +++ b/uv.lock @@ -800,7 +800,7 @@ wheels = [ [[package]] name = "litresearch" -version = "1.0.0" +version = "1.0.1" source = { editable = "." } dependencies = [ { name = "httpx" },