agent-lifecycle-kit 1.63.2__tar.gz → 1.64.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.63.2/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-1.64.0}/PKG-INFO +3 -3
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/README.md +2 -2
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/pyproject.toml +1 -1
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/_version.py +1 -1
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/session_store.py +2 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/unified_start.py +7 -4
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/dispatch_observability.py +68 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/parsers.py +19 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/context/__init__.py +18 -0
- agent_lifecycle_kit-1.64.0/src/agent_lifecycle/context/checkpoint_store.py +198 -0
- agent_lifecycle_kit-1.64.0/src/agent_lifecycle/context/checkpoints.py +378 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/compatibility.py +3 -0
- agent_lifecycle_kit-1.64.0/src/agent_lifecycle/contracts/context_checkpoint_schemas.py +163 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/redaction.py +14 -1
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/schemas.py +2 -0
- agent_lifecycle_kit-1.64.0/src/agent_lifecycle/host_protocol/context_events.py +122 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/__init__.py +6 -0
- agent_lifecycle_kit-1.64.0/src/agent_lifecycle/workflow/checkpoint_gate.py +196 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/operation_kernel.py +9 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/plan_adoption.py +2 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0/src/agent_lifecycle_kit.egg-info}/PKG-INFO +3 -3
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle_kit.egg-info/SOURCES.txt +5 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/LICENSE +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/NOTICE +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/README.md +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/manifest.json +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/rt01-planning/oracle.json +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/rt01-planning/task.md +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/rt02-architecture-review/oracle.json +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/rt02-architecture-review/task.md +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/rt03-bug-forensics/oracle.json +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/rt03-bug-forensics/task.md +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/rt04-s1-managed-task/oracle.json +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/rt04-s1-managed-task/task.md +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/oracle.json +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/benchmarks/reference-tasks/rt05-s2-evidence-task/task.md +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/setup.cfg +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/__main__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/contracts.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/env.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/launcher.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/local_launch_profile.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/planning_launch.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/planning_session.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/process.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/qualification.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/redaction.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/task_intake.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/adapter_sessions/workflow_bridge.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/audit/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/audit/bug_forensics.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/audit/implementation.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/audit/ownership.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/audit/package.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/audit/proof_integrity.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/audit/review_verdict.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/benchmarks/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/benchmarks/comparison.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/benchmarks/contracts.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/benchmarks/evaluator.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/benchmarks/oracles.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/benchmarks/reporting.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/changesets/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/changesets/git.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/adapter.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/benchmarks.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/dispatch.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/dispatch_adapters.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/dispatch_contracts.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/dispatch_lifecycle.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/dispatch_planning.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/followup.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/host_launch.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/main.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/metrics_parser.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/policy.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/progress_hooks.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/project.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/start.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/strategy.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/worktree.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/compiler/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/compiler/small_model_packets.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/compiler/task_packets.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/context/episode_retrieval.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/context/external_memory.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/context/profiles.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/context/rendering.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/adapter_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/adapter_event_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/adapter_session_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/adapter_task_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/audit_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/benchmark_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/bug_forensics_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/canonical.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/context_model_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/core_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/cross_check_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/errors.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/evidence_import_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/execution_strategy_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/host_capability_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/import_dialect_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/metric_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/paths.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/plan_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/planning_launch_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/policy_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/progress_bridge_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/progress_hook_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/project_profile_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/proof_integrity_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/release_contract_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/review_mesh_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/review_quality_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/review_verdict.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/runner_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/runner_worktree_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/sandbox_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/schema_builders.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/status_goal_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/task_template_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/contracts/usage_export_schemas.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/diagnostics/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/diagnostics/bundles.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/diagnostics/installation_catalog.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/diagnostics/readiness.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/evidence_index/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/evidence_index/core.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/evidence_index/episode_index.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/evidence_index/external_context.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/followup/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/followup/records.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/freeze/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/freeze/locks.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/goal/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/goal/records.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/goal/view.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/acp_capability.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/capabilities.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/contracts.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/event_capture.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/events.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/inspection.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/inspection_claude.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/inspection_codex.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/inspection_common.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/inspection_cursor.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/inspection_gemini_cli.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/inspection_hermes.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/inspection_kimi_code.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/inspection_opencode.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/inspection_qwen_code.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/receipts.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/scaffold.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/usage_normalizers.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/host_protocol/validation.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/agentskills_profile.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/bmad_profile.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/constitution_adr.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/dialect_profiles.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/external_agent.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/external_dialects.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/external_workflow.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/multi_markdown.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/openspec_profile.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/planning.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/spec_kit_profile.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/imports/spec_kitty_profile.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/metrics/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/metrics/cost_collection.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/metrics/costs.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/metrics/outcome_index.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/metrics/phase_resources.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/metrics/recommendations.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/metrics/regression_signals.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/metrics/usage_export.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/model_routing/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/model_routing/profiles.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/model_routing/receipts.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/model_routing/resolver.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/__main__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/authority.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/canonical.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/cli.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/ed25519.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/errors.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/gate.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/paths.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/policy.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/receipt.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/scanner.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/neutrality/test_runner.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/planning/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/planning/acceptance_markdown.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/planning/completeness.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/planning/continuity.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/planning/task_compatibility.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/planning/templates.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/planning/tiering.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/planning/validation.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/policy/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/policy/adaptive_lifecycle.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/policy/apply.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/policy/execution_strategy.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/policy/proposals.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/policy/quality_floor.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/policy/risk_execution.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/policy/runtime_receipts.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/project/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/project/guidance.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/project/merge.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/project/profile.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/py.typed +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/quality/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/quality/bug_forensics.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/quality/bug_forensics_advisor.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/quality/bug_forensics_recipes.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/quality/cross_check.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/quality/failure_classification.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/quality/packs.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/reporting/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/reporting/change_summary.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/reporting/event_feed.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/reporting/progress_bridge.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/reporting/progress_hooks.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/reporting/progress_terminal.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/reporting/progress_view.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/reporting/status_view.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/reporting/usage_export.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/review/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/review/validation.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/review_mesh/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/review_mesh/assignments.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/review_mesh/contracts.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/review_mesh/operator_templates.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/review_mesh/quorum.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/review_mesh/recommendation.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/review_mesh/results.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/review_mesh/synthesis.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/runner/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/runner/attempt_snapshots.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/runner/core.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/runner/sandbox_receipts.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/specification/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/specification/completion_check.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/specification/completion_gate.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/specification/completion_signal.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/specification/validation.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/artifacts.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/budget_decisions.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/budget_policy.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/budget_receipts.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/bug_forensics_gates.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/controller.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/events.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/final_proof_integrity.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/finalization.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/gates.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/implementation_audit_gate.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/leases.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/lineage.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/managed_runner.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/model_usage.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/next_action.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/query.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/review_mesh_gate.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/reviews.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/risk_execution_gate.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/run_transitions.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/sandbox_policy.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/selectors.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/state.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/workflow/task_transitions.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/worktree/__init__.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/worktree/isolation.py +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle_kit.egg-info/dependency_links.txt +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle_kit.egg-info/entry_points.txt +0 -0
- {agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle_kit.egg-info/top_level.txt +0 -0
{agent_lifecycle_kit-1.63.2/src/agent_lifecycle_kit.egg-info → agent_lifecycle_kit-1.64.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.64.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
|
|
@@ -61,7 +61,7 @@ and start a task with:
|
|
|
61
61
|
agent-lifecycle start --adapter <adapter-id> --file task.md
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
The published [PyPI package](https://pypi.org/project/agent-lifecycle-kit/) supports Python 3.11-3.14; install it with `python -m pip install agent-lifecycle-kit==1.
|
|
64
|
+
The published [PyPI package](https://pypi.org/project/agent-lifecycle-kit/) supports Python 3.11-3.14; install it with `python -m pip install agent-lifecycle-kit==1.64.0`.
|
|
65
65
|
Use [Quickstart](docs/guides/quickstart.md) for the first task and [Commands by task](docs/guides/commands-by-task.md) for detailed operations.
|
|
66
66
|
Continue with [task workflows](docs/guides/how-alk-works.md) and
|
|
67
67
|
[project profile init](docs/reference/project-workflow-profile.md),
|
|
@@ -69,7 +69,7 @@ Continue with [task workflows](docs/guides/how-alk-works.md) and
|
|
|
69
69
|
[Lifecycle task scenarios](docs/guides/lifecycle-cookbook.md). The [planning-only](docs/reference/planning-only-launch.md)
|
|
70
70
|
and [qualified frozen-task](docs/reference/qualified-host-launch.md) guides define launch boundaries.
|
|
71
71
|
See [System architecture](docs/architecture/system-architecture.md), [Project comparison](docs/reference/project-comparison.md),
|
|
72
|
-
and [Документация на русском](docs/ru/README.md).
|
|
72
|
+
[context checkpoints](docs/reference/context-checkpoints.md), and [Документация на русском](docs/ru/README.md).
|
|
73
73
|
|
|
74
74
|
## What it gives you
|
|
75
75
|
- A finish-oriented lifecycle: plan, execute, review, and prove the result.
|
|
@@ -39,7 +39,7 @@ and start a task with:
|
|
|
39
39
|
agent-lifecycle start --adapter <adapter-id> --file task.md
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
The published [PyPI package](https://pypi.org/project/agent-lifecycle-kit/) supports Python 3.11-3.14; install it with `python -m pip install agent-lifecycle-kit==1.
|
|
42
|
+
The published [PyPI package](https://pypi.org/project/agent-lifecycle-kit/) supports Python 3.11-3.14; install it with `python -m pip install agent-lifecycle-kit==1.64.0`.
|
|
43
43
|
Use [Quickstart](docs/guides/quickstart.md) for the first task and [Commands by task](docs/guides/commands-by-task.md) for detailed operations.
|
|
44
44
|
Continue with [task workflows](docs/guides/how-alk-works.md) and
|
|
45
45
|
[project profile init](docs/reference/project-workflow-profile.md),
|
|
@@ -47,7 +47,7 @@ Continue with [task workflows](docs/guides/how-alk-works.md) and
|
|
|
47
47
|
[Lifecycle task scenarios](docs/guides/lifecycle-cookbook.md). The [planning-only](docs/reference/planning-only-launch.md)
|
|
48
48
|
and [qualified frozen-task](docs/reference/qualified-host-launch.md) guides define launch boundaries.
|
|
49
49
|
See [System architecture](docs/architecture/system-architecture.md), [Project comparison](docs/reference/project-comparison.md),
|
|
50
|
-
and [Документация на русском](docs/ru/README.md).
|
|
50
|
+
[context checkpoints](docs/reference/context-checkpoints.md), and [Документация на русском](docs/ru/README.md).
|
|
51
51
|
|
|
52
52
|
## What it gives you
|
|
53
53
|
- A finish-oriented lifecycle: plan, execute, review, and prove the result.
|
|
@@ -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.64.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"
|
|
@@ -32,6 +32,7 @@ def create_session(
|
|
|
32
32
|
session_root: Path | None = None,
|
|
33
33
|
state_identity: dict[str, Any] | None = None,
|
|
34
34
|
managed_workflow_proof: dict[str, Any] | None = None,
|
|
35
|
+
context_checkpoint_policy: dict[str, Any] | None = None,
|
|
35
36
|
) -> dict[str, Any]:
|
|
36
37
|
session_id = uuid.uuid4().hex
|
|
37
38
|
session = {
|
|
@@ -46,6 +47,7 @@ def create_session(
|
|
|
46
47
|
},
|
|
47
48
|
"stateIdentity": state_identity,
|
|
48
49
|
"managedWorkflowProof": managed_workflow_proof,
|
|
50
|
+
"contextCheckpointPolicy": context_checkpoint_policy,
|
|
49
51
|
"secretValuesStored": False,
|
|
50
52
|
"nativeConfigWritten": False,
|
|
51
53
|
}
|
|
@@ -224,7 +224,7 @@ def _resume(*, adapter_id: str, session_id: str, session_root: Path | None) -> d
|
|
|
224
224
|
requested_mode="auto",
|
|
225
225
|
action="BLOCKED",
|
|
226
226
|
input_summary=input_summary,
|
|
227
|
-
delegate_summary=_resume_summary(receipt),
|
|
227
|
+
delegate_summary=_resume_summary(receipt, session=session),
|
|
228
228
|
blockers=_blocker_summaries(receipt.get("blockers")),
|
|
229
229
|
)
|
|
230
230
|
return build_lifecycle_start_receipt(
|
|
@@ -233,7 +233,7 @@ def _resume(*, adapter_id: str, session_id: str, session_root: Path | None) -> d
|
|
|
233
233
|
requested_mode="auto",
|
|
234
234
|
action="RESUME",
|
|
235
235
|
input_summary=input_summary,
|
|
236
|
-
delegate_summary=_resume_summary(receipt),
|
|
236
|
+
delegate_summary=_resume_summary(receipt, session=session),
|
|
237
237
|
lifecycle_coverage_claimed=status == "PASS" and bool(receipt.get("lifecycleCoverageClaimed")),
|
|
238
238
|
)
|
|
239
239
|
|
|
@@ -997,8 +997,8 @@ def _task_summary(receipt: dict[str, Any]) -> dict[str, Any]:
|
|
|
997
997
|
}
|
|
998
998
|
|
|
999
999
|
|
|
1000
|
-
def _resume_summary(receipt: dict[str, Any]) -> dict[str, Any]:
|
|
1001
|
-
|
|
1000
|
+
def _resume_summary(receipt: dict[str, Any], *, session: dict[str, Any] | None = None) -> dict[str, Any]:
|
|
1001
|
+
summary = {
|
|
1002
1002
|
"schemaVersion": receipt.get("schemaVersion"),
|
|
1003
1003
|
"status": receipt.get("status"),
|
|
1004
1004
|
"lineageStatus": receipt.get("lineageStatus"),
|
|
@@ -1006,6 +1006,9 @@ def _resume_summary(receipt: dict[str, Any]) -> dict[str, Any]:
|
|
|
1006
1006
|
"lifecycleCoverageClaimed": bool(receipt.get("lifecycleCoverageClaimed")),
|
|
1007
1007
|
"receiptDigest": receipt.get("receiptDigest"),
|
|
1008
1008
|
}
|
|
1009
|
+
if session and isinstance(session.get("contextCheckpointPolicy"), dict):
|
|
1010
|
+
summary["contextCheckpointPolicy"] = session["contextCheckpointPolicy"]
|
|
1011
|
+
return summary
|
|
1009
1012
|
|
|
1010
1013
|
|
|
1011
1014
|
def _claims_execution(receipt: dict[str, Any]) -> bool:
|
|
@@ -7,6 +7,8 @@ from pathlib import Path
|
|
|
7
7
|
from typing import Any
|
|
8
8
|
|
|
9
9
|
from agent_lifecycle.context import check_context, load_context_profile, render_context
|
|
10
|
+
from agent_lifecycle.context.checkpoint_store import restore_context_checkpoint, write_context_checkpoint
|
|
11
|
+
from agent_lifecycle.context.checkpoints import build_context_checkpoint
|
|
10
12
|
from agent_lifecycle.context.external_memory import build_episode_retrieval_with_external_context, import_external_memory_context
|
|
11
13
|
from agent_lifecycle.contracts import LifecycleError, canonical_digest, read_json_object, write_json_create
|
|
12
14
|
from agent_lifecycle.goal import build_goal_progress_view, build_objective_snapshot, update_goal_record, validate_goal_record
|
|
@@ -176,9 +178,75 @@ def _dispatch_context(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
176
178
|
if args.out:
|
|
177
179
|
write_json_create(Path(args.out), payload)
|
|
178
180
|
return payload
|
|
181
|
+
if args.context_command == "checkpoint":
|
|
182
|
+
return _dispatch_context_checkpoint(args)
|
|
183
|
+
if args.context_command == "restore":
|
|
184
|
+
state = read_json_object(Path(args.state), label="workflow state")
|
|
185
|
+
payload = restore_context_checkpoint(
|
|
186
|
+
Path(args.checkpoint),
|
|
187
|
+
state=state,
|
|
188
|
+
session_id=args.session,
|
|
189
|
+
target_tokens=args.target_tokens,
|
|
190
|
+
)
|
|
191
|
+
if args.out:
|
|
192
|
+
write_json_create(Path(args.out), payload)
|
|
193
|
+
if payload.get("status") == "BLOCKED":
|
|
194
|
+
raise LifecycleError(
|
|
195
|
+
"context-restore-blocked",
|
|
196
|
+
"context checkpoint cannot be restored against the current workflow state",
|
|
197
|
+
{"continuation": payload},
|
|
198
|
+
)
|
|
199
|
+
return payload
|
|
179
200
|
raise LifecycleError("command-not-implemented", "context command is not implemented")
|
|
180
201
|
|
|
181
202
|
|
|
203
|
+
def _dispatch_context_checkpoint(args: argparse.Namespace) -> dict[str, Any]:
|
|
204
|
+
state = read_json_object(Path(args.state), label="workflow state")
|
|
205
|
+
manifest = read_json_object(Path(args.plan), label="context checkpoint plan")
|
|
206
|
+
input_payload = read_json_object(Path(args.input), label="context checkpoint input")
|
|
207
|
+
reason = str(args.reason)
|
|
208
|
+
mode = args.capture_mode
|
|
209
|
+
reason_mode = {
|
|
210
|
+
"native-hook": "NATIVE_HOOK",
|
|
211
|
+
"milestone": "MILESTONE",
|
|
212
|
+
"agent-requested": "AGENT_REQUESTED",
|
|
213
|
+
"unavailable": "UNAVAILABLE",
|
|
214
|
+
}.get(reason.lower().replace("_", "-"))
|
|
215
|
+
if mode is None and reason_mode:
|
|
216
|
+
mode = reason_mode
|
|
217
|
+
if mode is None:
|
|
218
|
+
mode = "AGENT_REQUESTED"
|
|
219
|
+
target = Path(args.out) if args.out else Path(".alk/context/checkpoints") / "checkpoint.json"
|
|
220
|
+
root = target.parent
|
|
221
|
+
_require_checkpoint_output_root(root)
|
|
222
|
+
summary = dict(input_payload)
|
|
223
|
+
capture_evidence = summary.pop("nativeHookEvidence", None) if mode == "NATIVE_HOOK" else None
|
|
224
|
+
checkpoint = build_context_checkpoint(
|
|
225
|
+
session_id=args.session,
|
|
226
|
+
run_id=str(state.get("runId", "run")),
|
|
227
|
+
adapter_id=str(args.adapter or input_payload.get("adapterId") or state.get("adapterId") or "unknown-adapter"),
|
|
228
|
+
package_id=str(manifest.get("package", {}).get("id") or state.get("packageId") or "unknown-package"),
|
|
229
|
+
plan_revision=int(manifest.get("planRevision", state.get("planRevision", 1))),
|
|
230
|
+
plan_digest=canonical_digest(manifest),
|
|
231
|
+
state_revision=int(state.get("stateRevision", 1)),
|
|
232
|
+
source_revision=str(state.get("sourceRevision", "unknown-source")),
|
|
233
|
+
capture_mode=mode,
|
|
234
|
+
reason=reason,
|
|
235
|
+
summary=summary,
|
|
236
|
+
capture_evidence=capture_evidence,
|
|
237
|
+
checkpoint_id=target.stem if args.out else None,
|
|
238
|
+
created_at=str(state.get("updatedAt") or "1970-01-01T00:00:00Z"),
|
|
239
|
+
)
|
|
240
|
+
stored = write_context_checkpoint(checkpoint, root=root)
|
|
241
|
+
return {**checkpoint, "storage": stored}
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
def _require_checkpoint_output_root(root: Path) -> None:
|
|
245
|
+
resolved = root.resolve()
|
|
246
|
+
if ".alk" not in resolved.parts or not resolved.name == "checkpoints":
|
|
247
|
+
raise LifecycleError("context-checkpoint-output-root-invalid", "checkpoint output must remain in a .alk/context/checkpoints directory")
|
|
248
|
+
|
|
249
|
+
|
|
182
250
|
def _dispatch_goal(args: argparse.Namespace) -> dict[str, Any] | str:
|
|
183
251
|
record = read_json_object(Path(args.record), label="goal record")
|
|
184
252
|
if args.goal_command == "check":
|
{agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/cli/parsers.py
RENAMED
|
@@ -610,6 +610,25 @@ def _add_context_parser(subparsers: argparse._SubParsersAction[argparse.Argument
|
|
|
610
610
|
episode_retrieve.add_argument("--max-external-context-hints", type=int, default=4)
|
|
611
611
|
episode_retrieve.add_argument("--target-tokens", type=int, default=2048)
|
|
612
612
|
episode_retrieve.add_argument("--out")
|
|
613
|
+
checkpoint = context_sub.add_parser("checkpoint", help="write a bounded context checkpoint")
|
|
614
|
+
checkpoint.add_argument("--session", required=True)
|
|
615
|
+
checkpoint.add_argument("--state", required=True)
|
|
616
|
+
checkpoint.add_argument("--plan", required=True)
|
|
617
|
+
checkpoint.add_argument("--input", required=True)
|
|
618
|
+
checkpoint.add_argument("--reason", required=True)
|
|
619
|
+
checkpoint.add_argument(
|
|
620
|
+
"--capture-mode",
|
|
621
|
+
choices=["NATIVE_HOOK", "MILESTONE", "AGENT_REQUESTED", "UNAVAILABLE"],
|
|
622
|
+
default=None,
|
|
623
|
+
)
|
|
624
|
+
checkpoint.add_argument("--adapter")
|
|
625
|
+
checkpoint.add_argument("--out")
|
|
626
|
+
restore = context_sub.add_parser("restore", help="restore a bounded context continuation")
|
|
627
|
+
restore.add_argument("--checkpoint", required=True)
|
|
628
|
+
restore.add_argument("--state", required=True)
|
|
629
|
+
restore.add_argument("--session")
|
|
630
|
+
restore.add_argument("--target-tokens", type=int, default=2048)
|
|
631
|
+
restore.add_argument("--out")
|
|
613
632
|
|
|
614
633
|
|
|
615
634
|
def _add_goal_parser(subparsers: argparse._SubParsersAction[argparse.ArgumentParser]) -> None:
|
{agent_lifecycle_kit-1.63.2 → agent_lifecycle_kit-1.64.0}/src/agent_lifecycle/context/__init__.py
RENAMED
|
@@ -2,13 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
from agent_lifecycle.context.profiles import load_context_profile, validate_context_profile
|
|
4
4
|
from agent_lifecycle.context.rendering import check_context, render_context
|
|
5
|
+
from agent_lifecycle.context.checkpoints import (
|
|
6
|
+
build_context_checkpoint,
|
|
7
|
+
require_context_checkpoint_pass,
|
|
8
|
+
validate_context_checkpoint,
|
|
9
|
+
)
|
|
10
|
+
from agent_lifecycle.context.checkpoint_store import (
|
|
11
|
+
list_context_checkpoints,
|
|
12
|
+
load_context_checkpoint,
|
|
13
|
+
restore_context_checkpoint,
|
|
14
|
+
write_context_checkpoint,
|
|
15
|
+
)
|
|
5
16
|
|
|
6
17
|
__all__ = [
|
|
7
18
|
"build_episode_context",
|
|
8
19
|
"check_context",
|
|
20
|
+
"build_context_checkpoint",
|
|
9
21
|
"load_context_profile",
|
|
22
|
+
"list_context_checkpoints",
|
|
23
|
+
"load_context_checkpoint",
|
|
10
24
|
"render_context",
|
|
25
|
+
"restore_context_checkpoint",
|
|
26
|
+
"require_context_checkpoint_pass",
|
|
27
|
+
"validate_context_checkpoint",
|
|
11
28
|
"validate_context_profile",
|
|
29
|
+
"write_context_checkpoint",
|
|
12
30
|
]
|
|
13
31
|
|
|
14
32
|
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"""Contained local storage and bounded restoration for context checkpoints."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
from agent_lifecycle.contracts import LifecycleError, canonical_bytes, canonical_digest, read_json_object
|
|
10
|
+
from agent_lifecycle.contracts.redaction import redact_value
|
|
11
|
+
from agent_lifecycle.context.checkpoints import (
|
|
12
|
+
CHECKPOINT_SCHEMA,
|
|
13
|
+
DEFAULT_MAX_CHECKPOINT_BYTES,
|
|
14
|
+
DEFAULT_TARGET_TOKENS,
|
|
15
|
+
require_context_checkpoint_pass,
|
|
16
|
+
validate_context_checkpoint,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
DEFAULT_CHECKPOINT_ROOT = Path(".alk/context/checkpoints")
|
|
20
|
+
MAX_CHECKPOINTS_PER_RUN = 64
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def checkpoint_path(checkpoint_id: str, *, root: Path | None = None) -> Path:
|
|
24
|
+
"""Return a path contained by the configured checkpoint directory."""
|
|
25
|
+
|
|
26
|
+
if not isinstance(checkpoint_id, str) or not checkpoint_id or checkpoint_id in {".", ".."}:
|
|
27
|
+
raise LifecycleError("context-checkpoint-id-invalid", "checkpoint id is required")
|
|
28
|
+
if "/" in checkpoint_id or "\\" in checkpoint_id or "\x00" in checkpoint_id:
|
|
29
|
+
raise LifecycleError("context-checkpoint-id-invalid", "checkpoint id must be a single path component")
|
|
30
|
+
directory = root or DEFAULT_CHECKPOINT_ROOT
|
|
31
|
+
path = directory / f"{checkpoint_id}.json"
|
|
32
|
+
if not path.resolve().is_relative_to(directory.resolve()):
|
|
33
|
+
raise LifecycleError("context-checkpoint-path-escape", "checkpoint path escapes the checkpoint root")
|
|
34
|
+
return path
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def write_context_checkpoint(
|
|
38
|
+
checkpoint: dict[str, Any],
|
|
39
|
+
*,
|
|
40
|
+
root: Path | None = None,
|
|
41
|
+
max_checkpoints_per_run: int = MAX_CHECKPOINTS_PER_RUN,
|
|
42
|
+
) -> dict[str, Any]:
|
|
43
|
+
"""Write a checkpoint once and retain only the latest bounded set per run."""
|
|
44
|
+
|
|
45
|
+
validation = validate_context_checkpoint(checkpoint)
|
|
46
|
+
require_context_checkpoint_pass(validation)
|
|
47
|
+
path = checkpoint_path(str(checkpoint["checkpointId"]), root=root)
|
|
48
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
49
|
+
data = canonical_bytes(checkpoint) + b"\n"
|
|
50
|
+
created = not path.exists()
|
|
51
|
+
if not created:
|
|
52
|
+
existing = read_json_object(path, label="existing context checkpoint")
|
|
53
|
+
if canonical_digest(existing) != canonical_digest(checkpoint):
|
|
54
|
+
raise LifecycleError("context-checkpoint-conflict", "checkpoint id already contains a different artifact")
|
|
55
|
+
else:
|
|
56
|
+
_write_atomic(path, data)
|
|
57
|
+
_retain_latest(path.parent, run_id=str(checkpoint["runId"]), limit=max_checkpoints_per_run)
|
|
58
|
+
return {
|
|
59
|
+
"status": "PASS",
|
|
60
|
+
"path": path.as_posix(),
|
|
61
|
+
"checkpointId": checkpoint["checkpointId"],
|
|
62
|
+
"checkpointDigest": checkpoint["checkpointDigest"],
|
|
63
|
+
"created": created,
|
|
64
|
+
"retentionPolicy": "retain-latest-with-explicit-delete",
|
|
65
|
+
"maxCheckpointsPerRun": max_checkpoints_per_run,
|
|
66
|
+
"productionPromotionClaimed": False,
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def load_context_checkpoint(checkpoint_id: str, *, root: Path | None = None) -> dict[str, Any]:
|
|
71
|
+
return read_json_object(checkpoint_path(checkpoint_id, root=root), label="context checkpoint")
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def list_context_checkpoints(*, root: Path | None = None, run_id: str | None = None) -> list[dict[str, Any]]:
|
|
75
|
+
directory = (root or DEFAULT_CHECKPOINT_ROOT).resolve()
|
|
76
|
+
if not directory.exists():
|
|
77
|
+
return []
|
|
78
|
+
if not directory.is_dir():
|
|
79
|
+
raise LifecycleError("context-checkpoint-root-invalid", "checkpoint root is not a directory")
|
|
80
|
+
result: list[dict[str, Any]] = []
|
|
81
|
+
for path in sorted(directory.glob("*.json")):
|
|
82
|
+
if not path.resolve().is_relative_to(directory):
|
|
83
|
+
raise LifecycleError("context-checkpoint-path-escape", "checkpoint listing escaped the checkpoint root")
|
|
84
|
+
value = read_json_object(path, label="context checkpoint")
|
|
85
|
+
if run_id is None or value.get("runId") == run_id:
|
|
86
|
+
result.append(value)
|
|
87
|
+
return sorted(result, key=lambda item: (str(item.get("createdAt", "")), str(item.get("checkpointId", ""))))
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def restore_context_checkpoint(
|
|
91
|
+
checkpoint_path_value: Path,
|
|
92
|
+
*,
|
|
93
|
+
state: dict[str, Any],
|
|
94
|
+
session_id: str | None = None,
|
|
95
|
+
target_tokens: int = DEFAULT_TARGET_TOKENS,
|
|
96
|
+
max_checkpoint_bytes: int = DEFAULT_MAX_CHECKPOINT_BYTES,
|
|
97
|
+
) -> dict[str, Any]:
|
|
98
|
+
"""Return a bounded continuation packet after checking current lineage."""
|
|
99
|
+
|
|
100
|
+
checkpoint = read_json_object(checkpoint_path_value, label="context checkpoint")
|
|
101
|
+
expected = _lineage_from_state(state, session_id=session_id)
|
|
102
|
+
validation = validate_context_checkpoint(
|
|
103
|
+
checkpoint,
|
|
104
|
+
expected_lineage=expected,
|
|
105
|
+
max_checkpoint_bytes=max_checkpoint_bytes,
|
|
106
|
+
target_tokens=target_tokens,
|
|
107
|
+
)
|
|
108
|
+
if validation["status"] == "FAIL":
|
|
109
|
+
return {
|
|
110
|
+
"schemaVersion": "agent-context-continuation.v1",
|
|
111
|
+
"status": "BLOCKED",
|
|
112
|
+
"checkpointId": checkpoint.get("checkpointId"),
|
|
113
|
+
"validation": validation,
|
|
114
|
+
"implementationAuthorized": False,
|
|
115
|
+
"proofAuthority": "none",
|
|
116
|
+
"productionPromotionClaimed": False,
|
|
117
|
+
}
|
|
118
|
+
summary, redaction_applied = redact_value(checkpoint["summary"])
|
|
119
|
+
if redaction_applied:
|
|
120
|
+
return {
|
|
121
|
+
"schemaVersion": "agent-context-continuation.v1",
|
|
122
|
+
"status": "BLOCKED",
|
|
123
|
+
"checkpointId": checkpoint.get("checkpointId"),
|
|
124
|
+
"validation": {
|
|
125
|
+
**validation,
|
|
126
|
+
"status": "FAIL",
|
|
127
|
+
"blockers": [{"code": "context-restore-unredacted-sensitive-input"}],
|
|
128
|
+
},
|
|
129
|
+
"implementationAuthorized": False,
|
|
130
|
+
"proofAuthority": "none",
|
|
131
|
+
"productionPromotionClaimed": False,
|
|
132
|
+
}
|
|
133
|
+
continuation = {
|
|
134
|
+
"schemaVersion": "agent-context-continuation.v1",
|
|
135
|
+
"status": "PASS",
|
|
136
|
+
"checkpointId": checkpoint["checkpointId"],
|
|
137
|
+
"checkpointDigest": checkpoint["checkpointDigest"],
|
|
138
|
+
"lineage": {
|
|
139
|
+
key: checkpoint[key]
|
|
140
|
+
for key in ("sessionId", "runId", "adapterId", "packageId", "planRevision", "planDigest", "stateRevision", "sourceRevision")
|
|
141
|
+
},
|
|
142
|
+
"captureMode": checkpoint["captureMode"],
|
|
143
|
+
"summary": summary,
|
|
144
|
+
"referencedArtifacts": checkpoint["referencedArtifacts"],
|
|
145
|
+
"implementationAuthorized": False,
|
|
146
|
+
"proofAuthority": "none",
|
|
147
|
+
"contextLimits": {"targetTokens": target_tokens, "maxBytes": max_checkpoint_bytes},
|
|
148
|
+
"validationDigest": validation["validationDigest"],
|
|
149
|
+
"productionPromotionClaimed": False,
|
|
150
|
+
}
|
|
151
|
+
continuation["continuationDigest"] = canonical_digest(continuation)
|
|
152
|
+
if (len(canonical_bytes(continuation)) + 3) // 4 > target_tokens * 2:
|
|
153
|
+
return {
|
|
154
|
+
"schemaVersion": "agent-context-continuation.v1",
|
|
155
|
+
"status": "BLOCKED",
|
|
156
|
+
"checkpointId": checkpoint.get("checkpointId"),
|
|
157
|
+
"validation": {
|
|
158
|
+
**validation,
|
|
159
|
+
"status": "FAIL",
|
|
160
|
+
"blockers": [{"code": "context-restore-token-limit"}],
|
|
161
|
+
},
|
|
162
|
+
"implementationAuthorized": False,
|
|
163
|
+
"proofAuthority": "none",
|
|
164
|
+
"productionPromotionClaimed": False,
|
|
165
|
+
}
|
|
166
|
+
return continuation
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def _lineage_from_state(state: dict[str, Any], *, session_id: str | None) -> dict[str, Any]:
|
|
170
|
+
fields = ("runId", "packageId", "planRevision", "planDigest", "stateRevision", "sourceRevision")
|
|
171
|
+
expected = {key: state.get(key) for key in fields if key in state}
|
|
172
|
+
if session_id is not None:
|
|
173
|
+
expected["sessionId"] = session_id
|
|
174
|
+
return expected
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def _retain_latest(directory: Path, *, run_id: str, limit: int) -> None:
|
|
178
|
+
if not isinstance(limit, int) or limit < 1 or limit > MAX_CHECKPOINTS_PER_RUN:
|
|
179
|
+
raise LifecycleError("context-checkpoint-retention-invalid", "retention limit must be between 1 and 64")
|
|
180
|
+
items = list_context_checkpoints(root=directory, run_id=run_id)
|
|
181
|
+
for item in items[:-limit]:
|
|
182
|
+
path = checkpoint_path(str(item["checkpointId"]), root=directory)
|
|
183
|
+
if path.resolve().is_relative_to(directory.resolve()):
|
|
184
|
+
path.unlink()
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def _write_atomic(path: Path, data: bytes) -> None:
|
|
188
|
+
temporary = path.with_name(f".{path.name}.{os.getpid()}.tmp")
|
|
189
|
+
flags = os.O_WRONLY | os.O_CREAT | os.O_EXCL
|
|
190
|
+
try:
|
|
191
|
+
with os.fdopen(os.open(temporary, flags, 0o644), "wb") as handle:
|
|
192
|
+
handle.write(data)
|
|
193
|
+
handle.flush()
|
|
194
|
+
os.fsync(handle.fileno())
|
|
195
|
+
os.replace(temporary, path)
|
|
196
|
+
finally:
|
|
197
|
+
if temporary.exists():
|
|
198
|
+
temporary.unlink()
|