agent-lifecycle-kit 1.83.0__tar.gz → 1.85.0__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.
- {agent_lifecycle_kit-1.83.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-1.85.0}/PKG-INFO +3 -3
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/README.md +2 -2
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/pyproject.toml +1 -1
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/_version.py +1 -1
- agent_lifecycle_kit-1.85.0/src/agent_lifecycle/adapter_sessions/redaction.py +12 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +21 -3
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +40 -12
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/lifecycle_parsers.py +8 -1
- agent_lifecycle_kit-1.85.0/src/agent_lifecycle/contracts/lifecycle_action_catalog.py +147 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/process_redaction.py +2 -1
- agent_lifecycle_kit-1.85.0/src/agent_lifecycle/contracts/public_locators.py +161 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/redaction.py +15 -4
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/research_evidence_schemas.py +11 -3
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/runner_schemas.py +6 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/schemas.py +2 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/lifecycle_gate.py +2 -7
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/research/validation.py +17 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/runner/attempt_snapshots.py +5 -1
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/runner/core.py +135 -10
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/managed_runner.py +2 -7
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/next_action.py +22 -44
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/query.py +10 -3
- agent_lifecycle_kit-1.85.0/src/agent_lifecycle/workflow/transition_contract.py +33 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +3 -3
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +3 -0
- agent_lifecycle_kit-1.83.0/src/agent_lifecycle/adapter_sessions/redaction.py +0 -7
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/LICENSE +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/NOTICE +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/README.md +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/manifest.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/setup.cfg +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/__main__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/agent_plugin_probe.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/launch_execution.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/launch_preflight.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/lifecycle_control.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/process_capture.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/process_control.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/process_groups.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/process_telemetry.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/qualification.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/session_store.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/start_input.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/start_receipts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/start_routing.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/adapter_sessions/worktree_identity.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/implementation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/ownership.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/package.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/proof_chain.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/proof_findings.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/proof_integrity.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/contracts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/qualification.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/reporting.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/benchmarks/stratification.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/changesets/git.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/changesets/snapshot.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/adapter.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/command_registry.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_adapters.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_contracts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_metrics.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_observability.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_planning.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/dispatch_research.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/errors.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/followup.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/main.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/metrics_parser.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/observability_parsers.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/parsers.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/planning_parsers.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/policy.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/project.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/research.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/start.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/strategy.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/cli/worktree.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/compiler/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/compiler/small_model_packets.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/checkpoint_store.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/checkpoints.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/external_memory.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/profiles.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/rendering.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/context/thread_bridge_context.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/agent_plugin_qualification_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/audit_optimization_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/compatibility.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/errors.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/goal_validation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/implementation_audit_validation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/launch_qualification.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/lifecycle_control_definitions.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/lifecycle_control_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/lifecycle_control_validation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/local_launch_validation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/ownership_paths.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/paths.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/performance_limits.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/persistence.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/plan_delta_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/plan_manifest_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/process_execution_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/project_profile_preset_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/proof_validation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/quality_modes.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/thread_bridge_schema_definitions.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/thread_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/thread_bridge_validation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/token_estimation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/validation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/workflow_artifact_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/workflow_authorization_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/workflow_state_schemas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/lifecycle-baselines.v1.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/model-routing-profile.v1.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/feature-implementation.v1.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/quick-change.v1.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/project-workflow-presets/research-review.v1.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/risk-execution-policy.v1.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/data/profiles/small-context-profile.v1.json +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/diagnostics/readiness.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/followup/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/followup/records.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/freeze/locks.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/freeze/package_integrity.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/goal/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/goal/records.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/goal/view.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/agent_plugin_qualification.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/context_events.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_profile.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/lifecycle_control.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/lifecycle_control_qualification.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/process_port.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/thread_bridge.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/external_dialects.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/planning.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/audit_optimization.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/audit_samples.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/cost_collection.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/costs.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/phase_resources.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/model_routing/resolver.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/canonical.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/git_objects.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/matching.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/completeness.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/continuity.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/deltas.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/manifest_contract.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/task_compatibility.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/templates.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/tiering.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/traceability.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/validation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/planning/verification.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/apply.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/proposals.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/quality_floor.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/policy/thread_bridge.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/guidance.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/merge.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/presets.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/principles.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/project/profile.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/py.typed +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/quality/packs.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/execution_resources.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/reporting/usage_export.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/research/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/research/evidence.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/research/provenance.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/resources.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review/validation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/assignments.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/contracts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/quorum.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/results.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/runner/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/specification/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/specification/completion_check.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/specification/validation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/artifacts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/authorization.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/checkpoint_gate.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/controller.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/events.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/finalization.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/gates.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/initialization.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/leases.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/operation_kernel.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/plan_adoption.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/state.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/task_outcomes.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
- {agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle_kit.egg-info/top_level.txt +0 -0
{agent_lifecycle_kit-1.83.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-1.85.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-lifecycle-kit
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.85.0
|
|
4
4
|
Summary: Provider-neutral lifecycle control layer that helps coding agents plan, execute, validate, and prove software tasks to completion.
|
|
5
5
|
Author: Agent Lifecycle Kit contributors
|
|
6
6
|
License: Apache-2.0
|
|
@@ -43,7 +43,7 @@ ALK provides a verifiable finish for external-agent work with proportionate cont
|
|
|
43
43
|
## Quick start
|
|
44
44
|
Start with [install ALK and make the first run](docs/guides/install-and-first-run.md).
|
|
45
45
|
|
|
46
|
-
It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==1.
|
|
46
|
+
It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==1.85.0`, and common `agent-lifecycle version` errors.
|
|
47
47
|
|
|
48
48
|
For a quick start, run:
|
|
49
49
|
|
|
@@ -194,7 +194,7 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
|
|
|
194
194
|
|
|
195
195
|
- Start: [English documentation](docs/README.md), [Русская документация](docs/ru/README.md), [Install](docs/guides/install-and-first-run.md), [Quickstart](docs/guides/quickstart.md), [Beginner and advanced workflows](docs/guides/beginner-and-advanced-workflows.md), [Commands by task](docs/guides/commands-by-task.md), [Research workflow](docs/guides/research-workflow.md), [Lifecycle task scenarios](docs/guides/lifecycle-cookbook.md), and [Code review workflows](docs/guides/code-review-workflows.md).
|
|
196
196
|
- Planning and adapters: [Issue to specification drafts](docs/guides/issue-to-spec.md), [Adapter install](docs/adapters/install.md), and [Adapter support matrix](docs/adapters/support-matrix.md).
|
|
197
|
-
- Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
|
|
197
|
+
- Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Public locators and redaction](docs/reference/public-locators-and-redaction.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
|
|
198
198
|
- Quality and resources: [Reference-task evaluation](docs/reference/reference-task-evaluation.md), [model routing](docs/reference/model-routing.md), [quality-cost learning](docs/reference/quality-cost-learning.md), [performance and resource budgets](docs/reference/performance-and-resource-budgets.md), [lifecycle cost accounting](docs/reference/lifecycle-cost.md), [host-local token accounting](docs/reference/host-local-token-accounting.md), [process execution observability](docs/reference/process-execution-observability.md), [Usage export](docs/reference/usage-export.md), and [Evidence integrity](docs/reference/evidence-integrity.md).
|
|
199
199
|
- Profiles and operations: [Project workflow presets](docs/reference/workflow-presets.md), [Project workflow profile](docs/reference/project-workflow-profile.md), [Read-only status views](docs/reference/read-only-status-view.md), [Adapter progress bridge](docs/reference/automatic-progress-bridge.md), [Sandbox boundaries](docs/reference/sandbox-boundaries.md), [Import mappers](docs/reference/import-mappers.md), [Episode retrieval](docs/reference/episode-retrieval.md), [Runner recovery](docs/reference/runner-recovery.md), [Cross-check profile](docs/reference/cross-check-profile.md), [Review Mesh](docs/reference/review-mesh.md), [Bug Forensics profile](docs/reference/bug-forensics.md), and [Bug Forensics context budget](docs/reference/bug-forensics-context-budget.md).
|
|
200
200
|
- Release assets: [Task templates](templates/tasks/README.md), [Neutrality scanning](docs/reference/neutrality.md), and [Release security](docs/security/release-security.md).
|
|
@@ -21,7 +21,7 @@ ALK provides a verifiable finish for external-agent work with proportionate cont
|
|
|
21
21
|
## Quick start
|
|
22
22
|
Start with [install ALK and make the first run](docs/guides/install-and-first-run.md).
|
|
23
23
|
|
|
24
|
-
It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==1.
|
|
24
|
+
It includes macOS, Linux and Windows instructions, Python 3.11-3.14, [PyPI](https://pypi.org/project/agent-lifecycle-kit/) installation with `python -m pip install agent-lifecycle-kit==1.85.0`, and common `agent-lifecycle version` errors.
|
|
25
25
|
|
|
26
26
|
For a quick start, run:
|
|
27
27
|
|
|
@@ -172,7 +172,7 @@ Adapter installation and support-level details live in [Adapter install](docs/ad
|
|
|
172
172
|
|
|
173
173
|
- Start: [English documentation](docs/README.md), [Русская документация](docs/ru/README.md), [Install](docs/guides/install-and-first-run.md), [Quickstart](docs/guides/quickstart.md), [Beginner and advanced workflows](docs/guides/beginner-and-advanced-workflows.md), [Commands by task](docs/guides/commands-by-task.md), [Research workflow](docs/guides/research-workflow.md), [Lifecycle task scenarios](docs/guides/lifecycle-cookbook.md), and [Code review workflows](docs/guides/code-review-workflows.md).
|
|
174
174
|
- Planning and adapters: [Issue to specification drafts](docs/guides/issue-to-spec.md), [Adapter install](docs/adapters/install.md), and [Adapter support matrix](docs/adapters/support-matrix.md).
|
|
175
|
-
- Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
|
|
175
|
+
- Reference: [System architecture](docs/architecture/system-architecture.md), [workflow customization and execution controls](docs/reference/workflow-customization.md), [execution strategy](docs/reference/execution-strategy.md), [CLI reference](docs/reference/cli.md), [Plan verification](docs/reference/plan-verification.md), [Research evidence](docs/reference/research-evidence.md), [Public locators and redaction](docs/reference/public-locators-and-redaction.md), [Source of truth](docs/reference/source-of-truth.md), [Managed lifecycle runner](docs/reference/managed-lifecycle-runner.md), [Managed adapter sessions](docs/reference/managed-adapter-sessions.md), [Portable Agent Plugins](docs/reference/agent-plugins.md), [Plugin publication](docs/reference/plugin-publication.md), [Implementation audit](docs/reference/implementation-audit.md), [Plan completeness](docs/reference/plan-completeness.md), [Public contracts](docs/reference/public-contracts.md), and [Readiness diagnostics](docs/reference/readiness-diagnostics.md).
|
|
176
176
|
- Quality and resources: [Reference-task evaluation](docs/reference/reference-task-evaluation.md), [model routing](docs/reference/model-routing.md), [quality-cost learning](docs/reference/quality-cost-learning.md), [performance and resource budgets](docs/reference/performance-and-resource-budgets.md), [lifecycle cost accounting](docs/reference/lifecycle-cost.md), [host-local token accounting](docs/reference/host-local-token-accounting.md), [process execution observability](docs/reference/process-execution-observability.md), [Usage export](docs/reference/usage-export.md), and [Evidence integrity](docs/reference/evidence-integrity.md).
|
|
177
177
|
- Profiles and operations: [Project workflow presets](docs/reference/workflow-presets.md), [Project workflow profile](docs/reference/project-workflow-profile.md), [Read-only status views](docs/reference/read-only-status-view.md), [Adapter progress bridge](docs/reference/automatic-progress-bridge.md), [Sandbox boundaries](docs/reference/sandbox-boundaries.md), [Import mappers](docs/reference/import-mappers.md), [Episode retrieval](docs/reference/episode-retrieval.md), [Runner recovery](docs/reference/runner-recovery.md), [Cross-check profile](docs/reference/cross-check-profile.md), [Review Mesh](docs/reference/review-mesh.md), [Bug Forensics profile](docs/reference/bug-forensics.md), and [Bug Forensics context budget](docs/reference/bug-forensics-context-budget.md).
|
|
178
178
|
- Release assets: [Task templates](templates/tasks/README.md), [Neutrality scanning](docs/reference/neutrality.md), and [Release security](docs/security/release-security.md).
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agent-lifecycle-kit"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.85.0"
|
|
8
8
|
description = "Provider-neutral lifecycle control layer that helps coding agents plan, execute, validate, and prove software tasks to completion."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11,<3.15"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""Adapter-session compatibility facade for shared receipt redaction."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from agent_lifecycle.contracts.process_redaction import (
|
|
6
|
+
normalize_public_locator,
|
|
7
|
+
redact_env_names,
|
|
8
|
+
redact_process_text,
|
|
9
|
+
redact_text,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
__all__ = ["normalize_public_locator", "redact_env_names", "redact_process_text", "redact_text"]
|
|
@@ -12,6 +12,7 @@ from agent_lifecycle.contracts import canonical_digest, read_json_object
|
|
|
12
12
|
from agent_lifecycle.policy.risk_execution import derive_risk_execution_profile
|
|
13
13
|
from agent_lifecycle.resources import builtin_profile_path
|
|
14
14
|
from agent_lifecycle.workflow import run_managed_lifecycle_step
|
|
15
|
+
from agent_lifecycle.workflow.transition_contract import validate_action_catalog
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
def managed_adapter_run(
|
|
@@ -72,7 +73,14 @@ def managed_adapter_run(
|
|
|
72
73
|
)
|
|
73
74
|
next_action = _risk_aware_next_action(next_action, risk_profile)
|
|
74
75
|
state_identity = {**_state_identity(state_path), "taskId": task_id}
|
|
75
|
-
|
|
76
|
+
catalog = validate_action_catalog()
|
|
77
|
+
proof = _managed_proof(
|
|
78
|
+
"adapter run",
|
|
79
|
+
adapter_id=adapter_id,
|
|
80
|
+
task_id=task_id,
|
|
81
|
+
state_identity=state_identity,
|
|
82
|
+
action_catalog_digest=catalog["catalogDigest"],
|
|
83
|
+
)
|
|
76
84
|
session = create_session(
|
|
77
85
|
adapter_id=adapter_id,
|
|
78
86
|
mode="MANAGED_TASK",
|
|
@@ -189,8 +197,15 @@ def _state_identity(state_path: Path) -> dict[str, Any]:
|
|
|
189
197
|
}
|
|
190
198
|
|
|
191
199
|
|
|
192
|
-
def _managed_proof(
|
|
193
|
-
|
|
200
|
+
def _managed_proof(
|
|
201
|
+
command: str,
|
|
202
|
+
*,
|
|
203
|
+
adapter_id: str,
|
|
204
|
+
task_id: str,
|
|
205
|
+
state_identity: dict[str, Any],
|
|
206
|
+
action_catalog_digest: str | None = None,
|
|
207
|
+
) -> dict[str, Any]:
|
|
208
|
+
proof = {
|
|
194
209
|
"kind": "alk-managed-adapter-session",
|
|
195
210
|
"status": "PASS",
|
|
196
211
|
"command": command,
|
|
@@ -198,6 +213,9 @@ def _managed_proof(command: str, *, adapter_id: str, task_id: str, state_identit
|
|
|
198
213
|
"taskId": task_id,
|
|
199
214
|
"stateIdentity": state_identity,
|
|
200
215
|
}
|
|
216
|
+
if action_catalog_digest is not None:
|
|
217
|
+
proof["actionCatalogDigest"] = action_catalog_digest
|
|
218
|
+
return proof
|
|
201
219
|
|
|
202
220
|
|
|
203
221
|
def _risk_aware_next_action(next_action: Any, profile: dict[str, Any]) -> dict[str, Any]:
|
|
@@ -21,7 +21,8 @@ from agent_lifecycle.cli.progress_hooks import (
|
|
|
21
21
|
maybe_emit_workflow_progress_hook,
|
|
22
22
|
validate_workflow_progress_hook_request,
|
|
23
23
|
)
|
|
24
|
-
from agent_lifecycle.contracts import LifecycleError, read_json_object, write_json_create
|
|
24
|
+
from agent_lifecycle.contracts import LifecycleError, canonical_digest, read_json_object, write_json_create
|
|
25
|
+
from agent_lifecycle.contracts.lifecycle_action_catalog import COMPATIBILITY_COMMANDS
|
|
25
26
|
from agent_lifecycle.runner import (
|
|
26
27
|
build_runner_snapshot,
|
|
27
28
|
initialize_runner_state,
|
|
@@ -404,7 +405,7 @@ def _dispatch_runner(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
404
405
|
runner_path = Path(args.runner)
|
|
405
406
|
if args.runner_command == "start":
|
|
406
407
|
workflow_state = read_json_object(Path(args.state), label="workflow state")
|
|
407
|
-
policy = load_runner_policy(Path(args.policy) if args.policy else None
|
|
408
|
+
policy = load_runner_policy(Path(args.policy)) if args.policy else None
|
|
408
409
|
runner_state = initialize_runner_state(
|
|
409
410
|
workflow_state,
|
|
410
411
|
policy=policy,
|
|
@@ -412,7 +413,10 @@ def _dispatch_runner(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
412
413
|
reason=args.reason,
|
|
413
414
|
)
|
|
414
415
|
write_runner_state_create(runner_path, runner_state)
|
|
415
|
-
return
|
|
416
|
+
return _runner_compatibility_result(
|
|
417
|
+
validate_runner_state(runner_state, workflow_state=workflow_state),
|
|
418
|
+
command="runner start",
|
|
419
|
+
)
|
|
416
420
|
runner_state = load_runner_state(runner_path)
|
|
417
421
|
if args.runner_command == "status":
|
|
418
422
|
status_workflow_state = read_json_object(Path(args.state), label="workflow state") if args.state else None
|
|
@@ -420,19 +424,25 @@ def _dispatch_runner(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
420
424
|
if status_workflow_state is None:
|
|
421
425
|
raise LifecycleError("missing-cli-argument", "runner status with --profile requires --state")
|
|
422
426
|
profile = read_json_object(Path(args.profile), label="context profile")
|
|
423
|
-
return
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
427
|
+
return _runner_compatibility_result(
|
|
428
|
+
build_runner_snapshot(
|
|
429
|
+
runner_state,
|
|
430
|
+
status_workflow_state,
|
|
431
|
+
profile=profile,
|
|
432
|
+
window=args.target_window,
|
|
433
|
+
),
|
|
434
|
+
command="runner status",
|
|
428
435
|
)
|
|
429
|
-
return
|
|
436
|
+
return _runner_compatibility_result(
|
|
437
|
+
validate_runner_state(runner_state, workflow_state=status_workflow_state),
|
|
438
|
+
command="runner status",
|
|
439
|
+
)
|
|
430
440
|
workflow_state = read_json_object(Path(args.state), label="workflow state")
|
|
431
441
|
if args.runner_command == "transition":
|
|
432
442
|
request = read_json_object(Path(args.request), label="runner transition request")
|
|
433
443
|
payload = transition_runner(runner_state, workflow_state, request)
|
|
434
444
|
write_runner_state(runner_path, payload["state"])
|
|
435
|
-
return payload["result"]
|
|
445
|
+
return _runner_compatibility_result(payload["result"], command="runner transition")
|
|
436
446
|
if args.runner_command == "stop":
|
|
437
447
|
payload = request_runner_stop(
|
|
438
448
|
runner_state,
|
|
@@ -442,7 +452,7 @@ def _dispatch_runner(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
442
452
|
reason=args.reason,
|
|
443
453
|
)
|
|
444
454
|
write_runner_state(runner_path, payload["state"])
|
|
445
|
-
return payload["result"]
|
|
455
|
+
return _runner_compatibility_result(payload["result"], command="runner stop")
|
|
446
456
|
if args.runner_command == "resume":
|
|
447
457
|
payload = resume_runner(
|
|
448
458
|
runner_state,
|
|
@@ -452,5 +462,23 @@ def _dispatch_runner(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
452
462
|
reason=args.reason,
|
|
453
463
|
)
|
|
454
464
|
write_runner_state(runner_path, payload["state"])
|
|
455
|
-
return payload["result"]
|
|
465
|
+
return _runner_compatibility_result(payload["result"], command="runner resume")
|
|
456
466
|
raise LifecycleError("command-not-implemented", "runner command is not implemented")
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
def _runner_compatibility_result(payload: dict[str, Any], *, command: str) -> dict[str, Any]:
|
|
470
|
+
"""Mark legacy runner output without changing its historical meaning."""
|
|
471
|
+
|
|
472
|
+
classification = COMPATIBILITY_COMMANDS.get(command)
|
|
473
|
+
if classification is None:
|
|
474
|
+
raise LifecycleError("invalid-runner-command", "runner command is not in the compatibility catalog")
|
|
475
|
+
digest_keys = ("resultDigest", "snapshotDigest", "validationDigest")
|
|
476
|
+
digest_key = next((key for key in digest_keys if key in payload), "validationDigest")
|
|
477
|
+
body = {key: value for key, value in payload.items() if key not in digest_keys}
|
|
478
|
+
body["deprecation"] = {
|
|
479
|
+
"status": "DEPRECATED",
|
|
480
|
+
"command": command,
|
|
481
|
+
"replacement": classification["replacement"],
|
|
482
|
+
"workflowAuthority": "workflow-state-only",
|
|
483
|
+
}
|
|
484
|
+
return {**body, digest_key: canonical_digest(body)}
|
|
@@ -6,6 +6,7 @@ import argparse
|
|
|
6
6
|
|
|
7
7
|
from agent_lifecycle.adapter_sessions import START_MODES
|
|
8
8
|
from agent_lifecycle.cli.progress_hooks import add_progress_hook_args
|
|
9
|
+
from agent_lifecycle.contracts.lifecycle_action_catalog import COMPATIBILITY_COMMANDS
|
|
9
10
|
from agent_lifecycle.contracts.review_mesh_schemas import REVIEW_MESH_MODE_IDS
|
|
10
11
|
from agent_lifecycle.resources import builtin_profile_path
|
|
11
12
|
from agent_lifecycle.review_mesh.operator_templates import REVIEW_MESH_OPERATOR_TEMPLATE_IDS
|
|
@@ -466,7 +467,13 @@ def _add_model_parser(subparsers: argparse._SubParsersAction[argparse.ArgumentPa
|
|
|
466
467
|
|
|
467
468
|
|
|
468
469
|
def _add_runner_parser(subparsers: argparse._SubParsersAction[argparse.ArgumentParser]) -> None:
|
|
469
|
-
runner = subparsers.add_parser(
|
|
470
|
+
runner = subparsers.add_parser(
|
|
471
|
+
"runner",
|
|
472
|
+
help=(
|
|
473
|
+
f"deprecated compatibility journal commands ({len(COMPATIBILITY_COMMANDS)}); "
|
|
474
|
+
"use workflow commands for lifecycle authority"
|
|
475
|
+
),
|
|
476
|
+
)
|
|
470
477
|
runner_sub = runner.add_subparsers(dest="runner_command", required=True)
|
|
471
478
|
runner_start = runner_sub.add_parser("start")
|
|
472
479
|
runner_start.add_argument("--state", required=True)
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"""Closed catalog for workflow actions and compatibility commands.
|
|
2
|
+
|
|
3
|
+
The catalog is deliberately data-only. It is shared by projections and
|
|
4
|
+
host gates, but it cannot be extended by a project profile or an adapter.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
from agent_lifecycle.contracts.canonical import canonical_digest
|
|
12
|
+
|
|
13
|
+
ACTION_CATALOG: dict[str, dict[str, Any]] = {
|
|
14
|
+
"none": {"hostActionRequired": False, "stateMutationRequired": False},
|
|
15
|
+
"blocked": {"hostActionRequired": True, "stateMutationRequired": False},
|
|
16
|
+
"start-execution": {"hostActionRequired": True, "stateMutationRequired": True},
|
|
17
|
+
"launch-tasks": {"hostActionRequired": True, "stateMutationRequired": False},
|
|
18
|
+
"wait-for-active-tasks": {"hostActionRequired": False, "stateMutationRequired": False},
|
|
19
|
+
"accept-task": {"hostActionRequired": True, "stateMutationRequired": False},
|
|
20
|
+
"wait-for-task-outcome": {"hostActionRequired": False, "stateMutationRequired": False},
|
|
21
|
+
"run-final-audit": {"hostActionRequired": True, "stateMutationRequired": False},
|
|
22
|
+
"final-audit-outcome": {"hostActionRequired": True, "stateMutationRequired": True},
|
|
23
|
+
"finalize-run": {"hostActionRequired": True, "stateMutationRequired": True},
|
|
24
|
+
"request-human-decision": {"hostActionRequired": True, "stateMutationRequired": False},
|
|
25
|
+
"record-budget-decision": {"hostActionRequired": True, "stateMutationRequired": True},
|
|
26
|
+
"record-external-action-receipt": {"hostActionRequired": True, "stateMutationRequired": True},
|
|
27
|
+
"request-execution-authorization": {"hostActionRequired": True, "stateMutationRequired": True},
|
|
28
|
+
"adopt-plan": {"hostActionRequired": True, "stateMutationRequired": True},
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
ACTION_TYPES = frozenset(ACTION_CATALOG)
|
|
32
|
+
NON_MODEL_ACTION_TYPES = frozenset(
|
|
33
|
+
{
|
|
34
|
+
"adopt-plan",
|
|
35
|
+
"final-audit-outcome",
|
|
36
|
+
"request-human-decision",
|
|
37
|
+
"record-budget-decision",
|
|
38
|
+
"record-external-action-receipt",
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
OPERATION_ACTION_TYPES: dict[str, frozenset[str]] = {
|
|
43
|
+
"file-edit": frozenset({"launch-tasks"}),
|
|
44
|
+
"shell-command": frozenset({"launch-tasks"}),
|
|
45
|
+
"task-accept": frozenset({"accept-task"}),
|
|
46
|
+
"run-finalize": frozenset({"finalize-run"}),
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
WORKFLOW_PHASE_ACTION_TYPES: dict[str, frozenset[str]] = {
|
|
50
|
+
"AWAITING_AUTHORIZATION": frozenset({"request-execution-authorization"}),
|
|
51
|
+
"PLAN_ONLY": frozenset({"none"}),
|
|
52
|
+
"READY": frozenset({"start-execution"}),
|
|
53
|
+
"RUNNING": frozenset(
|
|
54
|
+
{
|
|
55
|
+
"launch-tasks",
|
|
56
|
+
"accept-task",
|
|
57
|
+
"wait-for-active-tasks",
|
|
58
|
+
"wait-for-task-outcome",
|
|
59
|
+
"request-human-decision",
|
|
60
|
+
"run-final-audit",
|
|
61
|
+
}
|
|
62
|
+
),
|
|
63
|
+
"BLOCKED": frozenset({"adopt-plan", "request-human-decision", "none"}),
|
|
64
|
+
"WAITING_FOR_BUDGET_DECISION": frozenset({"record-budget-decision"}),
|
|
65
|
+
"WAITING_FOR_EXTERNAL_ACTION": frozenset({"record-external-action-receipt"}),
|
|
66
|
+
"FINAL_AUDIT": frozenset({"final-audit-outcome", "finalize-run"}),
|
|
67
|
+
"COMPLETE": frozenset({"none"}),
|
|
68
|
+
"FAILED": frozenset({"none"}),
|
|
69
|
+
"CANCELLED": frozenset({"none"}),
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
COMPATIBILITY_COMMANDS: dict[str, dict[str, str]] = {
|
|
73
|
+
"runner start": {"kind": "compatibility", "replacement": "workflow run"},
|
|
74
|
+
"runner status": {"kind": "compatibility", "replacement": "workflow status"},
|
|
75
|
+
"runner transition": {"kind": "compatibility", "replacement": "workflow task-*"},
|
|
76
|
+
"runner stop": {"kind": "compatibility", "replacement": "workflow pause"},
|
|
77
|
+
"runner resume": {"kind": "compatibility", "replacement": "workflow resume"},
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def build_action(action_type: str, **fields: Any) -> dict[str, Any]:
|
|
82
|
+
"""Build a projected action only if it belongs to the closed catalog."""
|
|
83
|
+
|
|
84
|
+
validate_action_type(action_type)
|
|
85
|
+
return {"type": action_type, **fields}
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def validate_action_type(action_type: Any) -> str:
|
|
89
|
+
if not isinstance(action_type, str) or action_type not in ACTION_TYPES:
|
|
90
|
+
raise ValueError(f"unsupported lifecycle action: {action_type!r}")
|
|
91
|
+
return action_type
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def action_requires_host(action_type: Any) -> bool:
|
|
95
|
+
return bool(ACTION_CATALOG.get(validate_action_type(action_type), {}).get("hostActionRequired"))
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def action_requires_state_mutation(action_type: Any) -> bool:
|
|
99
|
+
return bool(ACTION_CATALOG.get(validate_action_type(action_type), {}).get("stateMutationRequired"))
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def action_types_for_operation(operation: str) -> frozenset[str]:
|
|
103
|
+
return OPERATION_ACTION_TYPES.get(operation, frozenset())
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def validate_action_catalog() -> dict[str, Any]:
|
|
107
|
+
"""Return deterministic catalog checks used by release validation."""
|
|
108
|
+
|
|
109
|
+
blockers: list[dict[str, Any]] = []
|
|
110
|
+
for phase, actions in WORKFLOW_PHASE_ACTION_TYPES.items():
|
|
111
|
+
unknown = sorted(set(actions).difference(ACTION_TYPES))
|
|
112
|
+
if unknown:
|
|
113
|
+
blockers.append({"code": "catalog-unknown-phase-action", "phase": phase, "actions": unknown})
|
|
114
|
+
for operation, actions in OPERATION_ACTION_TYPES.items():
|
|
115
|
+
unknown = sorted(set(actions).difference(ACTION_TYPES))
|
|
116
|
+
if unknown:
|
|
117
|
+
blockers.append({"code": "catalog-unknown-operation-action", "operation": operation, "actions": unknown})
|
|
118
|
+
for command, entry in COMPATIBILITY_COMMANDS.items():
|
|
119
|
+
if entry.get("kind") != "compatibility" or not entry.get("replacement"):
|
|
120
|
+
blockers.append({"code": "catalog-invalid-command-classification", "command": command})
|
|
121
|
+
body = {
|
|
122
|
+
"schemaVersion": "agent-lifecycle-action-catalog.v1",
|
|
123
|
+
"status": "PASS" if not blockers else "FAIL",
|
|
124
|
+
"actionTypes": sorted(ACTION_TYPES),
|
|
125
|
+
"workflowPhaseActions": {key: sorted(value) for key, value in sorted(WORKFLOW_PHASE_ACTION_TYPES.items())},
|
|
126
|
+
"operationActions": {key: sorted(value) for key, value in sorted(OPERATION_ACTION_TYPES.items())},
|
|
127
|
+
"compatibilityCommands": COMPATIBILITY_COMMANDS,
|
|
128
|
+
"blockers": blockers,
|
|
129
|
+
"productionPromotionClaimed": False,
|
|
130
|
+
}
|
|
131
|
+
return {**body, "catalogDigest": canonical_digest(body)}
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
__all__ = [
|
|
135
|
+
"ACTION_CATALOG",
|
|
136
|
+
"ACTION_TYPES",
|
|
137
|
+
"COMPATIBILITY_COMMANDS",
|
|
138
|
+
"NON_MODEL_ACTION_TYPES",
|
|
139
|
+
"OPERATION_ACTION_TYPES",
|
|
140
|
+
"WORKFLOW_PHASE_ACTION_TYPES",
|
|
141
|
+
"action_requires_host",
|
|
142
|
+
"action_requires_state_mutation",
|
|
143
|
+
"action_types_for_operation",
|
|
144
|
+
"build_action",
|
|
145
|
+
"validate_action_catalog",
|
|
146
|
+
"validate_action_type",
|
|
147
|
+
]
|
|
@@ -4,6 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import re
|
|
6
6
|
|
|
7
|
+
from agent_lifecycle.contracts.public_locators import normalize_public_locator
|
|
7
8
|
from agent_lifecycle.contracts.redaction import redact_text as _redact_text
|
|
8
9
|
|
|
9
10
|
_POSIX_ABSOLUTE_PATH = re.compile(r"(?<![A-Za-z0-9_.:/-])/(?!/)[^\s\"'<>]+")
|
|
@@ -31,4 +32,4 @@ def redact_process_text(value: str) -> tuple[str, bool]:
|
|
|
31
32
|
return redacted, changed or redacted != value
|
|
32
33
|
|
|
33
34
|
|
|
34
|
-
__all__ = ["redact_env_names", "redact_process_text", "redact_text"]
|
|
35
|
+
__all__ = ["normalize_public_locator", "redact_env_names", "redact_process_text", "redact_text"]
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"""Canonical, offline validation for public HTTP(S) evidence locators."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import ipaddress
|
|
6
|
+
import re
|
|
7
|
+
from typing import Any
|
|
8
|
+
from urllib.parse import SplitResult, urlsplit, urlunsplit
|
|
9
|
+
|
|
10
|
+
from agent_lifecycle.contracts.errors import LifecycleError
|
|
11
|
+
from agent_lifecycle.contracts.schema_builders import open_object_schema
|
|
12
|
+
|
|
13
|
+
PUBLIC_LOCATOR_SCHEMA = "agent-public-evidence-locator.v1"
|
|
14
|
+
MAX_PUBLIC_LOCATOR_BYTES = 4096
|
|
15
|
+
PUBLIC_LOCATOR_SCHEMES = ("http", "https")
|
|
16
|
+
|
|
17
|
+
_HOST_LABEL = re.compile(r"^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$")
|
|
18
|
+
|
|
19
|
+
PUBLIC_LOCATOR_SCHEMAS: dict[str, dict[str, Any]] = {
|
|
20
|
+
PUBLIC_LOCATOR_SCHEMA: open_object_schema(
|
|
21
|
+
PUBLIC_LOCATOR_SCHEMA,
|
|
22
|
+
required=["schemaVersion", "status", "value", "scheme", "host"],
|
|
23
|
+
properties={
|
|
24
|
+
"status": {"const": "PASS"},
|
|
25
|
+
"value": {"type": "string", "minLength": 1, "maxLength": MAX_PUBLIC_LOCATOR_BYTES},
|
|
26
|
+
"scheme": {"enum": list(PUBLIC_LOCATOR_SCHEMES)},
|
|
27
|
+
"host": {"type": "string", "minLength": 1, "maxLength": 253},
|
|
28
|
+
"port": {"type": ["integer", "null"], "minimum": 1, "maximum": 65535},
|
|
29
|
+
"blockers": {"type": "array", "maxItems": 16, "items": {"type": "object"}},
|
|
30
|
+
"productionPromotionClaimed": {"const": False},
|
|
31
|
+
},
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def normalize_public_locator(value: str, *, label: str = "public locator") -> str:
|
|
37
|
+
"""Return one canonical HTTP(S) locator without granting network authority."""
|
|
38
|
+
|
|
39
|
+
parsed = _parse_public_locator(value, label=label)
|
|
40
|
+
hostname = _normalize_hostname(parsed.hostname, label=label)
|
|
41
|
+
port = _validated_port(parsed, label=label)
|
|
42
|
+
if port in {80, 443} and parsed.scheme.lower() == ("http" if port == 80 else "https"):
|
|
43
|
+
port = None
|
|
44
|
+
netloc = f"[{hostname}]" if ":" in hostname else hostname
|
|
45
|
+
if port is not None:
|
|
46
|
+
netloc = f"{netloc}:{port}"
|
|
47
|
+
normalized = urlunsplit((parsed.scheme.lower(), netloc, parsed.path, parsed.query, parsed.fragment))
|
|
48
|
+
if len(normalized.encode("utf-8")) > MAX_PUBLIC_LOCATOR_BYTES:
|
|
49
|
+
raise LifecycleError(
|
|
50
|
+
"public-locator-too-large",
|
|
51
|
+
f"{label}: locator exceeds {MAX_PUBLIC_LOCATOR_BYTES} bytes",
|
|
52
|
+
)
|
|
53
|
+
return normalized
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def validate_public_locator(value: Any, *, label: str = "public locator") -> dict[str, Any]:
|
|
57
|
+
"""Return a stable validation envelope for one public locator."""
|
|
58
|
+
|
|
59
|
+
try:
|
|
60
|
+
normalized = normalize_public_locator(value, label=label)
|
|
61
|
+
parsed = urlsplit(normalized)
|
|
62
|
+
return {
|
|
63
|
+
"schemaVersion": PUBLIC_LOCATOR_SCHEMA,
|
|
64
|
+
"status": "PASS",
|
|
65
|
+
"value": normalized,
|
|
66
|
+
"scheme": parsed.scheme,
|
|
67
|
+
"host": parsed.hostname,
|
|
68
|
+
"port": parsed.port,
|
|
69
|
+
"blockers": [],
|
|
70
|
+
"productionPromotionClaimed": False,
|
|
71
|
+
}
|
|
72
|
+
except LifecycleError as exc:
|
|
73
|
+
body = {
|
|
74
|
+
"schemaVersion": PUBLIC_LOCATOR_SCHEMA,
|
|
75
|
+
"status": "FAIL",
|
|
76
|
+
"value": value if isinstance(value, str) else None,
|
|
77
|
+
"scheme": None,
|
|
78
|
+
"host": None,
|
|
79
|
+
"port": None,
|
|
80
|
+
"blockers": [{"code": exc.code, "message": exc.message}],
|
|
81
|
+
"productionPromotionClaimed": False,
|
|
82
|
+
}
|
|
83
|
+
return body
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def require_public_locator(value: Any, *, label: str = "public locator") -> str:
|
|
87
|
+
"""Validate a locator or raise its stable lifecycle error."""
|
|
88
|
+
|
|
89
|
+
return normalize_public_locator(value, label=label)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def _parse_public_locator(value: Any, *, label: str) -> SplitResult:
|
|
93
|
+
if not isinstance(value, str) or not value:
|
|
94
|
+
raise LifecycleError("public-locator-required", f"{label}: HTTP(S) locator is required")
|
|
95
|
+
if len(value.encode("utf-8")) > MAX_PUBLIC_LOCATOR_BYTES:
|
|
96
|
+
raise LifecycleError(
|
|
97
|
+
"public-locator-too-large",
|
|
98
|
+
f"{label}: locator exceeds {MAX_PUBLIC_LOCATOR_BYTES} bytes",
|
|
99
|
+
)
|
|
100
|
+
if any(character.isspace() or ord(character) < 0x20 or ord(character) == 0x7F for character in value):
|
|
101
|
+
raise LifecycleError(
|
|
102
|
+
"public-locator-control-character", f"{label}: whitespace or control characters are not allowed"
|
|
103
|
+
)
|
|
104
|
+
try:
|
|
105
|
+
parsed = urlsplit(value)
|
|
106
|
+
except ValueError as exc:
|
|
107
|
+
raise LifecycleError("public-locator-invalid", f"{label}: locator cannot be parsed") from exc
|
|
108
|
+
scheme = parsed.scheme.lower()
|
|
109
|
+
if scheme not in PUBLIC_LOCATOR_SCHEMES:
|
|
110
|
+
raise LifecycleError("public-locator-scheme-unsupported", f"{label}: only HTTP(S) locators are allowed")
|
|
111
|
+
if parsed.username is not None or parsed.password is not None or "@" in parsed.netloc:
|
|
112
|
+
raise LifecycleError("public-locator-credentials-forbidden", f"{label}: URL credentials are not allowed")
|
|
113
|
+
try:
|
|
114
|
+
hostname = parsed.hostname
|
|
115
|
+
except ValueError as exc:
|
|
116
|
+
raise LifecycleError("public-locator-host-invalid", f"{label}: host is invalid") from exc
|
|
117
|
+
if not hostname:
|
|
118
|
+
raise LifecycleError("public-locator-host-required", f"{label}: host is required")
|
|
119
|
+
return parsed
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def _normalize_hostname(hostname: str | None, *, label: str) -> str:
|
|
123
|
+
if not hostname:
|
|
124
|
+
raise LifecycleError("public-locator-host-required", f"{label}: host is required")
|
|
125
|
+
host = hostname.rstrip(".")
|
|
126
|
+
if not host:
|
|
127
|
+
raise LifecycleError("public-locator-host-invalid", f"{label}: host is invalid")
|
|
128
|
+
if ":" in host:
|
|
129
|
+
try:
|
|
130
|
+
return ipaddress.IPv6Address(host).compressed.lower()
|
|
131
|
+
except ValueError as exc:
|
|
132
|
+
raise LifecycleError("public-locator-host-invalid", f"{label}: IPv6 host is invalid") from exc
|
|
133
|
+
try:
|
|
134
|
+
ascii_host = host.encode("idna").decode("ascii").lower()
|
|
135
|
+
except UnicodeError as exc:
|
|
136
|
+
raise LifecycleError("public-locator-host-invalid", f"{label}: host encoding is invalid") from exc
|
|
137
|
+
labels = ascii_host.split(".")
|
|
138
|
+
if len(ascii_host) > 253 or any(not _HOST_LABEL.fullmatch(part) for part in labels):
|
|
139
|
+
raise LifecycleError("public-locator-host-invalid", f"{label}: host is invalid")
|
|
140
|
+
return ascii_host
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def _validated_port(parsed: Any, *, label: str) -> int | None:
|
|
144
|
+
try:
|
|
145
|
+
port = parsed.port
|
|
146
|
+
except ValueError as exc:
|
|
147
|
+
raise LifecycleError("public-locator-port-invalid", f"{label}: port is invalid") from exc
|
|
148
|
+
if port is not None and not 1 <= port <= 65535:
|
|
149
|
+
raise LifecycleError("public-locator-port-invalid", f"{label}: port is invalid")
|
|
150
|
+
return port
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
__all__ = [
|
|
154
|
+
"MAX_PUBLIC_LOCATOR_BYTES",
|
|
155
|
+
"PUBLIC_LOCATOR_SCHEMA",
|
|
156
|
+
"PUBLIC_LOCATOR_SCHEMAS",
|
|
157
|
+
"PUBLIC_LOCATOR_SCHEMES",
|
|
158
|
+
"normalize_public_locator",
|
|
159
|
+
"require_public_locator",
|
|
160
|
+
"validate_public_locator",
|
|
161
|
+
]
|
{agent_lifecycle_kit-1.83.0 → agent_lifecycle_kit-1.85.0}/src/agent_lifecycle/contracts/redaction.py
RENAMED
|
@@ -3,9 +3,13 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import re
|
|
6
|
+
from contextlib import suppress
|
|
6
7
|
from typing import Any
|
|
7
8
|
from urllib.parse import unquote_plus, urlsplit, urlunsplit
|
|
8
9
|
|
|
10
|
+
from agent_lifecycle.contracts.errors import LifecycleError
|
|
11
|
+
from agent_lifecycle.contracts.public_locators import normalize_public_locator
|
|
12
|
+
|
|
9
13
|
REDACTED_VALUE = "<redacted>"
|
|
10
14
|
LOCAL_PATH_REDACTION = "<local-path>"
|
|
11
15
|
|
|
@@ -88,10 +92,14 @@ def redact_text_with_stats(value: str) -> tuple[str, bool, dict[str, int]]:
|
|
|
88
92
|
path_count = len(_LOCAL_PATH.findall(redacted))
|
|
89
93
|
redacted = _LOCAL_PATH.sub(LOCAL_PATH_REDACTION, redacted)
|
|
90
94
|
redacted = _restore_http_urls(redacted, urls)
|
|
91
|
-
return
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
+
return (
|
|
96
|
+
redacted,
|
|
97
|
+
redacted != value,
|
|
98
|
+
{
|
|
99
|
+
"secretLikeMarkersRedacted": secret_count,
|
|
100
|
+
"localPathsRedacted": path_count,
|
|
101
|
+
},
|
|
102
|
+
)
|
|
95
103
|
|
|
96
104
|
|
|
97
105
|
def contains_local_absolute_path(value: str) -> bool:
|
|
@@ -211,6 +219,9 @@ def _redact_http_url(value: str) -> tuple[str, int]:
|
|
|
211
219
|
redacted, private_key_count = _replace_matches(_PRIVATE_KEY, redacted, REDACTED_VALUE)
|
|
212
220
|
redacted, bearer_count = _replace_matches(_BEARER, redacted, f"Bearer {REDACTED_VALUE}")
|
|
213
221
|
redacted, token_count = _replace_matches(_BARE_TOKEN, redacted, REDACTED_VALUE)
|
|
222
|
+
if "@" not in netloc:
|
|
223
|
+
with suppress(LifecycleError):
|
|
224
|
+
redacted = normalize_public_locator(redacted, label="redacted URL")
|
|
214
225
|
return redacted, secret_count + private_key_count + bearer_count + token_count
|
|
215
226
|
|
|
216
227
|
|