lemming-cli 0.4.5__tar.gz → 0.4.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/PKG-INFO +2 -2
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/pyproject.toml +2 -2
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/readability_cli.py +2 -2
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/readability_cli_test.py +9 -10
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/metrics.py +2 -2
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/metrics_test.py +5 -5
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/uv.lock +5 -5
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/.dockerignore +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/.github/workflows/ci.yml +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/.github/workflows/publish.yml +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/.github/workflows/screenshots.yml +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/.gitignore +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/.prettierignore +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/.prettierrc +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/Dockerfile +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/LICENSE +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/README.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/SKILL.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/biome.json +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/docker-compose.yml +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/docs/EVALS.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/docs/HOOKS.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/docs/screenshots/dashboard-desktop.png +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/docs/screenshots/dashboard-mobile.png +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/docs/screenshots/task-log-desktop.png +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/docs/screenshots/task-log-mobile.png +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/package-lock.json +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/package.json +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/playwright.config.js +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/pyrefly.toml +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/__init__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/__init__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/auth.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/auth_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/config.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/config_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/conftest.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/context.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/context_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/directories.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/directories_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/files.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/files_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/hooks.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/hooks_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/logging.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/logging_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/loop.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/loop_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/main.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/main_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/tasks.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api/tasks_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/api_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/brief_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/__init__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/brief.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/config.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/config_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/exec_cli.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/exec_cli_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/goal.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/goal_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/hooks.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/hooks_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/machine_output_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/main.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/main_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/operations.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/operations_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/progress.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/progress_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/skill.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/skill_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/stop_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/tasks.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli/tasks_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/cli_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/conftest.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/__init__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/__main__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/cli.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/cli_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/container.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/container_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/fixtures.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/fixtures_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/harness.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/harness_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/base/README.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/base/calc/__init__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/base/calc/legacy.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/base/calc/ops.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/base/calc/ops_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/clean/calc/ops.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/clean/calc/ops_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/dead-code/calc/ops.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/dead-code/calc/ops_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/duplicated-behavior/calc/ops.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/duplicated-behavior/calc/ops_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/false-reuse/calc/limits.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/false-reuse/calc/limits_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/lint-debt/calc/ops.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/lint-debt/calc/ops_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/add-only/README.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/add-only/calc/__init__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/add-only/calc/ops.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/add-only/calc/ops_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/buggy-subtract/README.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/buggy-subtract/calc/__init__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/buggy-subtract/calc/ops.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/buggy-subtract/calc/ops_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/full-ops/README.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/full-ops/calc/__init__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/full-ops/calc/ops.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/full-ops/calc/ops_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/unwired-cli/README.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/unwired-cli/calc/__init__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/unwired-cli/calc/cli.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/unwired-cli/calc/cli_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/unwired-cli/calc/ops.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/unwired-cli/calc/ops_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/task/hidden/stats/summary_hidden_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/task/summary/README.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/task/summary/stats/__init__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/task/summary/stats/summary.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/task/summary/stats/summary_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/readability.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/readability_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/report.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/report_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/roadmap.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/roadmap_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/scenarios.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/scenarios_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/suites.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/task.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/task_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/trial.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/trial_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/hooks.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/hooks_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/integration_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/main.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/main_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/models.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/models_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/orchestrator.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/orchestrator_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/paths.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/paths_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/persistence.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/persistence_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/prompts/hooks/50-readability.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/prompts/hooks/60-testing.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/prompts/hooks/70-ux.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/prompts/hooks/90-roadmap.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/prompts/taskrunner.md +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/prompts.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/prompts_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/providers.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/providers_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/runner.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/runner_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/scope.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/scope_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/shutdown.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/shutdown_integration_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/shutdown_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/tasks/__init__.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/tasks/lifecycle.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/tasks/lifecycle_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/tasks/limits.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/tasks/operations.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/tasks/operations_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/tasks/progress.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/tasks/progress_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/tasks/queries.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/tasks/queries_test.py +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/dashboard.spec.js +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/dashboard.test.js +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/favicon.js +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/favicon.spec.js +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/files.html +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/files.spec.js +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/index.html +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/index.js +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/logs.html +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/logs.test.js +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/mancha.js +0 -0
- {lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/web/screenshots.spec.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: lemming-cli
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.6
|
|
4
4
|
Summary: An autonomous, iterative task runner for AI coding agents.
|
|
5
5
|
Project-URL: Homepage, https://github.com/owahltinez/lemming
|
|
6
6
|
Project-URL: Repository, https://github.com/owahltinez/lemming
|
|
@@ -15,7 +15,7 @@ Requires-Dist: fastapi>=0.124.4
|
|
|
15
15
|
Requires-Dist: markdownify>=0.14.1
|
|
16
16
|
Requires-Dist: pydantic>=2.12.5
|
|
17
17
|
Requires-Dist: pyyaml>=6.0.3
|
|
18
|
-
Requires-Dist: readability-cli>=0.
|
|
18
|
+
Requires-Dist: readability-cli>=0.9.0
|
|
19
19
|
Requires-Dist: requests>=2.32.3
|
|
20
20
|
Requires-Dist: uvicorn>=0.33.0
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "lemming-cli"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.6"
|
|
8
8
|
description = "An autonomous, iterative task runner for AI coding agents."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
@@ -20,7 +20,7 @@ dependencies = [
|
|
|
20
20
|
"markdownify>=0.14.1",
|
|
21
21
|
"pydantic>=2.12.5",
|
|
22
22
|
"pyyaml>=6.0.3",
|
|
23
|
-
"readability-cli>=0.
|
|
23
|
+
"readability-cli>=0.9.0",
|
|
24
24
|
"requests>=2.32.3",
|
|
25
25
|
"uvicorn>=0.33.0",
|
|
26
26
|
]
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import logging
|
|
4
4
|
|
|
5
5
|
import click
|
|
6
|
-
import
|
|
6
|
+
from readability.cli import cli as readability_cli
|
|
7
7
|
|
|
8
8
|
from .main import cli
|
|
9
9
|
|
|
@@ -24,5 +24,5 @@ def readability_group(ctx: click.Context):
|
|
|
24
24
|
# Merge the commands from the readability package directly into our group.
|
|
25
25
|
# This allows 'lemming readability check ...' instead of
|
|
26
26
|
# 'lemming readability cli check ...'
|
|
27
|
-
for name, command in
|
|
27
|
+
for name, command in readability_cli.commands.items():
|
|
28
28
|
readability_group.add_command(command, name=name)
|
|
@@ -59,12 +59,12 @@ def test_readability_check_ignored_file():
|
|
|
59
59
|
assert result.exit_code == 0
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
def
|
|
63
|
-
"""The wrapper
|
|
62
|
+
def test_readability_leaves_unsupported_markdown_unchanged(tmp_path):
|
|
63
|
+
"""The wrapper preserves files that readability does not own."""
|
|
64
64
|
paragraph = (
|
|
65
65
|
"This deliberately long paragraph proves that the lemming command "
|
|
66
|
-
"loads the installed readability dependency
|
|
67
|
-
"
|
|
66
|
+
"loads the installed readability dependency while leaving unsupported "
|
|
67
|
+
"Markdown content exactly as the caller wrote it.\n"
|
|
68
68
|
)
|
|
69
69
|
runner = CliRunner()
|
|
70
70
|
|
|
@@ -72,12 +72,11 @@ def test_readability_formats_markdown_without_project_config(tmp_path):
|
|
|
72
72
|
markdown = Path("README.md")
|
|
73
73
|
markdown.write_text(f"# Integration\n\n{paragraph}")
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
assert check.exit_code == 1
|
|
77
|
-
assert "prettier formatting findings" in check.output
|
|
75
|
+
original = markdown.read_text()
|
|
78
76
|
|
|
79
|
-
|
|
77
|
+
result = runner.invoke(
|
|
80
78
|
cli, ["readability", "check", "--fix", str(markdown)]
|
|
81
79
|
)
|
|
82
|
-
assert
|
|
83
|
-
assert
|
|
80
|
+
assert result.exit_code == 0
|
|
81
|
+
assert "nothing was checked" in result.output
|
|
82
|
+
assert markdown.read_text() == original
|
|
@@ -12,7 +12,7 @@ import pathlib
|
|
|
12
12
|
import subprocess
|
|
13
13
|
import sys
|
|
14
14
|
|
|
15
|
-
import
|
|
15
|
+
from readability.checking import check_paths
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
def unresolved_findings(workspace: pathlib.Path, paths: list[str]) -> str:
|
|
@@ -44,7 +44,7 @@ def unresolved_findings(workspace: pathlib.Path, paths: list[str]) -> str:
|
|
|
44
44
|
return ""
|
|
45
45
|
|
|
46
46
|
# Delegate to readability; its findings land on this process's streams.
|
|
47
|
-
report =
|
|
47
|
+
report = check_paths(targets, project_root=workspace)
|
|
48
48
|
|
|
49
49
|
# Clean means the tools ran and found nothing; unverified is not clean.
|
|
50
50
|
unverified = sorted(report.skipped | report.failed)
|
|
@@ -4,7 +4,7 @@ import tempfile
|
|
|
4
4
|
import unittest
|
|
5
5
|
import unittest.mock
|
|
6
6
|
|
|
7
|
-
import
|
|
7
|
+
from readability.checking import CheckReport
|
|
8
8
|
|
|
9
9
|
from lemming.evals import fixtures, metrics
|
|
10
10
|
|
|
@@ -94,11 +94,11 @@ class TestUnresolvedFindings(MetricsTestCase):
|
|
|
94
94
|
# No findings from a tool that never ran is not a pass.
|
|
95
95
|
self.seed({"pkg/mod.py": _CLEAN})
|
|
96
96
|
unverified = {
|
|
97
|
-
"no tool ran at all":
|
|
98
|
-
"an applicable tool was missing":
|
|
97
|
+
"no tool ran at all": CheckReport(),
|
|
98
|
+
"an applicable tool was missing": CheckReport(
|
|
99
99
|
ran={"ruff"}, skipped={"pyrefly"}
|
|
100
100
|
),
|
|
101
|
-
"a tool could not finish":
|
|
101
|
+
"a tool could not finish": CheckReport(
|
|
102
102
|
ran={"ruff"}, failed={"pyrefly"}
|
|
103
103
|
),
|
|
104
104
|
}
|
|
@@ -106,7 +106,7 @@ class TestUnresolvedFindings(MetricsTestCase):
|
|
|
106
106
|
for label, report in unverified.items():
|
|
107
107
|
with self.subTest(label):
|
|
108
108
|
with unittest.mock.patch.object(
|
|
109
|
-
metrics
|
|
109
|
+
metrics, "check_paths", return_value=report
|
|
110
110
|
):
|
|
111
111
|
outstanding = metrics.unresolved_findings(
|
|
112
112
|
self.workspace, ["pkg/mod.py"]
|
|
@@ -291,7 +291,7 @@ wheels = [
|
|
|
291
291
|
|
|
292
292
|
[[package]]
|
|
293
293
|
name = "lemming-cli"
|
|
294
|
-
version = "0.4.
|
|
294
|
+
version = "0.4.6"
|
|
295
295
|
source = { editable = "." }
|
|
296
296
|
dependencies = [
|
|
297
297
|
{ name = "beautifulsoup4" },
|
|
@@ -325,7 +325,7 @@ requires-dist = [
|
|
|
325
325
|
{ name = "markdownify", specifier = ">=0.14.1" },
|
|
326
326
|
{ name = "pydantic", specifier = ">=2.12.5" },
|
|
327
327
|
{ name = "pyyaml", specifier = ">=6.0.3" },
|
|
328
|
-
{ name = "readability-cli", specifier = ">=0.
|
|
328
|
+
{ name = "readability-cli", specifier = ">=0.9.0" },
|
|
329
329
|
{ name = "requests", specifier = ">=2.32.3" },
|
|
330
330
|
{ name = "uvicorn", specifier = ">=0.33.0" },
|
|
331
331
|
]
|
|
@@ -555,7 +555,7 @@ wheels = [
|
|
|
555
555
|
|
|
556
556
|
[[package]]
|
|
557
557
|
name = "readability-cli"
|
|
558
|
-
version = "0.
|
|
558
|
+
version = "0.9.0"
|
|
559
559
|
source = { registry = "https://pypi.org/simple" }
|
|
560
560
|
dependencies = [
|
|
561
561
|
{ name = "beautifulsoup4" },
|
|
@@ -563,9 +563,9 @@ dependencies = [
|
|
|
563
563
|
{ name = "markdownify" },
|
|
564
564
|
{ name = "requests" },
|
|
565
565
|
]
|
|
566
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
566
|
+
sdist = { url = "https://files.pythonhosted.org/packages/eb/aa/7570aaa1ec46c74b8359b2d2a47bdc70d7ee6adff94501cbdaf347810f19/readability_cli-0.9.0.tar.gz", hash = "sha256:4e14e182be391d70092fe159d8d81c6d94e34e8099fdfc9ca8b8ad3ffc31d4c5", size = 343257, upload-time = "2026-08-20T00:51:02.731Z" }
|
|
567
567
|
wheels = [
|
|
568
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
568
|
+
{ url = "https://files.pythonhosted.org/packages/8d/94/1857a49eaf9a3efddcdf6f6f413f0aac804915a58d1ccbd64b32a6994602/readability_cli-0.9.0-py3-none-any.whl", hash = "sha256:1709c282575c3f5fc9351d585f069a92b79312d33a22a5ff3713aef8cb834850", size = 324977, upload-time = "2026-08-20T00:51:01.416Z" },
|
|
569
569
|
]
|
|
570
570
|
|
|
571
571
|
[[package]]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/base/README.md
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/base/calc/__init__.py
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/base/calc/legacy.py
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/base/calc/ops.py
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/base/calc/ops_test.py
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/clean/calc/ops.py
RENAMED
|
File without changes
|
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/dead-code/calc/ops.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/readability/lint-debt/calc/ops.py
RENAMED
|
File without changes
|
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/add-only/README.md
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/add-only/calc/__init__.py
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/add-only/calc/ops.py
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/add-only/calc/ops_test.py
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/buggy-subtract/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/full-ops/README.md
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/full-ops/calc/__init__.py
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/full-ops/calc/ops.py
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/full-ops/calc/ops_test.py
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/unwired-cli/README.md
RENAMED
|
File without changes
|
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/unwired-cli/calc/cli.py
RENAMED
|
File without changes
|
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/roadmap/unwired-cli/calc/ops.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/task/summary/stats/__init__.py
RENAMED
|
File without changes
|
{lemming_cli-0.4.5 → lemming_cli-0.4.6}/src/lemming/evals/projects/task/summary/stats/summary.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|