agent-lifecycle-kit 1.76.0__tar.gz → 1.77.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.76.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-1.77.0}/PKG-INFO +3 -3
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/README.md +2 -2
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/pyproject.toml +29 -7
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/__init__.py +1 -1
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/_version.py +1 -1
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/launch_execution.py +13 -24
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/launch_preflight.py +19 -17
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +6 -5
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/process_groups.py +65 -17
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +101 -49
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +22 -14
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/audit/proof_integrity.py +15 -1
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/benchmarks/reporting.py +26 -12
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/dispatch_planning.py +15 -14
- agent_lifecycle_kit-1.77.0/src/agent_lifecycle/cli/errors.py +29 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/lifecycle_parsers.py +17 -5
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/main.py +8 -3
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/metrics_parser.py +9 -3
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/observability_parsers.py +1 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/parsers.py +19 -8
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/planning_parsers.py +7 -1
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/policy.py +7 -3
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/compiler/small_model_packets.py +20 -4
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/context/checkpoint_store.py +19 -9
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/thread_bridge_schema_definitions.py +9 -5
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/thread_bridge_schemas.py +71 -21
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/thread_bridge_validation.py +26 -14
- agent_lifecycle_kit-1.77.0/src/agent_lifecycle/data/__init__.py +1 -0
- agent_lifecycle_kit-1.77.0/src/agent_lifecycle/data/profiles/lifecycle-baselines.v1.json +70 -0
- agent_lifecycle_kit-1.77.0/src/agent_lifecycle/data/profiles/model-routing-profile.v1.json +103 -0
- agent_lifecycle_kit-1.77.0/src/agent_lifecycle/data/profiles/risk-execution-policy.v1.json +21 -0
- agent_lifecycle_kit-1.77.0/src/agent_lifecycle/data/profiles/small-context-profile.v1.json +126 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/diagnostics/readiness.py +66 -17
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/goal/view.py +7 -5
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/planning.py +19 -9
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/metrics/cost_collection.py +8 -10
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/model_routing/resolver.py +51 -23
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/canonical.py +2 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/policy/quality_floor.py +13 -2
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/project/presets.py +13 -11
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/reporting/usage_export.py +9 -4
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/research/provenance.py +12 -7
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/research/validation.py +56 -23
- agent_lifecycle_kit-1.77.0/src/agent_lifecycle/resources.py +60 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/runner/attempt_snapshots.py +45 -13
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/specification/completion_check.py +7 -2
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/leases.py +24 -7
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +3 -3
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +10 -3
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/LICENSE +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/NOTICE +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/README.md +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/manifest.json +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/setup.cfg +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/__main__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/agent_plugin_probe.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/process_capture.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/process_control.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/process_telemetry.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/qualification.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/redaction.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/session_store.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/start_input.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/start_receipts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/start_routing.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/audit/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/audit/implementation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/audit/ownership.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/audit/package.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/audit/proof_chain.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/audit/proof_findings.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/benchmarks/contracts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/benchmarks/qualification.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/benchmarks/stratification.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/changesets/git.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/adapter.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/dispatch_adapters.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/dispatch_contracts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/dispatch_metrics.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/dispatch_observability.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/dispatch_research.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/followup.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/project.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/research.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/start.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/strategy.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/cli/worktree.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/compiler/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/context/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/context/checkpoints.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/context/external_memory.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/context/profiles.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/context/rendering.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/context/thread_bridge_context.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/agent_plugin_qualification_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/audit_optimization_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/compatibility.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/errors.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/goal_validation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/implementation_audit_validation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/launch_qualification.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/local_launch_validation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/paths.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/persistence.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/plan_delta_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/process_execution_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/process_redaction.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/project_profile_preset_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/proof_validation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/quality_modes.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/redaction.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/research_evidence_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/runner_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/token_estimation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/contracts/validation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0/src/agent_lifecycle/data}/profiles/project-workflow-presets/feature-implementation.v1.json +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0/src/agent_lifecycle/data}/profiles/project-workflow-presets/quick-change.v1.json +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0/src/agent_lifecycle/data}/profiles/project-workflow-presets/research-review.v1.json +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/followup/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/followup/records.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/freeze/locks.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/freeze/package_integrity.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/goal/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/goal/records.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/agent_plugin_qualification.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/context_events.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/inspection_profile.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/process_port.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/thread_bridge.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/external_dialects.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/metrics/audit_optimization.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/metrics/audit_samples.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/metrics/costs.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/metrics/phase_resources.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/planning/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/planning/completeness.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/planning/continuity.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/planning/deltas.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/planning/task_compatibility.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/planning/templates.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/planning/tiering.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/planning/validation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/policy/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/policy/apply.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/policy/proposals.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/policy/thread_bridge.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/project/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/project/guidance.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/project/merge.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/project/principles.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/project/profile.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/py.typed +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/quality/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/quality/packs.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/reporting/execution_resources.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/research/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/research/evidence.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/review/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/review/validation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/review_mesh/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/review_mesh/assignments.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/review_mesh/contracts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/review_mesh/quorum.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/review_mesh/results.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/runner/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/runner/core.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/specification/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/specification/validation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/artifacts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/checkpoint_gate.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/controller.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/events.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/finalization.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/gates.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/managed_runner.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/next_action.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/operation_kernel.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/plan_adoption.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/query.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/state.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
- {agent_lifecycle_kit-1.76.0 → agent_lifecycle_kit-1.77.0}/src/agent_lifecycle_kit.egg-info/top_level.txt +0 -0
{agent_lifecycle_kit-1.76.0/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-1.77.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.77.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.77.0`, and common `agent-lifecycle version` errors.
|
|
47
47
|
|
|
48
48
|
For a quick start, run:
|
|
49
49
|
|
|
@@ -64,7 +64,6 @@ and pass a task from a file:
|
|
|
64
64
|
agent-lifecycle start --adapter <adapter-id> --file task.md
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
- Start with [quickstart](docs/guides/quickstart.md).
|
|
68
67
|
- Then choose a suitable scenario in [how ALK works for different tasks](docs/guides/how-alk-works.md).
|
|
69
68
|
- The boundaries of [planning-only launch](docs/reference/planning-only-launch.md) and [frozen-task launch through a verified profile](docs/reference/qualified-host-launch.md) are documented in the reference. Shipped planning profiles remain candidates with safe failure until the corresponding profile is verified.
|
|
70
69
|
- The [system architecture](docs/architecture/system-architecture.md) page explains how the project is organized, and [project comparison](docs/reference/project-comparison.md) shows how it differs from similar tools.
|
|
@@ -81,6 +80,7 @@ agent-lifecycle start --adapter <adapter-id> --file task.md
|
|
|
81
80
|
composes risk, model class, packet size, review and resource limits.
|
|
82
81
|
- Usage visibility: tokens, time, resource counters and structured execution records without sensitive data are native; monetary cost is optional and only used when a metered host reports it.
|
|
83
82
|
- Project-specific workflow settings: ALK can discover and validate uncommitted local defaults, or apply a built-in workflow preset for a common route, while the frozen plan remains authoritative.
|
|
83
|
+
- Reproducible Python maintenance: pinned development-only Ruff, mypy and coverage checks, a non-growing quality ratchet, stable redacted CLI errors, installed package resources and an explicit documented Python API.
|
|
84
84
|
- Project principles and plan deltas keep long-running work understandable: principles provide bounded defaults, while a digest-bound delta shows which plan authority changed and whether review and a new lock are required. CI also checks an acyclic module/package graph, layer direction and source-size limits; adapter inspection uses bounded literal profiles and fails closed without executing adapter code.
|
|
85
85
|
- Read-only progress and managed sessions: host UIs can show lifecycle state,
|
|
86
86
|
attested tokens and Git-style change counters; `start` accepts task text,
|
|
@@ -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.77.0`, and common `agent-lifecycle version` errors.
|
|
25
25
|
|
|
26
26
|
For a quick start, run:
|
|
27
27
|
|
|
@@ -42,7 +42,6 @@ and pass a task from a file:
|
|
|
42
42
|
agent-lifecycle start --adapter <adapter-id> --file task.md
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
- Start with [quickstart](docs/guides/quickstart.md).
|
|
46
45
|
- Then choose a suitable scenario in [how ALK works for different tasks](docs/guides/how-alk-works.md).
|
|
47
46
|
- The boundaries of [planning-only launch](docs/reference/planning-only-launch.md) and [frozen-task launch through a verified profile](docs/reference/qualified-host-launch.md) are documented in the reference. Shipped planning profiles remain candidates with safe failure until the corresponding profile is verified.
|
|
48
47
|
- The [system architecture](docs/architecture/system-architecture.md) page explains how the project is organized, and [project comparison](docs/reference/project-comparison.md) shows how it differs from similar tools.
|
|
@@ -59,6 +58,7 @@ agent-lifecycle start --adapter <adapter-id> --file task.md
|
|
|
59
58
|
composes risk, model class, packet size, review and resource limits.
|
|
60
59
|
- Usage visibility: tokens, time, resource counters and structured execution records without sensitive data are native; monetary cost is optional and only used when a metered host reports it.
|
|
61
60
|
- Project-specific workflow settings: ALK can discover and validate uncommitted local defaults, or apply a built-in workflow preset for a common route, while the frozen plan remains authoritative.
|
|
61
|
+
- Reproducible Python maintenance: pinned development-only Ruff, mypy and coverage checks, a non-growing quality ratchet, stable redacted CLI errors, installed package resources and an explicit documented Python API.
|
|
62
62
|
- Project principles and plan deltas keep long-running work understandable: principles provide bounded defaults, while a digest-bound delta shows which plan authority changed and whether review and a new lock are required. CI also checks an acyclic module/package graph, layer direction and source-size limits; adapter inspection uses bounded literal profiles and fails closed without executing adapter code.
|
|
63
63
|
- Read-only progress and managed sessions: host UIs can show lifecycle state,
|
|
64
64
|
attested tokens and Git-style change counters; `start` accepts task text,
|
|
@@ -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.77.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"
|
|
@@ -39,6 +39,13 @@ classifiers = [
|
|
|
39
39
|
]
|
|
40
40
|
dependencies = []
|
|
41
41
|
|
|
42
|
+
[dependency-groups]
|
|
43
|
+
quality = [
|
|
44
|
+
"ruff==0.16.3",
|
|
45
|
+
"mypy==1.17.1",
|
|
46
|
+
"coverage==7.10.6",
|
|
47
|
+
]
|
|
48
|
+
|
|
42
49
|
[project.scripts]
|
|
43
50
|
agent-lifecycle = "agent_lifecycle.cli:main"
|
|
44
51
|
agent-lifecycle-neutrality = "agent_lifecycle.neutrality.cli:main"
|
|
@@ -47,14 +54,29 @@ agent-lifecycle-neutrality = "agent_lifecycle.neutrality.cli:main"
|
|
|
47
54
|
where = ["src"]
|
|
48
55
|
|
|
49
56
|
[tool.setuptools.package-data]
|
|
50
|
-
agent_lifecycle = ["py.typed"]
|
|
57
|
+
agent_lifecycle = ["py.typed", "data/profiles/**/*.json"]
|
|
58
|
+
|
|
59
|
+
[tool.ruff]
|
|
60
|
+
target-version = "py311"
|
|
61
|
+
line-length = 120
|
|
62
|
+
src = ["src"]
|
|
63
|
+
|
|
64
|
+
[tool.ruff.lint]
|
|
65
|
+
select = ["E4", "E7", "E9", "F", "B", "I", "UP", "RUF", "SIM", "PTH", "ARG", "BLE"]
|
|
66
|
+
|
|
67
|
+
[tool.ruff.lint.isort]
|
|
68
|
+
known-first-party = ["agent_lifecycle"]
|
|
69
|
+
|
|
70
|
+
[tool.ruff.format]
|
|
71
|
+
quote-style = "double"
|
|
72
|
+
|
|
73
|
+
[tool.mypy]
|
|
74
|
+
python_version = "3.11"
|
|
75
|
+
files = ["src/agent_lifecycle"]
|
|
76
|
+
ignore_missing_imports = true
|
|
77
|
+
show_error_codes = true
|
|
51
78
|
|
|
52
79
|
[tool.setuptools.data-files]
|
|
53
|
-
"profiles/project-workflow-presets" = [
|
|
54
|
-
"profiles/project-workflow-presets/quick-change.v1.json",
|
|
55
|
-
"profiles/project-workflow-presets/research-review.v1.json",
|
|
56
|
-
"profiles/project-workflow-presets/feature-implementation.v1.json",
|
|
57
|
-
]
|
|
58
80
|
"benchmarks/reference-tasks" = [
|
|
59
81
|
"benchmarks/reference-tasks/README.md",
|
|
60
82
|
"benchmarks/reference-tasks/manifest.json",
|
|
@@ -5,37 +5,27 @@ from __future__ import annotations
|
|
|
5
5
|
import hashlib
|
|
6
6
|
import os
|
|
7
7
|
import subprocess
|
|
8
|
+
from collections.abc import Callable
|
|
8
9
|
from pathlib import Path
|
|
9
|
-
from typing import Any
|
|
10
|
+
from typing import Any
|
|
10
11
|
|
|
11
12
|
from agent_lifecycle.adapter_sessions.contracts import (
|
|
12
13
|
build_launch_receipt,
|
|
13
|
-
build_local_launch_probe_receipt,
|
|
14
14
|
build_local_launch_profile_receipt,
|
|
15
15
|
)
|
|
16
16
|
from agent_lifecycle.adapter_sessions.env import resolve_launch_env
|
|
17
17
|
from agent_lifecycle.adapter_sessions.local_launch_profile import (
|
|
18
18
|
build_executable_identity,
|
|
19
19
|
load_local_launch_profile,
|
|
20
|
-
local_receipt_argv,
|
|
21
20
|
local_profile_summary,
|
|
22
|
-
planning_receipt_argv,
|
|
23
|
-
render_local_launch_argv,
|
|
24
21
|
render_planning_launch_argv,
|
|
25
22
|
)
|
|
26
23
|
from agent_lifecycle.adapter_sessions.planning_launch import run_planning_launch
|
|
27
|
-
from agent_lifecycle.adapter_sessions.process import run_process as _process_runner
|
|
28
24
|
from agent_lifecycle.adapter_sessions.qualification import (
|
|
29
|
-
build_qualification_receipt,
|
|
30
|
-
require_planning_qualification_receipt,
|
|
31
|
-
require_qualification_receipt,
|
|
32
25
|
shipped_profile_digest,
|
|
33
|
-
write_qualification_receipt,
|
|
34
26
|
)
|
|
35
27
|
from agent_lifecycle.contracts import LifecycleError, canonical_digest, read_json_object
|
|
36
|
-
from agent_lifecycle.freeze import verify_plan_package_integrity
|
|
37
28
|
from agent_lifecycle.host_protocol.validation import validate_managed_launch_profile
|
|
38
|
-
from agent_lifecycle.workflow.risk_execution_gate import validate_task_risk_profile
|
|
39
29
|
|
|
40
30
|
|
|
41
31
|
def load_adapter_descriptor(adapter_id: str, descriptor_path: Path | None = None) -> tuple[Path, dict[str, Any]]:
|
|
@@ -69,7 +59,8 @@ def launch_from_descriptor(
|
|
|
69
59
|
raw_profile = descriptor.get("managedLaunch")
|
|
70
60
|
profile = raw_profile if isinstance(raw_profile, dict) else {}
|
|
71
61
|
validation = validate_managed_launch_profile(profile)
|
|
72
|
-
|
|
62
|
+
raw_adapter_id = descriptor.get("adapterId")
|
|
63
|
+
adapter_id = raw_adapter_id if isinstance(raw_adapter_id, str) else "unknown"
|
|
73
64
|
timeout_seconds = _timeout_seconds(profile)
|
|
74
65
|
blockers: list[dict[str, Any]] = []
|
|
75
66
|
if validation["status"] != "PASS":
|
|
@@ -126,8 +117,6 @@ def inspect_local_launch_profile(
|
|
|
126
117
|
)
|
|
127
118
|
|
|
128
119
|
|
|
129
|
-
|
|
130
|
-
|
|
131
120
|
def run_planning_qualification_candidate(
|
|
132
121
|
*,
|
|
133
122
|
profile_path: Path,
|
|
@@ -198,7 +187,8 @@ def run_planning_qualification_candidate(
|
|
|
198
187
|
)
|
|
199
188
|
after = identity_runner(root)
|
|
200
189
|
blockers = list(receipt.get("blockers", []))
|
|
201
|
-
|
|
190
|
+
raw_usage = receipt.get("usageEvidence")
|
|
191
|
+
usage: dict[str, Any] = raw_usage if isinstance(raw_usage, dict) else {}
|
|
202
192
|
input_tokens = usage.get("inputTokens")
|
|
203
193
|
output_tokens = usage.get("outputTokens")
|
|
204
194
|
if usage.get("confidence") != "ATTESTED" or not isinstance(input_tokens, int) or not isinstance(output_tokens, int):
|
|
@@ -332,7 +322,7 @@ def capture_git_worktree_identity(project_root: Path) -> dict[str, Any]:
|
|
|
332
322
|
try:
|
|
333
323
|
before = path.lstat()
|
|
334
324
|
if path.is_symlink():
|
|
335
|
-
payload = os.fsencode(
|
|
325
|
+
payload = os.fsencode(path.readlink())
|
|
336
326
|
kind = "symlink"
|
|
337
327
|
else:
|
|
338
328
|
payload = path.read_bytes()
|
|
@@ -379,8 +369,7 @@ def _git_bytes(root: Path, args: list[str]) -> bytes:
|
|
|
379
369
|
cwd=root,
|
|
380
370
|
shell=False,
|
|
381
371
|
stdin=subprocess.DEVNULL,
|
|
382
|
-
|
|
383
|
-
stderr=subprocess.PIPE,
|
|
372
|
+
capture_output=True,
|
|
384
373
|
timeout=10,
|
|
385
374
|
check=False,
|
|
386
375
|
)
|
|
@@ -478,7 +467,8 @@ def _planning_qualification_report(
|
|
|
478
467
|
and before.get("identityDigest") == after.get("identityDigest")
|
|
479
468
|
and not blockers
|
|
480
469
|
)
|
|
481
|
-
|
|
470
|
+
raw_policy = profile.get("qualification")
|
|
471
|
+
policy: dict[str, Any] = raw_policy if isinstance(raw_policy, dict) else {}
|
|
482
472
|
body = {
|
|
483
473
|
"schemaVersion": "agent-planning-launch-qualification-evidence.v1",
|
|
484
474
|
"status": "PASS" if passed else "FAIL",
|
|
@@ -490,7 +480,8 @@ def _planning_qualification_report(
|
|
|
490
480
|
"maxWallSeconds": approved_wall_seconds,
|
|
491
481
|
"modelTokenBudget": approved_model_token_budget,
|
|
492
482
|
},
|
|
493
|
-
"usageEvidence": usage_evidence
|
|
483
|
+
"usageEvidence": usage_evidence
|
|
484
|
+
or {
|
|
494
485
|
"confidence": "MISSING",
|
|
495
486
|
"inputTokens": None,
|
|
496
487
|
"outputTokens": None,
|
|
@@ -499,9 +490,7 @@ def _planning_qualification_report(
|
|
|
499
490
|
"planningSupportStatus": "PLANNING_ONLY_QUALIFIED" if passed else "PLANNING_ONLY_UNSUPPORTED",
|
|
500
491
|
"processCalls": 1 if receipt and receipt.get("hostLaunchStarted") else 0,
|
|
501
492
|
"modelCallsStarted": bool(receipt and receipt.get("modelCallsStarted")),
|
|
502
|
-
"worktreeUnchanged": bool(
|
|
503
|
-
before and after and before.get("identityDigest") == after.get("identityDigest")
|
|
504
|
-
),
|
|
493
|
+
"worktreeUnchanged": bool(before and after and before.get("identityDigest") == after.get("identityDigest")),
|
|
505
494
|
"planningReceiptDigest": receipt.get("receiptDigest") if receipt else None,
|
|
506
495
|
"blockers": blockers,
|
|
507
496
|
"productionPromotionClaimed": False,
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from collections.abc import Callable
|
|
5
6
|
from dataclasses import dataclass
|
|
6
7
|
from pathlib import Path
|
|
7
|
-
from typing import Any
|
|
8
|
+
from typing import Any
|
|
8
9
|
|
|
9
10
|
from agent_lifecycle.adapter_sessions.contracts import (
|
|
10
11
|
build_launch_receipt,
|
|
@@ -12,11 +13,19 @@ from agent_lifecycle.adapter_sessions.contracts import (
|
|
|
12
13
|
build_local_launch_profile_receipt,
|
|
13
14
|
)
|
|
14
15
|
from agent_lifecycle.adapter_sessions.env import resolve_launch_env
|
|
16
|
+
from agent_lifecycle.adapter_sessions.launch_execution import (
|
|
17
|
+
_attach_qualification_receipt,
|
|
18
|
+
_blocked_local_launch,
|
|
19
|
+
_blocked_planning_launch,
|
|
20
|
+
_managed_launch_blockers,
|
|
21
|
+
_state_task,
|
|
22
|
+
capture_git_worktree_identity,
|
|
23
|
+
)
|
|
15
24
|
from agent_lifecycle.adapter_sessions.local_launch_profile import (
|
|
16
25
|
build_executable_identity,
|
|
17
26
|
load_local_launch_profile,
|
|
18
|
-
local_receipt_argv,
|
|
19
27
|
local_profile_summary,
|
|
28
|
+
local_receipt_argv,
|
|
20
29
|
planning_receipt_argv,
|
|
21
30
|
render_local_launch_argv,
|
|
22
31
|
render_planning_launch_argv,
|
|
@@ -32,19 +41,8 @@ from agent_lifecycle.adapter_sessions.qualification import (
|
|
|
32
41
|
)
|
|
33
42
|
from agent_lifecycle.contracts import LifecycleError, canonical_digest, read_json_object
|
|
34
43
|
from agent_lifecycle.freeze import verify_plan_package_integrity
|
|
35
|
-
from agent_lifecycle.host_protocol.validation import validate_managed_launch_profile
|
|
36
44
|
from agent_lifecycle.workflow.risk_execution_gate import validate_task_risk_profile
|
|
37
45
|
|
|
38
|
-
from agent_lifecycle.adapter_sessions.launch_execution import (
|
|
39
|
-
_attach_qualification_receipt,
|
|
40
|
-
_blocked_local_launch,
|
|
41
|
-
_blocked_planning_launch,
|
|
42
|
-
_managed_launch_blockers,
|
|
43
|
-
_planning_qualification_report,
|
|
44
|
-
_state_task,
|
|
45
|
-
capture_git_worktree_identity,
|
|
46
|
-
)
|
|
47
|
-
|
|
48
46
|
|
|
49
47
|
@dataclass(frozen=True)
|
|
50
48
|
class _LaunchContext:
|
|
@@ -56,7 +54,7 @@ class _LaunchContext:
|
|
|
56
54
|
env: dict[str, str]
|
|
57
55
|
env_receipt: dict[str, Any]
|
|
58
56
|
timeout_seconds: float
|
|
59
|
-
shipped_digest: str
|
|
57
|
+
shipped_digest: str | None
|
|
60
58
|
runner: Callable[..., dict[str, Any]]
|
|
61
59
|
|
|
62
60
|
|
|
@@ -232,7 +230,9 @@ def _planning_task(
|
|
|
232
230
|
identity = _identity(context, strict=False)
|
|
233
231
|
try:
|
|
234
232
|
if identity["status"] != "PASS":
|
|
235
|
-
raise LifecycleError(
|
|
233
|
+
raise LifecycleError(
|
|
234
|
+
"local-launch-executable-identity-unavailable", "planning launch executable identity is unavailable"
|
|
235
|
+
)
|
|
236
236
|
qualification_receipt = require_planning_qualification_receipt(
|
|
237
237
|
project_root=context.root,
|
|
238
238
|
profile=context.profile,
|
|
@@ -345,7 +345,9 @@ def _managed_task(
|
|
|
345
345
|
if manifest.get("status") != "FROZEN":
|
|
346
346
|
raise LifecycleError("local-launch-frozen-plan-required", "local launch requires a frozen plan")
|
|
347
347
|
task = _state_task(state, task_id)
|
|
348
|
-
validate_task_risk_profile(
|
|
348
|
+
validate_task_risk_profile(
|
|
349
|
+
state, task, risk_profile, operation_id=operation_id, source_revision=source_revision
|
|
350
|
+
)
|
|
349
351
|
qualification_receipt = require_qualification_receipt(
|
|
350
352
|
project_root=context.root,
|
|
351
353
|
profile=context.profile,
|
|
@@ -389,7 +391,7 @@ def _run_managed_process(
|
|
|
389
391
|
operation_id: str,
|
|
390
392
|
source_revision: str,
|
|
391
393
|
risk_profile: dict[str, Any],
|
|
392
|
-
qualification_receipt: dict[str, Any],
|
|
394
|
+
qualification_receipt: dict[str, Any] | None,
|
|
393
395
|
host_identity: dict[str, Any],
|
|
394
396
|
) -> dict[str, Any]:
|
|
395
397
|
bindings = {
|
|
@@ -15,15 +15,14 @@ from agent_lifecycle.contracts import (
|
|
|
15
15
|
from agent_lifecycle.contracts.canonical import ensure_private_directory
|
|
16
16
|
from agent_lifecycle.contracts.persistence import (
|
|
17
17
|
create_private_json as write_json_create_private,
|
|
18
|
+
)
|
|
19
|
+
from agent_lifecycle.contracts.persistence import (
|
|
18
20
|
replace_private_json as write_json_replace_private,
|
|
19
|
-
require_private_json as require_private_file,
|
|
20
21
|
)
|
|
21
22
|
|
|
22
23
|
PLANNING_SESSION_SCHEMA = "agent-planning-session-state.v1"
|
|
23
24
|
PLANNING_SESSION_ROOT = Path(".alk/planning-sessions")
|
|
24
|
-
PLANNING_SESSION_STATES = frozenset(
|
|
25
|
-
{"INTAKE_ACCEPTED", "PLANNING_RUNNING", "REVIEW_REQUIRED", "BLOCKED"}
|
|
26
|
-
)
|
|
25
|
+
PLANNING_SESSION_STATES = frozenset({"INTAKE_ACCEPTED", "PLANNING_RUNNING", "REVIEW_REQUIRED", "BLOCKED"})
|
|
27
26
|
MAX_PLANNING_SESSION_BYTES = 65_536
|
|
28
27
|
_SESSION_ID = re.compile(r"^[a-f0-9]{32}$")
|
|
29
28
|
_TRANSITIONS = {
|
|
@@ -194,7 +193,9 @@ def _validate_state(
|
|
|
194
193
|
if state.get("state") not in PLANNING_SESSION_STATES:
|
|
195
194
|
raise LifecycleError("planning-session-state-invalid", "planning session state is invalid")
|
|
196
195
|
if state.get("implementationAuthorized") is not False or state.get("rawTaskTextStored") is not False:
|
|
197
|
-
raise LifecycleError(
|
|
196
|
+
raise LifecycleError(
|
|
197
|
+
"planning-session-authority-invalid", "planning session cannot carry implementation authority"
|
|
198
|
+
)
|
|
198
199
|
if state.get("productionPromotionClaimed") is not False:
|
|
199
200
|
raise LifecycleError("planning-session-production-claim", "planning session cannot claim production promotion")
|
|
200
201
|
body = {key: value for key, value in state.items() if key != "stateDigest"}
|
|
@@ -5,7 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
import os
|
|
6
6
|
import signal
|
|
7
7
|
import subprocess
|
|
8
|
-
import
|
|
8
|
+
from contextlib import suppress
|
|
9
9
|
from pathlib import Path
|
|
10
10
|
from typing import Any
|
|
11
11
|
|
|
@@ -39,16 +39,12 @@ class ProcessGroupOwner:
|
|
|
39
39
|
escalation = "none"
|
|
40
40
|
if self.process.poll() is None:
|
|
41
41
|
if os.name == "posix":
|
|
42
|
-
|
|
42
|
+
with suppress(ProcessLookupError):
|
|
43
43
|
os.killpg(self.pid, signal.SIGTERM)
|
|
44
|
-
except ProcessLookupError:
|
|
45
|
-
pass
|
|
46
44
|
if not _wait_process(self.process, grace_seconds):
|
|
47
45
|
escalation = "SIGKILL"
|
|
48
|
-
|
|
46
|
+
with suppress(ProcessLookupError):
|
|
49
47
|
os.killpg(self.pid, signal.SIGKILL)
|
|
50
|
-
except ProcessLookupError:
|
|
51
|
-
pass
|
|
52
48
|
_wait_process(self.process, grace_seconds)
|
|
53
49
|
elif self._job_handle is not None:
|
|
54
50
|
_terminate_windows_job(self._job_handle)
|
|
@@ -132,7 +128,10 @@ def _create_windows_job(process: subprocess.Popen[Any]) -> int | None:
|
|
|
132
128
|
import ctypes
|
|
133
129
|
from ctypes import wintypes
|
|
134
130
|
|
|
135
|
-
|
|
131
|
+
win_dll = getattr(ctypes, "WinDLL", None)
|
|
132
|
+
if not callable(win_dll):
|
|
133
|
+
return None
|
|
134
|
+
kernel32 = win_dll("kernel32", use_last_error=True)
|
|
136
135
|
kernel32.CreateJobObjectW.argtypes = [wintypes.LPVOID, wintypes.LPCWSTR]
|
|
137
136
|
kernel32.CreateJobObjectW.restype = wintypes.HANDLE
|
|
138
137
|
kernel32.SetInformationJobObject.argtypes = [wintypes.HANDLE, wintypes.INT, ctypes.c_void_p, wintypes.DWORD]
|
|
@@ -146,20 +145,45 @@ def _create_windows_job(process: subprocess.Popen[Any]) -> int | None:
|
|
|
146
145
|
return None
|
|
147
146
|
|
|
148
147
|
class IO_COUNTERS(ctypes.Structure):
|
|
149
|
-
_fields_ = [
|
|
148
|
+
_fields_ = [
|
|
149
|
+
("ReadOperationCount", ctypes.c_uint64),
|
|
150
|
+
("WriteOperationCount", ctypes.c_uint64),
|
|
151
|
+
("OtherOperationCount", ctypes.c_uint64),
|
|
152
|
+
("ReadTransferCount", ctypes.c_uint64),
|
|
153
|
+
("WriteTransferCount", ctypes.c_uint64),
|
|
154
|
+
("OtherTransferCount", ctypes.c_uint64),
|
|
155
|
+
]
|
|
150
156
|
|
|
151
157
|
class BASIC_LIMITS(ctypes.Structure):
|
|
152
|
-
_fields_ = [
|
|
158
|
+
_fields_ = [
|
|
159
|
+
("PerProcessUserTimeLimit", ctypes.c_int64),
|
|
160
|
+
("PerJobUserTimeLimit", ctypes.c_int64),
|
|
161
|
+
("LimitFlags", wintypes.DWORD),
|
|
162
|
+
("MinimumWorkingSetSize", ctypes.c_size_t),
|
|
163
|
+
("MaximumWorkingSetSize", ctypes.c_size_t),
|
|
164
|
+
("ActiveProcessLimit", wintypes.DWORD),
|
|
165
|
+
("Affinity", ctypes.c_size_t),
|
|
166
|
+
("PriorityClass", wintypes.DWORD),
|
|
167
|
+
("SchedulingClass", wintypes.DWORD),
|
|
168
|
+
]
|
|
153
169
|
|
|
154
170
|
class EXTENDED_LIMITS(ctypes.Structure):
|
|
155
|
-
_fields_ = [
|
|
171
|
+
_fields_ = [
|
|
172
|
+
("BasicLimitInformation", BASIC_LIMITS),
|
|
173
|
+
("IoInfo", IO_COUNTERS),
|
|
174
|
+
("ProcessMemoryLimit", ctypes.c_size_t),
|
|
175
|
+
("JobMemoryLimit", ctypes.c_size_t),
|
|
176
|
+
("PeakProcessMemoryUsed", ctypes.c_size_t),
|
|
177
|
+
("PeakJobMemoryUsed", ctypes.c_size_t),
|
|
178
|
+
]
|
|
156
179
|
|
|
157
180
|
limits = EXTENDED_LIMITS()
|
|
158
181
|
limits.BasicLimitInformation.LimitFlags = 0x2000 # JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE
|
|
159
182
|
if not kernel32.SetInformationJobObject(handle, 9, ctypes.byref(limits), ctypes.sizeof(limits)):
|
|
160
183
|
kernel32.CloseHandle(handle)
|
|
161
184
|
return None
|
|
162
|
-
|
|
185
|
+
process_handle = getattr(process, "_handle", None)
|
|
186
|
+
process_handle_value = getattr(process_handle, "value", process_handle)
|
|
163
187
|
if not process_handle_value:
|
|
164
188
|
kernel32.CloseHandle(handle)
|
|
165
189
|
return None
|
|
@@ -177,7 +201,10 @@ def _terminate_windows_job(handle: int) -> None:
|
|
|
177
201
|
import ctypes
|
|
178
202
|
from ctypes import wintypes
|
|
179
203
|
|
|
180
|
-
|
|
204
|
+
win_dll = getattr(ctypes, "WinDLL", None)
|
|
205
|
+
if not callable(win_dll):
|
|
206
|
+
return
|
|
207
|
+
kernel32 = win_dll("kernel32", use_last_error=True)
|
|
181
208
|
kernel32.TerminateJobObject.argtypes = [wintypes.HANDLE, wintypes.UINT]
|
|
182
209
|
kernel32.TerminateJobObject.restype = wintypes.BOOL
|
|
183
210
|
kernel32.TerminateJobObject(handle, 1)
|
|
@@ -193,11 +220,29 @@ def _windows_job_active_processes(handle: int) -> int | None:
|
|
|
193
220
|
from ctypes import wintypes
|
|
194
221
|
|
|
195
222
|
class ACCOUNTING(ctypes.Structure):
|
|
196
|
-
_fields_ = [
|
|
223
|
+
_fields_ = [
|
|
224
|
+
("TotalUserTime", ctypes.c_int64),
|
|
225
|
+
("TotalKernelTime", ctypes.c_int64),
|
|
226
|
+
("ThisPeriodTotalUserTime", ctypes.c_int64),
|
|
227
|
+
("ThisPeriodTotalKernelTime", ctypes.c_int64),
|
|
228
|
+
("TotalPageFaultCount", wintypes.DWORD),
|
|
229
|
+
("TotalProcesses", wintypes.DWORD),
|
|
230
|
+
("ActiveProcesses", wintypes.DWORD),
|
|
231
|
+
("TotalTerminatedProcesses", wintypes.DWORD),
|
|
232
|
+
]
|
|
197
233
|
|
|
198
234
|
info = ACCOUNTING()
|
|
199
|
-
|
|
200
|
-
|
|
235
|
+
win_dll = getattr(ctypes, "WinDLL", None)
|
|
236
|
+
if not callable(win_dll):
|
|
237
|
+
return None
|
|
238
|
+
kernel32 = win_dll("kernel32", use_last_error=True)
|
|
239
|
+
kernel32.QueryInformationJobObject.argtypes = [
|
|
240
|
+
wintypes.HANDLE,
|
|
241
|
+
wintypes.INT,
|
|
242
|
+
ctypes.c_void_p,
|
|
243
|
+
wintypes.DWORD,
|
|
244
|
+
ctypes.POINTER(wintypes.DWORD),
|
|
245
|
+
]
|
|
201
246
|
kernel32.QueryInformationJobObject.restype = wintypes.BOOL
|
|
202
247
|
if not kernel32.QueryInformationJobObject(handle, 1, ctypes.byref(info), ctypes.sizeof(info), None):
|
|
203
248
|
return None
|
|
@@ -211,7 +256,10 @@ def _close_windows_handle(handle: int) -> None:
|
|
|
211
256
|
import ctypes
|
|
212
257
|
from ctypes import wintypes
|
|
213
258
|
|
|
214
|
-
|
|
259
|
+
win_dll = getattr(ctypes, "WinDLL", None)
|
|
260
|
+
if not callable(win_dll):
|
|
261
|
+
return
|
|
262
|
+
kernel32 = win_dll("kernel32", use_last_error=True)
|
|
215
263
|
kernel32.CloseHandle.argtypes = [wintypes.HANDLE]
|
|
216
264
|
kernel32.CloseHandle.restype = wintypes.BOOL
|
|
217
265
|
kernel32.CloseHandle(handle)
|