cli-agent-runner 0.2.13__tar.gz → 0.2.14__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.
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/.vulture-whitelist.py +25 -19
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/CHANGELOG.md +16 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/PKG-INFO +9 -6
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/README.md +8 -5
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/_docgen.py +4 -2
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/_emit.py +33 -0
- cli_agent_runner-0.2.14/agent_runner/_monitor_detectors.py +581 -0
- cli_agent_runner-0.2.14/agent_runner/_monitor_registry.py +98 -0
- cli_agent_runner-0.2.14/agent_runner/_monitor_state.py +170 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/_resolve.py +20 -2
- cli_agent_runner-0.2.14/agent_runner/_round_support.py +100 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/_throttle.py +61 -1
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/_version.py +2 -2
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/api.py +19 -85
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/builtin_plugins/claude_rate_limit.py +5 -1
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/common.py +11 -5
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/events_cmd.py +1 -4
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/migrate_cmd.py +2 -3
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/serve_cmd.py +156 -9
- cli_agent_runner-0.2.14/agent_runner/config/__init__.py +64 -0
- cli_agent_runner-0.2.14/agent_runner/config/errors.py +12 -0
- cli_agent_runner-0.2.14/agent_runner/config/loader.py +107 -0
- cli_agent_runner-0.2.14/agent_runner/config/models.py +302 -0
- cli_agent_runner-0.2.14/agent_runner/config/parsers.py +527 -0
- cli_agent_runner-0.2.14/agent_runner/config/validators.py +173 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/events.py +3 -0
- cli_agent_runner-0.2.14/agent_runner/host_health.py +178 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/http_progress.py +2 -14
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/metrics.py +61 -1
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/migrations.py +47 -0
- cli_agent_runner-0.2.14/agent_runner/monitor.py +322 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/startup_check.py +15 -2
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/vcs_state.py +11 -3
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/architecture.md +22 -6
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/commands.md +4 -3
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/configuration.md +4 -4
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/migrations/0.2.md +59 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/plugins.md +2 -2
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/runbook.md +23 -15
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/contract/test_public_api_surface.py +3 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_fresh_eyes_signal.py +1 -1
- cli_agent_runner-0.2.14/tests/integration/test_monitor_seeded.py +141 -0
- cli_agent_runner-0.2.14/tests/integration/test_spawn_round_mem_floor.py +224 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_architecture.py +7 -3
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_config_error_consistency.py +20 -16
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_config_value_set_ssot.py +12 -7
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_event_int_coercion.py +7 -1
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_round_log_decode_boundary.py +3 -2
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_api_observation.py +2 -1
- cli_agent_runner-0.2.14/tests/unit/test_cli_common.py +93 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_cli_main_boundary.py +23 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_config.py +7 -5
- cli_agent_runner-0.2.14/tests/unit/test_config_nested_strictness.py +83 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_events_cmd.py +23 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_events_jsonl_decode.py +36 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_git_timeout.py +36 -0
- cli_agent_runner-0.2.14/tests/unit/test_host_health.py +160 -0
- cli_agent_runner-0.2.14/tests/unit/test_metrics.py +103 -0
- cli_agent_runner-0.2.14/tests/unit/test_migrate_cmd.py +390 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_migrations.py +9 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_monitor_assembly.py +1 -1
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_monitor_detectors.py +66 -3
- cli_agent_runner-0.2.14/tests/unit/test_monitor_round_deferred_stale.py +59 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_resolve.py +42 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_runner_throttle.py +36 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_serve_config_broken.py +1 -1
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_serve_crash_loop.py +49 -1
- cli_agent_runner-0.2.14/tests/unit/test_serve_mem_gate.py +243 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_serve_phase_schedule.py +1 -1
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_serve_round_log.py +2 -2
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_serve_schedule_gate.py +1 -1
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_serve_sentinel.py +6 -6
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_serve_startup_hooks.py +1 -1
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_startup_check.py +20 -0
- cli_agent_runner-0.2.13/agent_runner/config.py +0 -960
- cli_agent_runner-0.2.13/agent_runner/monitor.py +0 -963
- cli_agent_runner-0.2.13/tests/integration/test_monitor_seeded.py +0 -52
- cli_agent_runner-0.2.13/tests/unit/test_cli_common.py +0 -37
- cli_agent_runner-0.2.13/tests/unit/test_metrics.py +0 -48
- cli_agent_runner-0.2.13/tests/unit/test_migrate_cmd.py +0 -186
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/.codecov.yml +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/.github/workflows/ci.yml +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/.github/workflows/release.yml +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/.gitignore +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/BACKLOG.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/CODE_OF_CONDUCT.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/CONTRIBUTING.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/LICENSE +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/README.zh.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/SECURITY.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/__init__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/_redact.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/_registry.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/_serve_policy.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/_substrate.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/agent_runtime.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/api_types.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/builtin_plugins/__init__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/builtin_plugins/_constants.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/builtin_plugins/codewhale.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/builtin_plugins/default_dirty_handler.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/builtin_plugins/gemini.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/builtin_plugins/kimi.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/builtin_plugins/pi.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/__init__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/__main__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/init_cmd.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/install_cmd.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/monitor_cmd.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/peek_cmd.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/round_cmd.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/service_cmd.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/cli/upgrade_cmd.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/clock.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/context_store.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/defenses.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/hooks.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/lifecycle.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/phase_select.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/presets/__init__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/presets/aider.toml +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/presets/claude.toml +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/presets/codewhale.toml +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/presets/gemini.toml +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/presets/kimi.toml +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/presets/pi.toml +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/prompt_loader.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/remote_relay.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/round_log.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/round_view.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/runner.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/scaffold.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/schedule.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/agent_runner/service_unit.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/build.sh +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/README.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/events.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/long-running-agents.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/quickstart.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/recipes/aider.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/recipes/codewhale.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/recipes/kimi.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/recipes/pi.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/docs/thesis.md +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/pyproject.toml +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/__init__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/_clock.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/_test_helpers.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/conftest.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/contract/__init__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/e2e/__init__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/e2e/conftest.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/e2e/test_e2e_graceful_stop.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/e2e/test_e2e_install_systemd.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/e2e/test_e2e_monitor_remote.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/e2e/test_e2e_round_lifecycle.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/fixtures/cli-real-output/claude-2.1.143-assistant-tool-use.jsonl +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/fixtures/cli-real-output/claude-2.1.143-result-event.jsonl +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/fixtures/cli-real-output/gemini-0.42.0-result-event.jsonl +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/generate_vulture_whitelist.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/__init__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_auto_stop_e2e.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_bounded_run.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_context_enricher_namespacing.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_dirty_handler_seam.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_grace_kill_emission.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_install_dry_run.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_plugin_detector_loaded.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_plugin_owned_paths.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_plugin_real_flow.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_prompt_delivery_stdin.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_run_one_round_with_fake_agent.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_scaffold_presets.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_serve_loop.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_spawn_round_wedged.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_substrate_fingerprint.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/integration/test_transient_error_backoff.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/__init__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/_docs.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/_event_scan.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_atomic_write_enforced.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_authored_facts_declared.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_auto_stop_policy_ssot.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_catalogs.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_classification_ssot.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_dataclass_fields_have_producers.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_doc_builtin_plugins.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_doc_claims_match_ssot.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_doc_cli_claims.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_doc_operator_surface.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_doc_test_pointers_exist.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_doc_transient_error_claims.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_doc_usage_event_fields.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_docs_generated.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_docs_index_complete.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_entry_points_resolve.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_event_kind_registry.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_event_kinds_ssot.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_events_doc_contract.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_gen_blocks_name_their_source.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_hook_contract_docs.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_layer_2_loop_size.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_migrations_registry_ssot.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_module_boundaries.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_module_sizes.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_monitor_self_exclusion.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_no_ai_signatures.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_no_pytest_skip_on_parse_fail.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_no_raw_time.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_no_vacuous_invariants.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_peek_schema_version.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_phase_select_stateless.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_plugins_config_stable.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_readme_zh_is_pointer.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_repo_constants_patched_in_tests.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_round_num_single_source.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_round_result_stable.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_set_diff_for_auto_tool_classification.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_stash_uses_sha_not_index.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_timeout_budget_invariant.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_upstream_schema_canary.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/invariants/test_vulture_whitelist_generated.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/literate/__init__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/literate/parser.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/literate/test_parser.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/literate/test_quickstart.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/__init__.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_agent_runtime.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_agent_runtime_grace.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_agent_runtime_marker_scan.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_agent_runtime_progress.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_agent_runtime_reap.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_agent_runtime_signal_name.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_api_assemble_prompt.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_api_events_stream.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_api_install.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_api_read_round_num.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_api_resolve_phase.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_api_service.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_api_types.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_auto_stop_gating.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_catalogs.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_claude_error_detector.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_claude_foreign_schema.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_cli.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_cli_init_install.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_cli_monitor_http.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_cli_service_peek_monitor.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_cli_upgrade.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_codewhale_code_precedence.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_codewhale_plugin.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_coerce_int_poison.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_config_fresh_eyes.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_config_max_rounds.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_config_prompt_delivery.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_config_schedule.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_config_stop_file.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_config_strictness.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_config_substrate_fingerprint_paths.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_config_transient_error_action.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_context_store.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_control_char_config.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_default_dirty_handler.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_defenses.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_detect_hung_latch.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_detector_isolation.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_detector_protocol.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_dirty_handlers.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_docgen.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_effective_throttle_view.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_emit_config_migrated.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_emit_schedule.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_emit_schedule_phase_skipped.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_events.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_events_cmd_rollover.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_events_cmd_tail.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_example_dirty_handler.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_example_plugin.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_exit_cause.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_exit_classifier.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_fresh_eyes_trigger.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_gemini_plugin.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_hook_failure_isolation.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_hook_redact_order.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_hooks.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_http_progress.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_init_entry_points.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_interruptible_sleep_should_stop.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_kimi_plugin.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_lifecycle.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_monitor_cmd_severity.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_monitor_dedup_identity.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_monitor_dedup_rearm.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_monitor_detect_anomaly_repetitive.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_monitor_detect_rate_limit.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_monitor_detect_supervisor_stale.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_monitor_event_tail.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_monitor_remote.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_monitor_schedule_pause.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_network_blip_signal_guard.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_open_round_log.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_orphan_chain_single_pass.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_outer_round_ceiling.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_peek_argparse.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_peek_project_isolation.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_peek_schedule.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_peek_select.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_phase_agent_launch.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_phase_profiles.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_phase_select.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_pi_plugin.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_plugin_constants.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_presets.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_primary_prompt_file_home.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_prompt_loader.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_read_json_hardening.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_redact.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_round_cmd.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_round_cmd_sigterm.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_round_log_helpers.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_round_view.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_runner.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_runner_sidecar_ordering.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_scaffold.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_schedule.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_serve_cmd_bounded.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_serve_policy.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_service_mode.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_service_unit.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_startup_battery_exit.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_substrate.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_supervisor_stale_self_blind.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_throttle_back_off_ladder.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_throttle_plugin_classification.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_upgrade_migrate.py +0 -0
- {cli_agent_runner-0.2.13 → cli_agent_runner-0.2.14}/tests/unit/test_vcs_state.py +0 -0
|
@@ -6,6 +6,13 @@
|
|
|
6
6
|
# bare name below marks one field "used". SSOT = the @dataclass definitions in
|
|
7
7
|
# agent_runner/; a new field is covered by regenerating, never by editing here.
|
|
8
8
|
|
|
9
|
+
# agent_runner._monitor_state.LocalSource
|
|
10
|
+
log_dir
|
|
11
|
+
|
|
12
|
+
# agent_runner._monitor_state._EventTail
|
|
13
|
+
offsets
|
|
14
|
+
buffer
|
|
15
|
+
|
|
9
16
|
# agent_runner.agent_runtime.RunResult
|
|
10
17
|
exit_code
|
|
11
18
|
duration_s
|
|
@@ -109,14 +116,14 @@ agent
|
|
|
109
116
|
since_round
|
|
110
117
|
phase
|
|
111
118
|
|
|
112
|
-
# agent_runner.config.AgentConfig
|
|
119
|
+
# agent_runner.config.models.AgentConfig
|
|
113
120
|
command
|
|
114
121
|
prompt_arg_template
|
|
115
122
|
name
|
|
116
123
|
env
|
|
117
124
|
prompt_delivery
|
|
118
125
|
|
|
119
|
-
# agent_runner.config.Config
|
|
126
|
+
# agent_runner.config.models.Config
|
|
120
127
|
agent
|
|
121
128
|
runtime
|
|
122
129
|
prompt
|
|
@@ -126,7 +133,7 @@ phases
|
|
|
126
133
|
plugins
|
|
127
134
|
schedule
|
|
128
135
|
|
|
129
|
-
# agent_runner.config.MonitorConfig
|
|
136
|
+
# agent_runner.config.models.MonitorConfig
|
|
130
137
|
auth_fail_patterns
|
|
131
138
|
auth_fail_hint
|
|
132
139
|
auto_stop_on
|
|
@@ -137,34 +144,34 @@ host_health
|
|
|
137
144
|
round_progress_interval_s
|
|
138
145
|
supervisor_stale_threshold_s
|
|
139
146
|
|
|
140
|
-
# agent_runner.config.MonitorHostHealthConfig
|
|
147
|
+
# agent_runner.config.models.MonitorHostHealthConfig
|
|
141
148
|
mem_avail_min_mb
|
|
142
149
|
disk_warning_pct
|
|
143
150
|
disk_critical_pct
|
|
144
151
|
|
|
145
|
-
# agent_runner.config.PhaseOverride
|
|
152
|
+
# agent_runner.config.models.PhaseOverride
|
|
146
153
|
round_timeout_s
|
|
147
154
|
disable_pre_round_hooks
|
|
148
155
|
prompt_files
|
|
149
156
|
agent
|
|
150
157
|
schedule
|
|
151
158
|
|
|
152
|
-
# agent_runner.config.PhasesConfig
|
|
159
|
+
# agent_runner.config.models.PhasesConfig
|
|
153
160
|
list
|
|
154
161
|
overrides
|
|
155
162
|
phase_policy
|
|
156
163
|
|
|
157
|
-
# agent_runner.config.PluginsConfig
|
|
164
|
+
# agent_runner.config.models.PluginsConfig
|
|
158
165
|
disable
|
|
159
166
|
raw
|
|
160
167
|
|
|
161
|
-
# agent_runner.config.Profile
|
|
168
|
+
# agent_runner.config.models.Profile
|
|
162
169
|
agent
|
|
163
170
|
runtime
|
|
164
171
|
schedule
|
|
165
172
|
prompt_files
|
|
166
173
|
|
|
167
|
-
# agent_runner.config.PromptConfig
|
|
174
|
+
# agent_runner.config.models.PromptConfig
|
|
168
175
|
file
|
|
169
176
|
files
|
|
170
177
|
inject_context
|
|
@@ -172,7 +179,7 @@ context_injection_mode
|
|
|
172
179
|
concat_separator
|
|
173
180
|
strip_yaml_frontmatter
|
|
174
181
|
|
|
175
|
-
# agent_runner.config.RuntimeConfig
|
|
182
|
+
# agent_runner.config.models.RuntimeConfig
|
|
176
183
|
work_dir
|
|
177
184
|
log_dir
|
|
178
185
|
round_timeout_s
|
|
@@ -189,12 +196,12 @@ dry_run
|
|
|
189
196
|
max_grace_after_result_s
|
|
190
197
|
grace_kill_ignore_patterns
|
|
191
198
|
|
|
192
|
-
# agent_runner.config.ScheduleConfig
|
|
199
|
+
# agent_runner.config.models.ScheduleConfig
|
|
193
200
|
timezone
|
|
194
201
|
run_windows
|
|
195
202
|
pause_windows
|
|
196
203
|
|
|
197
|
-
# agent_runner.config.VcsConfig
|
|
204
|
+
# agent_runner.config.models.VcsConfig
|
|
198
205
|
stash_idempotency_s
|
|
199
206
|
dirty_action
|
|
200
207
|
|
|
@@ -240,6 +247,12 @@ vcs
|
|
|
240
247
|
dirty_action
|
|
241
248
|
stash_idempotency_s
|
|
242
249
|
|
|
250
|
+
# agent_runner.host_health.Pressure
|
|
251
|
+
severity
|
|
252
|
+
signal
|
|
253
|
+
message
|
|
254
|
+
context
|
|
255
|
+
|
|
243
256
|
# agent_runner.lifecycle.PIDFile
|
|
244
257
|
path
|
|
245
258
|
|
|
@@ -255,13 +268,6 @@ applied
|
|
|
255
268
|
manual
|
|
256
269
|
advisory
|
|
257
270
|
|
|
258
|
-
# agent_runner.monitor.LocalSource
|
|
259
|
-
log_dir
|
|
260
|
-
|
|
261
|
-
# agent_runner.monitor._EventTail
|
|
262
|
-
offsets
|
|
263
|
-
buffer
|
|
264
|
-
|
|
265
271
|
# agent_runner.phase_select.Selection
|
|
266
272
|
phase
|
|
267
273
|
paused
|
|
@@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.2.14] - 2026-09-03
|
|
9
|
+
|
|
10
|
+
### Breaking
|
|
11
|
+
- `[monitor.host_health]` unknown keys are now rejected, and a nested table given as a scalar (`[agent] env = "x"`, `[monitor] host_health = 1`) now raises `ConfigError` instead of crashing. **Run `agent-runner migrate` before `upgrade`**, as in 0.2.12/0.2.13.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- `mem_pressure` now gates on a cache-poor-valid signal (PSI, then swap-out rate, then combined low `MemFree`+`MemAvailable`) instead of the inflated `MemAvailable` alone, and warns once when the configured `mem_avail_min_mb` gate is provably inert on the host; `serve` defers starting a new round while the host reports pressure and terminates a ballooning round mid-flight before it goes unresponsive.
|
|
15
|
+
- An unreadable config (bad permissions, a directory) now fails cleanly with `ConfigError`/exit 78 instead of a raw traceback; a startup git-status timeout no longer crashes the check; a killed stash no longer strands `.git/index.lock`.
|
|
16
|
+
- `transient_error_backoff_capped` reports the raw detector reset time, not the ladder-extended one.
|
|
17
|
+
|
|
18
|
+
### Notes
|
|
19
|
+
- New event kinds: `round_deferred`, `round_resumed`, `round_mem_terminated`; new alert kinds: `mem_signal_unavailable`, `mem_pressure_gate_inert`. `peek --json` schema is unchanged this release.
|
|
20
|
+
- `config.py`/`monitor.py`/api's round-input helpers were reorganized into internal modules this release — no public API change.
|
|
21
|
+
|
|
22
|
+
See `docs/migrations/0.2.md`.
|
|
23
|
+
|
|
8
24
|
## [0.2.13] - 2026-09-02
|
|
9
25
|
|
|
10
26
|
### Breaking
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: cli-agent-runner
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.14
|
|
4
4
|
Summary: Restart-on-exit supervisor for autonomous CLI agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/wan9yu/cli-agent-runner
|
|
6
6
|
Project-URL: Documentation, https://github.com/wan9yu/cli-agent-runner#readme
|
|
@@ -49,7 +49,7 @@ full disks, runaway memory.
|
|
|
49
49
|
|
|
50
50
|
```
|
|
51
51
|
┌──────────────────────────────────────────┐
|
|
52
|
-
│ Layer 3: The Witness (monitor) │
|
|
52
|
+
│ Layer 3: The Witness (monitor) │ 13 detectors + auto-stop
|
|
53
53
|
├──────────────────────────────────────────┤
|
|
54
54
|
│ Layer 2: The Loop (serve) │ signal-trapping restart loop
|
|
55
55
|
├──────────────────────────────────────────┤
|
|
@@ -86,7 +86,7 @@ Full walkthrough: [`docs/quickstart.md`](docs/quickstart.md).
|
|
|
86
86
|
|---|---|
|
|
87
87
|
| `init` / `install` / `uninstall` | `peek` — state snapshot |
|
|
88
88
|
| `start` / `stop` / `kill` | `watch` — peek in a refresh loop |
|
|
89
|
-
| `restart` / `status` | `monitor` —
|
|
89
|
+
| `restart` / `status` | `monitor` — 13 detectors, alerts, auto-stop |
|
|
90
90
|
| `round` / `serve` | `events` — query / stream events.jsonl |
|
|
91
91
|
| `upgrade` / `migrate` | |
|
|
92
92
|
|
|
@@ -111,11 +111,14 @@ Optionally pause the loop during off-hours: `[schedule]` run/pause windows gate
|
|
|
111
111
|
`serve` (override with `serve --ignore-schedule`) — see the `[schedule]` section
|
|
112
112
|
of [`docs/configuration.md`](docs/configuration.md).
|
|
113
113
|
|
|
114
|
-
## Monitor:
|
|
114
|
+
## Monitor: 13 detectors
|
|
115
115
|
|
|
116
116
|
Notify only: `timeout_rate`, `hung`, `orphan_chain`, `disk_warning`,
|
|
117
|
-
`mem_pressure`, `
|
|
118
|
-
`
|
|
117
|
+
`mem_pressure`, `mem_pressure_gate_inert`, `mem_signal_unavailable`,
|
|
118
|
+
`network_fail`, `rate_limit_active`, `anomaly_repetitive_active`,
|
|
119
|
+
`supervisor_stale`. `mem_pressure` also drives a separate serve-loop
|
|
120
|
+
admission gate that defers or terminates rounds under real memory pressure —
|
|
121
|
+
see `docs/architecture.md`.
|
|
119
122
|
|
|
120
123
|
**Auto-stop the service** (continuing is harmful):
|
|
121
124
|
- `oauth_fail` — burning API quota on auth-rejected rounds
|
|
@@ -13,7 +13,7 @@ full disks, runaway memory.
|
|
|
13
13
|
|
|
14
14
|
```
|
|
15
15
|
┌──────────────────────────────────────────┐
|
|
16
|
-
│ Layer 3: The Witness (monitor) │
|
|
16
|
+
│ Layer 3: The Witness (monitor) │ 13 detectors + auto-stop
|
|
17
17
|
├──────────────────────────────────────────┤
|
|
18
18
|
│ Layer 2: The Loop (serve) │ signal-trapping restart loop
|
|
19
19
|
├──────────────────────────────────────────┤
|
|
@@ -50,7 +50,7 @@ Full walkthrough: [`docs/quickstart.md`](docs/quickstart.md).
|
|
|
50
50
|
|---|---|
|
|
51
51
|
| `init` / `install` / `uninstall` | `peek` — state snapshot |
|
|
52
52
|
| `start` / `stop` / `kill` | `watch` — peek in a refresh loop |
|
|
53
|
-
| `restart` / `status` | `monitor` —
|
|
53
|
+
| `restart` / `status` | `monitor` — 13 detectors, alerts, auto-stop |
|
|
54
54
|
| `round` / `serve` | `events` — query / stream events.jsonl |
|
|
55
55
|
| `upgrade` / `migrate` | |
|
|
56
56
|
|
|
@@ -75,11 +75,14 @@ Optionally pause the loop during off-hours: `[schedule]` run/pause windows gate
|
|
|
75
75
|
`serve` (override with `serve --ignore-schedule`) — see the `[schedule]` section
|
|
76
76
|
of [`docs/configuration.md`](docs/configuration.md).
|
|
77
77
|
|
|
78
|
-
## Monitor:
|
|
78
|
+
## Monitor: 13 detectors
|
|
79
79
|
|
|
80
80
|
Notify only: `timeout_rate`, `hung`, `orphan_chain`, `disk_warning`,
|
|
81
|
-
`mem_pressure`, `
|
|
82
|
-
`
|
|
81
|
+
`mem_pressure`, `mem_pressure_gate_inert`, `mem_signal_unavailable`,
|
|
82
|
+
`network_fail`, `rate_limit_active`, `anomaly_repetitive_active`,
|
|
83
|
+
`supervisor_stale`. `mem_pressure` also drives a separate serve-loop
|
|
84
|
+
admission gate that defers or terminates rounds under real memory pressure —
|
|
85
|
+
see `docs/architecture.md`.
|
|
83
86
|
|
|
84
87
|
**Auto-stop the service** (continuing is harmful):
|
|
85
88
|
- `oauth_fail` — burning API quota on auth-rejected rounds
|
|
@@ -255,10 +255,12 @@ RENDERERS: dict[str, Renderer] = {
|
|
|
255
255
|
"defenses-table": Renderer(render_defenses_table, "agent_runner/defenses.py catalog()"),
|
|
256
256
|
"detector-list": Renderer(
|
|
257
257
|
render_detector_list,
|
|
258
|
-
"agent_runner/
|
|
258
|
+
"agent_runner/_monitor_registry.py KNOWN_ALERT_KINDS / AUTO_STOP_ALERTS",
|
|
259
259
|
),
|
|
260
260
|
"event-kinds": Renderer(render_event_kinds_list, "agent_runner/events.py KNOWN_EVENT_KINDS"),
|
|
261
|
-
"config-schema": Renderer(
|
|
261
|
+
"config-schema": Renderer(
|
|
262
|
+
render_config_schema_table, "agent_runner/config/models.py dataclasses"
|
|
263
|
+
),
|
|
262
264
|
"verb-table": Renderer(render_verb_table, "agent_runner/cli argparse subparsers"),
|
|
263
265
|
"migrate-transforms": Renderer(
|
|
264
266
|
_render_migrate_transforms, "agent_runner/migrations.py MIGRATIONS"
|
|
@@ -21,10 +21,13 @@ __all__ = [
|
|
|
21
21
|
"emit_fresh_eyes_round_triggered",
|
|
22
22
|
"emit_max_rounds_reached",
|
|
23
23
|
"emit_rate_limit_stop",
|
|
24
|
+
"emit_round_deferred",
|
|
24
25
|
"emit_round_grace_extended",
|
|
25
26
|
"emit_round_grace_kill",
|
|
26
27
|
"emit_round_logs_prune_deferred",
|
|
28
|
+
"emit_round_mem_terminated",
|
|
27
29
|
"emit_round_progress",
|
|
30
|
+
"emit_round_resumed",
|
|
28
31
|
"emit_round_substrate_after",
|
|
29
32
|
"emit_round_substrate_before",
|
|
30
33
|
"emit_round_supervisor_wedged",
|
|
@@ -150,6 +153,36 @@ def emit_schedule_resumed(log_dir: Path, *, paused_for_s: int) -> None:
|
|
|
150
153
|
emit(log_dir, SCHEDULE_RESUMED, paused_for_s=paused_for_s)
|
|
151
154
|
|
|
152
155
|
|
|
156
|
+
def emit_round_deferred(log_dir: Path, *, severity: str, signal: str, message: str) -> None:
|
|
157
|
+
"""Emit round_deferred when the pre-round admission gate defers the next
|
|
158
|
+
round under host_health memory pressure (Group 3 action half). Paired with
|
|
159
|
+
emit_round_resumed once pressure clears -- like schedule_paused/resumed --
|
|
160
|
+
so a long defer does not trip detect_supervisor_stale (see its suppression
|
|
161
|
+
set in _monitor_detectors.py)."""
|
|
162
|
+
from agent_runner.events import ROUND_DEFERRED, emit
|
|
163
|
+
|
|
164
|
+
emit(log_dir, ROUND_DEFERRED, severity=severity, signal=signal, message=message)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def emit_round_resumed(log_dir: Path, *, deferred_for_s: int) -> None:
|
|
168
|
+
"""Emit round_resumed when a memory-pressure round deferral clears."""
|
|
169
|
+
from agent_runner.events import ROUND_RESUMED, emit
|
|
170
|
+
|
|
171
|
+
emit(log_dir, ROUND_RESUMED, deferred_for_s=deferred_for_s)
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def emit_round_mem_terminated(
|
|
175
|
+
log_dir: Path, *, pid: int, severity: str, signal: str, message: str
|
|
176
|
+
) -> None:
|
|
177
|
+
"""Emit when _spawn_round's mid-round hard floor terminated a ballooning
|
|
178
|
+
round on critical host_health pressure -- the actual coma-preventer (a
|
|
179
|
+
pre-round-only gate can't stop a single round mid-flight). Distinct from
|
|
180
|
+
round_supervisor_wedged (a wall-clock ceiling breach, unrelated cause)."""
|
|
181
|
+
from agent_runner.events import ROUND_MEM_TERMINATED, emit
|
|
182
|
+
|
|
183
|
+
emit(log_dir, ROUND_MEM_TERMINATED, pid=pid, severity=severity, signal=signal, message=message)
|
|
184
|
+
|
|
185
|
+
|
|
153
186
|
def emit_round_substrate_before(
|
|
154
187
|
log_dir: Path, *, round_num: int, git_head: str | None, paths_hash: str | None
|
|
155
188
|
) -> None:
|