lemming-cli 0.5.1__tar.gz → 0.5.2__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.5.1 → lemming_cli-0.5.2}/PKG-INFO +3 -3
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/pyproject.toml +3 -3
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/conftest.py +4 -8
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/context_test.py +9 -6
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/hooks_test.py +1 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/models_test.py +3 -1
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/tasks/lifecycle_test.py +1 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/tasks/queries_test.py +1 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/uv.lock +9 -9
- lemming_cli-0.5.1/pyrefly.toml +0 -21
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/.dockerignore +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/.github/workflows/ci.yml +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/.github/workflows/publish.yml +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/.github/workflows/screenshots.yml +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/.gitignore +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/.prettierignore +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/.prettierrc +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/Dockerfile +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/LICENSE +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/README.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/SKILL.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/biome.json +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/docker-compose.yml +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/docs/EVALS.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/docs/HOOKS.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/docs/screenshots/dashboard-desktop.png +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/docs/screenshots/dashboard-mobile.png +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/docs/screenshots/task-log-desktop.png +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/docs/screenshots/task-log-mobile.png +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/package-lock.json +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/package.json +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/playwright.config.js +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/__init__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/__init__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/auth.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/auth_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/config.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/config_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/context.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/directories.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/directories_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/files.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/files_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/hooks.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/hooks_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/logging.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/logging_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/loop.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/loop_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/main.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/main_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/tasks.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api/tasks_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/api_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/brief_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/__init__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/brief.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/config.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/config_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/exec_cli.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/exec_cli_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/goal.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/goal_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/hooks.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/hooks_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/machine_output_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/main.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/main_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/operations.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/operations_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/progress.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/progress_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/readability_cli.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/readability_cli_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/skill.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/skill_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/stop_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/tasks.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli/tasks_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/cli_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/conftest.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/__init__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/__main__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/cli.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/cli_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/container.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/container_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/fixtures.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/fixtures_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/harness.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/harness_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/metrics.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/metrics_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/base/README.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/base/calc/__init__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/base/calc/legacy.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/base/calc/ops.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/base/calc/ops_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/clean/calc/ops.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/clean/calc/ops_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/dead-code/calc/ops.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/dead-code/calc/ops_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/duplicated-behavior/calc/ops.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/duplicated-behavior/calc/ops_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/false-reuse/calc/limits.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/false-reuse/calc/limits_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/lint-debt/calc/ops.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/lint-debt/calc/ops_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/add-only/README.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/add-only/calc/__init__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/add-only/calc/ops.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/add-only/calc/ops_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/buggy-subtract/README.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/buggy-subtract/calc/__init__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/buggy-subtract/calc/ops.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/buggy-subtract/calc/ops_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/full-ops/README.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/full-ops/calc/__init__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/full-ops/calc/ops.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/full-ops/calc/ops_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/unwired-cli/README.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/unwired-cli/calc/__init__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/unwired-cli/calc/cli.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/unwired-cli/calc/cli_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/unwired-cli/calc/ops.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/unwired-cli/calc/ops_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/task/hidden/stats/summary_hidden_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/task/summary/README.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/task/summary/stats/__init__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/task/summary/stats/summary.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/task/summary/stats/summary_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/readability.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/readability_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/report.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/report_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/roadmap.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/roadmap_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/scenarios.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/scenarios_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/suites.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/task.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/task_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/trial.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/trial_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/hooks.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/integration_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/main.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/main_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/models.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/orchestrator.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/orchestrator_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/paths.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/paths_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/persistence.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/persistence_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/prompts/hooks/50-readability.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/prompts/hooks/60-testing.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/prompts/hooks/70-ux.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/prompts/hooks/90-roadmap.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/prompts/taskrunner.md +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/prompts.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/prompts_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/providers.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/providers_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/runner.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/runner_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/scope.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/scope_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/shutdown.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/shutdown_integration_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/shutdown_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/tasks/__init__.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/tasks/lifecycle.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/tasks/limits.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/tasks/operations.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/tasks/operations_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/tasks/progress.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/tasks/progress_test.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/tasks/queries.py +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/web/dashboard.spec.js +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/web/dashboard.test.js +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/web/favicon.js +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/web/favicon.spec.js +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/web/files.html +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/web/files.spec.js +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/web/index.html +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/web/index.js +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/web/logs.html +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/web/logs.test.js +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/web/mancha.js +0 -0
- {lemming_cli-0.5.1 → lemming_cli-0.5.2}/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.5.
|
|
3
|
+
Version: 0.5.2
|
|
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
|
|
@@ -10,13 +10,13 @@ License-File: LICENSE
|
|
|
10
10
|
Keywords: agents,ai,antigravity,automation,claude,opencode
|
|
11
11
|
Requires-Python: >=3.12
|
|
12
12
|
Requires-Dist: beautifulsoup4>=4.13.3
|
|
13
|
-
Requires-Dist: click-agentcli>=0.
|
|
13
|
+
Requires-Dist: click-agentcli>=0.4.1
|
|
14
14
|
Requires-Dist: click>=8.0.0
|
|
15
15
|
Requires-Dist: fastapi>=0.124.4
|
|
16
16
|
Requires-Dist: markdownify>=0.14.1
|
|
17
17
|
Requires-Dist: pydantic>=2.12.5
|
|
18
18
|
Requires-Dist: pyyaml>=6.0.3
|
|
19
|
-
Requires-Dist: readability-cli>=0.
|
|
19
|
+
Requires-Dist: readability-cli>=0.10.0
|
|
20
20
|
Requires-Dist: requests>=2.32.3
|
|
21
21
|
Requires-Dist: uvicorn>=0.33.0
|
|
22
22
|
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.5.
|
|
7
|
+
version = "0.5.2"
|
|
8
8
|
description = "An autonomous, iterative task runner for AI coding agents."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
@@ -16,12 +16,12 @@ keywords = ["ai", "agents", "automation", "antigravity", "claude", "opencode"]
|
|
|
16
16
|
dependencies = [
|
|
17
17
|
"beautifulsoup4>=4.13.3",
|
|
18
18
|
"click>=8.0.0",
|
|
19
|
-
"click-agentcli>=0.
|
|
19
|
+
"click-agentcli>=0.4.1",
|
|
20
20
|
"fastapi>=0.124.4",
|
|
21
21
|
"markdownify>=0.14.1",
|
|
22
22
|
"pydantic>=2.12.5",
|
|
23
23
|
"pyyaml>=6.0.3",
|
|
24
|
-
"readability-cli>=0.
|
|
24
|
+
"readability-cli>=0.10.0",
|
|
25
25
|
"requests>=2.32.3",
|
|
26
26
|
"uvicorn>=0.33.0",
|
|
27
27
|
]
|
|
@@ -86,8 +86,7 @@ def git_repo():
|
|
|
86
86
|
api.app.state.root = pathlib.Path(test_dir).resolve()
|
|
87
87
|
|
|
88
88
|
# Clear cached git repo check from previous tests
|
|
89
|
-
|
|
90
|
-
del paths.in_git_repo._result
|
|
89
|
+
paths.in_git_repo.cache_clear()
|
|
91
90
|
|
|
92
91
|
subprocess.run(["git", "init"], check=True)
|
|
93
92
|
subprocess.run(
|
|
@@ -113,8 +112,7 @@ def git_repo():
|
|
|
113
112
|
yield pathlib.Path(test_dir)
|
|
114
113
|
|
|
115
114
|
# Clear cached git repo check and restore cwd
|
|
116
|
-
|
|
117
|
-
del paths.in_git_repo._result
|
|
115
|
+
paths.in_git_repo.cache_clear()
|
|
118
116
|
os.chdir(orig_cwd)
|
|
119
117
|
api.app.state.root = original_root
|
|
120
118
|
shutil.rmtree(test_dir)
|
|
@@ -130,8 +128,7 @@ def non_git_dir():
|
|
|
130
128
|
api.app.state.root = pathlib.Path(test_dir).resolve()
|
|
131
129
|
|
|
132
130
|
# Clear cached git repo check
|
|
133
|
-
|
|
134
|
-
del paths.in_git_repo._result
|
|
131
|
+
paths.in_git_repo.cache_clear()
|
|
135
132
|
|
|
136
133
|
# Create files (including one that would be "ignored" if git were present)
|
|
137
134
|
(pathlib.Path(test_dir) / "file1.txt").write_text("content1")
|
|
@@ -139,8 +136,7 @@ def non_git_dir():
|
|
|
139
136
|
|
|
140
137
|
yield pathlib.Path(test_dir)
|
|
141
138
|
|
|
142
|
-
|
|
143
|
-
del paths.in_git_repo._result
|
|
139
|
+
paths.in_git_repo.cache_clear()
|
|
144
140
|
os.chdir(orig_cwd)
|
|
145
141
|
api.app.state.root = original_root
|
|
146
142
|
shutil.rmtree(test_dir)
|
|
@@ -6,10 +6,13 @@ import pytest
|
|
|
6
6
|
from lemming.api import context
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
def _app_state(
|
|
10
|
+
root: pathlib.Path, tasks_file: pathlib.Path
|
|
11
|
+
) -> fastapi.datastructures.State:
|
|
12
|
+
"""The real state object, since it is just an attribute bag."""
|
|
13
|
+
return fastapi.datastructures.State(
|
|
14
|
+
{"root": root, "tasks_file": tasks_file}
|
|
15
|
+
)
|
|
13
16
|
|
|
14
17
|
|
|
15
18
|
def test_resolve_project_dir(tmp_path):
|
|
@@ -18,7 +21,7 @@ def test_resolve_project_dir(tmp_path):
|
|
|
18
21
|
project = root / "project"
|
|
19
22
|
project.mkdir()
|
|
20
23
|
|
|
21
|
-
app_state =
|
|
24
|
+
app_state = _app_state(root, root / "tasks.yml")
|
|
22
25
|
|
|
23
26
|
# Default (no project)
|
|
24
27
|
assert context.resolve_project_dir(app_state) == root
|
|
@@ -46,7 +49,7 @@ def test_resolve_tasks_file(tmp_path):
|
|
|
46
49
|
project.mkdir()
|
|
47
50
|
|
|
48
51
|
default_tasks = root / "tasks.yml"
|
|
49
|
-
app_state =
|
|
52
|
+
app_state = _app_state(root, default_tasks)
|
|
50
53
|
|
|
51
54
|
# Default
|
|
52
55
|
assert context.resolve_tasks_file(app_state) == default_tasks
|
|
@@ -103,6 +103,7 @@ def test_disable_hooks_keeps_priority_in_mask(tmp_path, monkeypatch):
|
|
|
103
103
|
# The mask filename carries the hook's priority so listings still
|
|
104
104
|
# report the priority it would run at if re-enabled
|
|
105
105
|
mask = results["roadmap"]
|
|
106
|
+
assert mask is not None
|
|
106
107
|
assert mask.name == "90-roadmap.md"
|
|
107
108
|
assert mask.read_text(encoding="utf-8") == ""
|
|
108
109
|
|
|
@@ -27,12 +27,14 @@ def test_task_model_defaults():
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
def test_task_model_validation():
|
|
30
|
-
# description is required
|
|
30
|
+
# description is required; the omission is the assertion, not a mistake
|
|
31
31
|
with pytest.raises(pydantic.ValidationError):
|
|
32
|
+
# pyrefly: ignore[missing-argument]
|
|
32
33
|
models.Task(id="123")
|
|
33
34
|
|
|
34
35
|
# id is required
|
|
35
36
|
with pytest.raises(pydantic.ValidationError):
|
|
37
|
+
# pyrefly: ignore[missing-argument]
|
|
36
38
|
models.Task(description="Test")
|
|
37
39
|
|
|
38
40
|
|
|
@@ -169,6 +169,7 @@ def test_finish_task_attempt(tmp_path):
|
|
|
169
169
|
persistence.save_tasks(tasks_file, data)
|
|
170
170
|
|
|
171
171
|
finished = lifecycle.finish_task_attempt(tasks_file, "1")
|
|
172
|
+
assert finished is not None
|
|
172
173
|
assert finished.status == models.TaskStatus.PENDING
|
|
173
174
|
assert finished.pid is None
|
|
174
175
|
|
|
@@ -204,14 +204,14 @@ wheels = [
|
|
|
204
204
|
|
|
205
205
|
[[package]]
|
|
206
206
|
name = "click-agentcli"
|
|
207
|
-
version = "0.
|
|
207
|
+
version = "0.4.1"
|
|
208
208
|
source = { registry = "https://pypi.org/simple" }
|
|
209
209
|
dependencies = [
|
|
210
210
|
{ name = "click" },
|
|
211
211
|
]
|
|
212
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
212
|
+
sdist = { url = "https://files.pythonhosted.org/packages/5f/f3/38a4a99f28121e48e848681dd80b54e490ec32a86d09a2d33f5c1a5d22cc/click_agentcli-0.4.1.tar.gz", hash = "sha256:f8bef4e82b2d61957764af3d806bc377eaba43bbd363552a966a04aecf05e9bb", size = 25736, upload-time = "2026-08-29T01:11:34.368Z" }
|
|
213
213
|
wheels = [
|
|
214
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
214
|
+
{ url = "https://files.pythonhosted.org/packages/e5/81/e50bd1adf77cc31283b642b729f9aefc002b0a5e1338dec19539b902c39d/click_agentcli-0.4.1-py3-none-any.whl", hash = "sha256:a39bc96c364970225ddbede45bc4307b4f73013f32c2744e6a02807b1aee27c6", size = 26364, upload-time = "2026-08-29T01:11:32.949Z" },
|
|
215
215
|
]
|
|
216
216
|
|
|
217
217
|
[[package]]
|
|
@@ -307,7 +307,7 @@ wheels = [
|
|
|
307
307
|
|
|
308
308
|
[[package]]
|
|
309
309
|
name = "lemming-cli"
|
|
310
|
-
version = "0.5.
|
|
310
|
+
version = "0.5.2"
|
|
311
311
|
source = { editable = "." }
|
|
312
312
|
dependencies = [
|
|
313
313
|
{ name = "beautifulsoup4" },
|
|
@@ -338,12 +338,12 @@ evals = [
|
|
|
338
338
|
requires-dist = [
|
|
339
339
|
{ name = "beautifulsoup4", specifier = ">=4.13.3" },
|
|
340
340
|
{ name = "click", specifier = ">=8.0.0" },
|
|
341
|
-
{ name = "click-agentcli", specifier = ">=0.
|
|
341
|
+
{ name = "click-agentcli", specifier = ">=0.4.1" },
|
|
342
342
|
{ name = "fastapi", specifier = ">=0.124.4" },
|
|
343
343
|
{ name = "markdownify", specifier = ">=0.14.1" },
|
|
344
344
|
{ name = "pydantic", specifier = ">=2.12.5" },
|
|
345
345
|
{ name = "pyyaml", specifier = ">=6.0.3" },
|
|
346
|
-
{ name = "readability-cli", specifier = ">=0.
|
|
346
|
+
{ name = "readability-cli", specifier = ">=0.10.0" },
|
|
347
347
|
{ name = "requests", specifier = ">=2.32.3" },
|
|
348
348
|
{ name = "uvicorn", specifier = ">=0.33.0" },
|
|
349
349
|
]
|
|
@@ -573,7 +573,7 @@ wheels = [
|
|
|
573
573
|
|
|
574
574
|
[[package]]
|
|
575
575
|
name = "readability-cli"
|
|
576
|
-
version = "0.
|
|
576
|
+
version = "0.10.0"
|
|
577
577
|
source = { registry = "https://pypi.org/simple" }
|
|
578
578
|
dependencies = [
|
|
579
579
|
{ name = "beautifulsoup4" },
|
|
@@ -581,9 +581,9 @@ dependencies = [
|
|
|
581
581
|
{ name = "markdownify" },
|
|
582
582
|
{ name = "requests" },
|
|
583
583
|
]
|
|
584
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
584
|
+
sdist = { url = "https://files.pythonhosted.org/packages/cd/1e/879bc39b3e9127dfac23822b333093237b95f9ac8891295c039c21481bdd/readability_cli-0.10.0.tar.gz", hash = "sha256:201bf386850d8e465d154bab307399cc5516eb779d1032f75bc97cf38dbf636d", size = 349921, upload-time = "2026-08-23T23:44:08.64Z" }
|
|
585
585
|
wheels = [
|
|
586
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
586
|
+
{ url = "https://files.pythonhosted.org/packages/e1/e2/c573dd0f508e9eb3b4ad0167fc1d60cd361297b6ed8daaf7e4825ad7f6cf/readability_cli-0.10.0-py3-none-any.whl", hash = "sha256:09227180ce6e66ca5f9ef386a9f4e254aeecbed880296c188d0dccc33f918b15", size = 326908, upload-time = "2026-08-23T23:44:06.691Z" },
|
|
587
587
|
]
|
|
588
588
|
|
|
589
589
|
[[package]]
|
lemming_cli-0.5.1/pyrefly.toml
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Type checking covers the code that ships, not the code that exercises it.
|
|
2
|
-
#
|
|
3
|
-
# Test doubles are duck-typed on purpose, so a strict checker reports every
|
|
4
|
-
# one of them as an incompatible argument; the eval fixture projects are
|
|
5
|
-
# sample repositories seeded into a workspace, several deliberately broken,
|
|
6
|
-
# and they are data rather than source.
|
|
7
|
-
project-excludes = [
|
|
8
|
-
"**/*_test.py",
|
|
9
|
-
"**/conftest.py",
|
|
10
|
-
"**/evals/projects/**",
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
# The fixture projects are checked when a path names one directly, where
|
|
14
|
-
# project-excludes does not apply. Their imports are relative to the
|
|
15
|
-
# workspace they get seeded into, not to this repository.
|
|
16
|
-
[[sub-config]]
|
|
17
|
-
matches = "**/evals/projects/**"
|
|
18
|
-
|
|
19
|
-
[sub-config.errors]
|
|
20
|
-
missing-import = false
|
|
21
|
-
missing-module-attribute = false
|
|
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
|
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/base/README.md
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/base/calc/__init__.py
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/base/calc/legacy.py
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/base/calc/ops.py
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/base/calc/ops_test.py
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/clean/calc/ops.py
RENAMED
|
File without changes
|
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/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.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/readability/lint-debt/calc/ops.py
RENAMED
|
File without changes
|
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/add-only/README.md
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/add-only/calc/__init__.py
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/add-only/calc/ops.py
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/add-only/calc/ops_test.py
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/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.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/full-ops/README.md
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/full-ops/calc/__init__.py
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/full-ops/calc/ops.py
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/full-ops/calc/ops_test.py
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/unwired-cli/README.md
RENAMED
|
File without changes
|
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/roadmap/unwired-cli/calc/cli.py
RENAMED
|
File without changes
|
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/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.5.1 → lemming_cli-0.5.2}/src/lemming/evals/projects/task/summary/stats/__init__.py
RENAMED
|
File without changes
|
{lemming_cli-0.5.1 → lemming_cli-0.5.2}/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
|