cli-agent-runner 0.1.34__tar.gz → 0.1.35__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.1.34 → cli_agent_runner-0.1.35}/CHANGELOG.md +5 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/PKG-INFO +2 -2
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/README.md +1 -1
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/README.zh.md +5 -5
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/__init__.py +0 -8
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/_version.py +2 -2
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/builtin_plugins/claude_rate_limit.py +3 -4
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/commands.md +1 -1
- cli_agent_runner-0.1.35/docs/migrations/0.1.35.md +97 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/plugins.md +7 -4
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/runbook.md +4 -3
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/pyproject.toml +2 -3
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_architecture.py +1 -1
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_entry_points_resolve.py +11 -6
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/.codecov.yml +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/.github/workflows/ci.yml +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/.github/workflows/release.yml +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/.gitignore +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/.vulture-whitelist.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/CODE_OF_CONDUCT.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/CONTRIBUTING.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/LICENSE +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/SECURITY.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/_docgen.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/_emit.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/_registry.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/_substrate.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/_throttle.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/agent_runtime.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/api.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/api_types.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/builtin_plugins/__init__.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/builtin_plugins/_constants.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/builtin_plugins/gemini.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/__init__.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/__main__.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/common.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/events_cmd.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/init_cmd.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/install_cmd.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/monitor_cmd.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/peek_cmd.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/round_cmd.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/serve_cmd.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/service_cmd.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/cli/upgrade_cmd.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/config.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/context_store.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/defenses.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/detector_helpers.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/events.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/hooks.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/http_progress.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/lifecycle.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/metrics.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/monitor.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/presets/__init__.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/presets/aider.toml +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/presets/claude.toml +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/presets/gemini.toml +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/prompt_loader.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/round_log.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/round_view.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/runner.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/scaffold.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/service_unit.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/startup_check.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/vcs_state.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/build.sh +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/deploy/example-agent-runner.toml +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/deploy/launchd.plist.tmpl +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/deploy/run-loop.sh +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/deploy/systemd.service.tmpl +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/README.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/architecture.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/configuration.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/events.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/long-running-agents.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/marketing/README.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/marketing/promo-cn.html +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.16.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.17.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.19.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.20.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.21.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.22.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.23.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.24.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.25.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.26.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.27.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.28.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.29.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.30.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.31.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.32.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.33.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/migrations/0.1.34.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/quickstart.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/recipes/aider.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/docs/thesis.md +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/__init__.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/_test_helpers.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/conftest.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/contract/__init__.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/contract/test_public_api_surface.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/e2e/__init__.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/e2e/conftest.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/e2e/test_e2e_graceful_stop.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/e2e/test_e2e_install_systemd.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/e2e/test_e2e_monitor_remote.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/e2e/test_e2e_round_lifecycle.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/fixtures/cli-real-output/claude-2.1.143-assistant-tool-use.jsonl +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/fixtures/cli-real-output/claude-2.1.143-result-event.jsonl +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/fixtures/cli-real-output/gemini-0.42.0-result-event.jsonl +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/__init__.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_bounded_run.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_context_enricher_namespacing.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_fresh_eyes_signal.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_grace_kill_emission.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_install_dry_run.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_monitor_seeded.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_plugin_detector_loaded.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_plugin_owned_paths.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_plugin_real_flow.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_run_one_round_with_fake_agent.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_scaffold_presets.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_serve_loop.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_substrate_fingerprint.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_transient_error_backoff.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/__init__.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_atomic_write_enforced.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_catalogs.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_classification_ssot.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_docs_generated.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_event_kind_registry.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_event_kinds_ssot.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_events_doc_contract.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_layer_2_loop_size.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_module_boundaries.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_module_sizes.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_no_ai_signatures.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_no_pytest_skip_on_parse_fail.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_peek_schema_version.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_repo_constants_patched_in_tests.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_round_result_stable.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_stash_uses_sha_not_index.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_upstream_schema_canary.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/literate/__init__.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/literate/parser.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/literate/test_parser.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/literate/test_quickstart.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/__init__.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_agent_runtime.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_agent_runtime_grace.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_agent_runtime_progress.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_api_assemble_prompt.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_api_events_stream.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_api_install.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_api_observation.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_api_read_round_num.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_api_resolve_phase.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_api_service.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_api_types.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_auto_stop_gating.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_claude_error_detector.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_cli.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_cli_common.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_cli_init_install.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_cli_monitor_http.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_cli_service_peek_monitor.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_cli_upgrade.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_config.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_config_fresh_eyes.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_config_max_rounds.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_config_stop_file.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_config_substrate_fingerprint_paths.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_config_transient_error_action.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_context_store.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_defenses.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_detector_helpers.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_detector_protocol.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_docgen.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_events.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_events_cmd.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_fresh_eyes_trigger.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_gemini_plugin.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_hook_failure_isolation.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_hooks.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_http_progress.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_init_entry_points.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_lifecycle.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_metrics.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_monitor_assembly.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_monitor_detect_anomaly_repetitive.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_monitor_detect_rate_limit.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_monitor_detectors.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_monitor_remote.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_peek_argparse.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_peek_select.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_presets.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_prompt_loader.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_round_log_helpers.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_round_view.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_runner.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_runner_throttle.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_scaffold.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_serve_cmd_bounded.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_serve_round_log.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_serve_sentinel.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_serve_startup_hooks.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_service_unit.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_startup_check.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_substrate.py +0 -0
- {cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_vcs_state.py +0 -0
|
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.1.35] - 2026-05-20
|
|
11
|
+
|
|
12
|
+
### Removed
|
|
13
|
+
- `claude_rate_limit_detector` plugin alias (0.1.20-era back-compat layer after the 0.1.23 rename to `claude_error_detector`). Hard-cut at both entry-point and config-mapping layers. See `docs/migrations/0.1.35.md` for the 1-line TOML migration.
|
|
14
|
+
|
|
10
15
|
## [0.1.34] - 2026-05-20
|
|
11
16
|
|
|
12
17
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cli-agent-runner
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.35
|
|
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
|
|
@@ -80,7 +80,7 @@ agent-runner monitor # live anomaly detection
|
|
|
80
80
|
|
|
81
81
|
Full walkthrough: [`docs/quickstart.md`](docs/quickstart.md).
|
|
82
82
|
|
|
83
|
-
##
|
|
83
|
+
## 16 verbs
|
|
84
84
|
|
|
85
85
|
| Lifecycle | Observation |
|
|
86
86
|
|---|---|
|
|
@@ -20,9 +20,9 @@ supervisor 重启 —— 这是核心模式。中间穿插 11 条防御,避开
|
|
|
20
20
|
|
|
21
21
|
```
|
|
22
22
|
┌──────────────────────────────────────────┐
|
|
23
|
-
│ Layer 3:Witness(monitor) │
|
|
23
|
+
│ Layer 3:Witness(monitor) │ 11 个检测器 + 自动停服
|
|
24
24
|
├──────────────────────────────────────────┤
|
|
25
|
-
│ Layer 2:Loop(serve,~
|
|
25
|
+
│ Layer 2:Loop(serve,~120 LOC 薄壳) │ 捕获信号,循环拉起 round
|
|
26
26
|
├──────────────────────────────────────────┤
|
|
27
27
|
│ Layer 1:Round(round) │ 跑一次 agent,跑完即退
|
|
28
28
|
└──────────────────────────────────────────┘
|
|
@@ -57,14 +57,14 @@ agent-runner monitor # 实时异常检测,OAuth/磁盘 critical
|
|
|
57
57
|
|
|
58
58
|
完整上手流程:[`docs/quickstart.md`](docs/quickstart.md)。
|
|
59
59
|
|
|
60
|
-
##
|
|
60
|
+
## 16 个动词
|
|
61
61
|
|
|
62
62
|
| 生命周期 | 观察 |
|
|
63
63
|
|---|---|
|
|
64
64
|
| `init` / `install` / `uninstall` | `peek` —— 项目状态快照 |
|
|
65
65
|
| `start` / `stop` / `kill` / `cancel` | `watch` —— peek 在刷新循环里 |
|
|
66
|
-
| `restart` / `status` | `monitor` ——
|
|
67
|
-
| `round` / `serve` | |
|
|
66
|
+
| `restart` / `status` | `monitor` —— 11 个检测器 + 告警 + 自动停服 |
|
|
67
|
+
| `round` / `serve` / `upgrade` | `events` —— 查询 / 流式订阅 events.jsonl |
|
|
68
68
|
|
|
69
69
|
**停服三动词**有清晰的语义分层:
|
|
70
70
|
- `stop` —— 优雅,等当前 round 跑完再退(最常用)
|
|
@@ -20,11 +20,6 @@ _HOOK_GROUPS = (
|
|
|
20
20
|
# Surfaced via peek --json `plugins.disabled` for operator visibility.
|
|
21
21
|
_DISABLED_PLUGIN_NAMES: list[str] = []
|
|
22
22
|
|
|
23
|
-
# Plugin name aliases for back-compat: old entry-point name -> canonical name.
|
|
24
|
-
_PLUGIN_NAME_ALIASES: dict[str, str] = {
|
|
25
|
-
"claude_rate_limit_detector": "claude_error_detector", # 0.1.20 -> 0.1.23 rename
|
|
26
|
-
}
|
|
27
|
-
|
|
28
23
|
|
|
29
24
|
def _load_plugins_from_group(group: str) -> None:
|
|
30
25
|
"""Discover and load entry_points in ``group``, isolating per-plugin failures.
|
|
@@ -98,9 +93,6 @@ def apply_plugin_disable(names: list[str]) -> None:
|
|
|
98
93
|
if not names:
|
|
99
94
|
return
|
|
100
95
|
|
|
101
|
-
# Translate aliases so old config names keep working
|
|
102
|
-
names = [_PLUGIN_NAME_ALIASES.get(n, n) for n in names]
|
|
103
|
-
|
|
104
96
|
global _DISABLED_PLUGIN_NAMES
|
|
105
97
|
_DISABLED_PLUGIN_NAMES = list(names)
|
|
106
98
|
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.1.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 1,
|
|
21
|
+
__version__ = version = '0.1.35'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 35)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -7,10 +7,9 @@ with computed reset_at_epoch. Supervisor consumes the event.
|
|
|
7
7
|
Also emits agent_usage_recorded per-round with token/cost data from the
|
|
8
8
|
claude result event (0.1.24+).
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
rate-limit detector
|
|
12
|
-
|
|
13
|
-
via pyproject.toml.
|
|
10
|
+
Module name is historical: the original 0.1.20 single-purpose
|
|
11
|
+
rate-limit detector was generalized to multi-classification in 0.1.23
|
|
12
|
+
(class + entry-point renamed to `claude_error_detector`; module path kept).
|
|
14
13
|
"""
|
|
15
14
|
|
|
16
15
|
from __future__ import annotations
|
|
@@ -133,7 +133,7 @@ agent-runner monitor --json | jq -c # pipe alerts to a downstream consume
|
|
|
133
133
|
|
|
134
134
|
## 中文摘要
|
|
135
135
|
|
|
136
|
-
|
|
136
|
+
16 个动词:`init / install / uninstall / start / stop / kill / cancel / restart / status / round / serve / upgrade / peek / watch / events / monitor`。
|
|
137
137
|
|
|
138
138
|
观察类(peek/watch/monitor)三视角对称,全部共用 `--round / --log / --events / --select / --json` 下钻参数。
|
|
139
139
|
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# 0.1.35 — `claude_rate_limit_detector` alias removed
|
|
2
|
+
|
|
3
|
+
**Date**: 2026-05-20
|
|
4
|
+
|
|
5
|
+
## What changed
|
|
6
|
+
|
|
7
|
+
The `claude_rate_limit_detector` alias (introduced 0.1.20, kept as
|
|
8
|
+
back-compat after the 0.1.23 rename to `claude_error_detector`) was
|
|
9
|
+
hard-removed in 0.1.35 at **both** layers:
|
|
10
|
+
|
|
11
|
+
1. **Entry-point level** (`pyproject.toml`): the old key is no longer
|
|
12
|
+
declared, so `importlib.metadata.entry_points(group=...)` no longer
|
|
13
|
+
returns it.
|
|
14
|
+
2. **Config-level alias mapping** (`agent_runner/__init__.py`): the
|
|
15
|
+
`_PLUGIN_NAME_ALIASES` dict that previously auto-translated the old
|
|
16
|
+
name in `[plugins] disable/enable` was deleted. Stale TOML entries
|
|
17
|
+
now trigger the existing typo-catcher UserWarning.
|
|
18
|
+
|
|
19
|
+
The underlying class (`ClaudeErrorDetector`, module
|
|
20
|
+
`agent_runner.builtin_plugins.claude_rate_limit`) is unchanged; only
|
|
21
|
+
the alias surface was removed.
|
|
22
|
+
|
|
23
|
+
## Migration (one-line edit, only if you used the old name)
|
|
24
|
+
|
|
25
|
+
Search your `agent-runner.toml` for `claude_rate_limit_detector`:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
grep -nE 'claude_rate_limit_detector' agent-runner.toml \
|
|
29
|
+
&& echo "switch to claude_error_detector" \
|
|
30
|
+
|| echo "no migration needed"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
If found, switch:
|
|
34
|
+
|
|
35
|
+
```diff
|
|
36
|
+
[plugins]
|
|
37
|
+
- disable = ["claude_rate_limit_detector"]
|
|
38
|
+
+ disable = ["claude_error_detector"]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Same for `enable = [...]` if you opted-in by name.
|
|
42
|
+
|
|
43
|
+
The behavior is identical — same class, same hooks, same events emitted.
|
|
44
|
+
|
|
45
|
+
## Migration (consumers of `importlib.metadata.entry_points`)
|
|
46
|
+
|
|
47
|
+
If any of your code introspects the entry-point group:
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from importlib.metadata import entry_points
|
|
51
|
+
hooks = entry_points(group="agent_runner.post_round_hooks")
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The old key `claude_rate_limit_detector` is no longer in the result.
|
|
55
|
+
Either filter against the canonical name (`claude_error_detector`) or
|
|
56
|
+
iterate by `.value` (module:class target) which has been unchanged
|
|
57
|
+
since 0.1.20.
|
|
58
|
+
|
|
59
|
+
## Why hard-cut (no deprecation cycle)
|
|
60
|
+
|
|
61
|
+
The 0.1.23 rename is 12 releases / ~6 days old (as measured by the rapid
|
|
62
|
+
0.1.25-0.1.34 ship cadence). The Argus Gateway team — our only known
|
|
63
|
+
production consumer — explicitly migrated away from the old name during
|
|
64
|
+
their 2026-05-19/20 monitoring overhaul. Carrying an unused back-compat
|
|
65
|
+
entry-point line indefinitely is debt; per project policy
|
|
66
|
+
(`docs/thesis.md` — zero tech debt per release), we hard-cut.
|
|
67
|
+
|
|
68
|
+
This matches the precedent set in 0.1.29 (legacy `rate_limit_*` event
|
|
69
|
+
aliases removed) and 0.1.34 (`peek --select events.<kind>` selector
|
|
70
|
+
removed): when consumers are migrated, the back-compat layer is debt
|
|
71
|
+
that compounds.
|
|
72
|
+
|
|
73
|
+
## What did NOT change
|
|
74
|
+
|
|
75
|
+
- `claude_error_detector` (canonical entry-point key since 0.1.23) — unchanged
|
|
76
|
+
- `gemini_error_detector` — unchanged
|
|
77
|
+
- The plugin's class name (`ClaudeErrorDetector`) — unchanged
|
|
78
|
+
- All events emitted by the plugin (`transient_error_detected` /
|
|
79
|
+
`agent_usage_recorded` / `anomaly_repetitive_tool`) — unchanged
|
|
80
|
+
- Config schema — no new TOML keys
|
|
81
|
+
- Public Python API — unchanged
|
|
82
|
+
|
|
83
|
+
## Verification
|
|
84
|
+
|
|
85
|
+
After upgrade:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
agent-runner peek --json | jq '.plugins.post_round_hooks'
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Expected output:
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
["claude_error_detector", "gemini_error_detector"]
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
(Order may vary; the key thing is `claude_rate_limit_detector` is not present.)
|
|
@@ -266,13 +266,16 @@ agent-runner ships two built-in `post_round_hooks` plugins registered
|
|
|
266
266
|
automatically via their own entry-points: `claude_error_detector` (below)
|
|
267
267
|
and `gemini_error_detector` (0.1.24+, parallel for gemini CLI).
|
|
268
268
|
|
|
269
|
-
### `claude_error_detector` (0.1.23
|
|
269
|
+
### `claude_error_detector` (0.1.23+)
|
|
270
270
|
|
|
271
271
|
**Entry-point group:** `agent_runner.post_round_hooks`
|
|
272
272
|
**Module:** `agent_runner.builtin_plugins.claude_rate_limit`
|
|
273
|
-
|
|
274
|
-
`
|
|
275
|
-
|
|
273
|
+
|
|
274
|
+
Renamed from `claude_rate_limit_detector` in 0.1.23 when the detector
|
|
275
|
+
was generalized from single-rate-limit to multi-classification. The
|
|
276
|
+
old-name alias was kept as a `pyproject.toml` entry-point through 0.1.34
|
|
277
|
+
and removed in 0.1.35. Operators still using `[plugins] disable =
|
|
278
|
+
["claude_rate_limit_detector"]` must switch to `claude_error_detector`.
|
|
276
279
|
|
|
277
280
|
After each round, scans the last 50 lines of the round's JSONL log for
|
|
278
281
|
transient errors and usage data:
|
|
@@ -45,9 +45,10 @@ correctly (process still runs as your user, not root).
|
|
|
45
45
|
### Health check
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
|
-
agent-runner status
|
|
49
|
-
agent-runner peek
|
|
50
|
-
agent-runner peek --json | jq .defenses
|
|
48
|
+
agent-runner status # service running?
|
|
49
|
+
agent-runner peek # full state snapshot
|
|
50
|
+
agent-runner peek --json | jq .defenses # what's defended
|
|
51
|
+
agent-runner peek --json | jq .system.agent_process_count # orphan agent count (0.1.34+)
|
|
51
52
|
journalctl --user -u agent-runner@<project> --since "1 hour ago"
|
|
52
53
|
```
|
|
53
54
|
|
|
@@ -45,9 +45,8 @@ Changelog = "https://github.com/wan9yu/cli-agent-runner/blob/main/CHANGELOG.md"
|
|
|
45
45
|
agent-runner = "agent_runner.cli:main"
|
|
46
46
|
|
|
47
47
|
[project.entry-points."agent_runner.post_round_hooks"]
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
gemini_error_detector = "agent_runner.builtin_plugins.gemini:GeminiErrorDetector" # 0.1.24
|
|
48
|
+
claude_error_detector = "agent_runner.builtin_plugins.claude_rate_limit:ClaudeErrorDetector"
|
|
49
|
+
gemini_error_detector = "agent_runner.builtin_plugins.gemini:GeminiErrorDetector"
|
|
51
50
|
|
|
52
51
|
[project.optional-dependencies]
|
|
53
52
|
dev = [
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
- serve_cmd.py imports from a strict allowlist (no business logic)
|
|
4
4
|
- cli command files call api.X (not direct module imports)
|
|
5
5
|
- All api_types are frozen dataclasses
|
|
6
|
-
- KNOWN_ALERT_KINDS in monitor.py matches the
|
|
6
|
+
- KNOWN_ALERT_KINDS in monitor.py matches the 11 builtin detectors
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
from __future__ import annotations
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_entry_points_resolve.py
RENAMED
|
@@ -41,17 +41,22 @@ def test_each_entry_point_resolves_to_a_live_class():
|
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
def test_canonical_entry_point_names_match_class_name_attribute():
|
|
44
|
-
"""
|
|
45
|
-
`claude_rate_limit_detector` is a known back-compat alias and is skipped.
|
|
46
|
-
"""
|
|
44
|
+
"""Every pyproject entry_point key must equal the bound class's ``name``."""
|
|
47
45
|
entries = _read_post_round_hook_entries()
|
|
48
|
-
aliases = {"claude_rate_limit_detector"} # legacy alias retained intentionally
|
|
49
46
|
for name, target in entries.items():
|
|
50
|
-
if name in aliases:
|
|
51
|
-
continue
|
|
52
47
|
module_path, _, attr = target.partition(":")
|
|
53
48
|
cls = getattr(importlib.import_module(module_path), attr)
|
|
54
49
|
instance = cls()
|
|
55
50
|
assert instance.name == name, (
|
|
56
51
|
f"entry_point '{name}' bound to class with name '{instance.name}' — mismatch"
|
|
57
52
|
)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def test_legacy_claude_rate_limit_detector_alias_removed():
|
|
56
|
+
"""`claude_rate_limit_detector` alias (0.1.20-0.1.34) hard-removed in 0.1.35.
|
|
57
|
+
Consumers using the old name in `[plugins] disable/enable` must migrate.
|
|
58
|
+
"""
|
|
59
|
+
entries = _read_post_round_hook_entries()
|
|
60
|
+
assert "claude_rate_limit_detector" not in entries, (
|
|
61
|
+
"0.1.20-era alias should be gone; see docs/migrations/0.1.35.md"
|
|
62
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/.github/ISSUE_TEMPLATE/feature_request.md
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
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/builtin_plugins/__init__.py
RENAMED
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/agent_runner/builtin_plugins/_constants.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/contract/test_public_api_surface.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
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_fresh_eyes_signal.py
RENAMED
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_grace_kill_emission.py
RENAMED
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_install_dry_run.py
RENAMED
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_monitor_seeded.py
RENAMED
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_plugin_detector_loaded.py
RENAMED
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_plugin_owned_paths.py
RENAMED
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_plugin_real_flow.py
RENAMED
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_scaffold_presets.py
RENAMED
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/integration/test_substrate_fingerprint.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_atomic_write_enforced.py
RENAMED
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_classification_ssot.py
RENAMED
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_event_kind_registry.py
RENAMED
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_event_kinds_ssot.py
RENAMED
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_events_doc_contract.py
RENAMED
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_layer_2_loop_size.py
RENAMED
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_module_boundaries.py
RENAMED
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_no_ai_signatures.py
RENAMED
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_peek_schema_version.py
RENAMED
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_round_result_stable.py
RENAMED
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/invariants/test_upstream_schema_canary.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
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_agent_runtime_progress.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
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_claude_error_detector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_cli_service_peek_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_config_transient_error_action.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
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_hook_failure_isolation.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
|
{cli_agent_runner-0.1.34 → cli_agent_runner-0.1.35}/tests/unit/test_monitor_detect_rate_limit.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
|