agent-lifecycle-kit 1.50.1__py3-none-any.whl

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.
Files changed (227) hide show
  1. agent_lifecycle/__init__.py +5 -0
  2. agent_lifecycle/__main__.py +5 -0
  3. agent_lifecycle/_version.py +3 -0
  4. agent_lifecycle/adapter_sessions/__init__.py +41 -0
  5. agent_lifecycle/adapter_sessions/contracts.py +133 -0
  6. agent_lifecycle/adapter_sessions/env.py +44 -0
  7. agent_lifecycle/adapter_sessions/launcher.py +101 -0
  8. agent_lifecycle/adapter_sessions/process.py +39 -0
  9. agent_lifecycle/adapter_sessions/redaction.py +30 -0
  10. agent_lifecycle/adapter_sessions/session_store.py +64 -0
  11. agent_lifecycle/adapter_sessions/task_intake.py +450 -0
  12. agent_lifecycle/adapter_sessions/workflow_bridge.py +154 -0
  13. agent_lifecycle/audit/__init__.py +67 -0
  14. agent_lifecycle/audit/bug_forensics.py +94 -0
  15. agent_lifecycle/audit/implementation.py +516 -0
  16. agent_lifecycle/audit/ownership.py +119 -0
  17. agent_lifecycle/audit/proof_integrity.py +814 -0
  18. agent_lifecycle/audit/review_verdict.py +116 -0
  19. agent_lifecycle/changesets/__init__.py +5 -0
  20. agent_lifecycle/changesets/git.py +35 -0
  21. agent_lifecycle/cli/__init__.py +5 -0
  22. agent_lifecycle/cli/adapter.py +360 -0
  23. agent_lifecycle/cli/dispatch.py +1220 -0
  24. agent_lifecycle/cli/followup.py +89 -0
  25. agent_lifecycle/cli/main.py +41 -0
  26. agent_lifecycle/cli/metrics_parser.py +49 -0
  27. agent_lifecycle/cli/parsers.py +618 -0
  28. agent_lifecycle/cli/policy.py +101 -0
  29. agent_lifecycle/cli/progress_hooks.py +117 -0
  30. agent_lifecycle/cli/worktree.py +74 -0
  31. agent_lifecycle/compiler/__init__.py +17 -0
  32. agent_lifecycle/compiler/small_model_packets.py +322 -0
  33. agent_lifecycle/compiler/task_packets.py +229 -0
  34. agent_lifecycle/context/__init__.py +20 -0
  35. agent_lifecycle/context/episode_retrieval.py +30 -0
  36. agent_lifecycle/context/external_memory.py +71 -0
  37. agent_lifecycle/context/profiles.py +104 -0
  38. agent_lifecycle/context/rendering.py +226 -0
  39. agent_lifecycle/contracts/__init__.py +25 -0
  40. agent_lifecycle/contracts/adapter_contract_schemas.py +130 -0
  41. agent_lifecycle/contracts/adapter_event_schemas.py +118 -0
  42. agent_lifecycle/contracts/adapter_session_schemas.py +130 -0
  43. agent_lifecycle/contracts/adapter_task_schemas.py +90 -0
  44. agent_lifecycle/contracts/audit_schemas.py +133 -0
  45. agent_lifecycle/contracts/bug_forensics_schemas.py +400 -0
  46. agent_lifecycle/contracts/canonical.py +55 -0
  47. agent_lifecycle/contracts/compatibility.py +242 -0
  48. agent_lifecycle/contracts/context_model_schemas.py +265 -0
  49. agent_lifecycle/contracts/core_schemas.py +252 -0
  50. agent_lifecycle/contracts/cross_check_schemas.py +121 -0
  51. agent_lifecycle/contracts/errors.py +26 -0
  52. agent_lifecycle/contracts/evidence_import_schemas.py +152 -0
  53. agent_lifecycle/contracts/host_capability_schemas.py +64 -0
  54. agent_lifecycle/contracts/import_dialect_schemas.py +166 -0
  55. agent_lifecycle/contracts/metric_schemas.py +315 -0
  56. agent_lifecycle/contracts/paths.py +31 -0
  57. agent_lifecycle/contracts/plan_contract_schemas.py +148 -0
  58. agent_lifecycle/contracts/policy_schemas.py +350 -0
  59. agent_lifecycle/contracts/progress_bridge_schemas.py +114 -0
  60. agent_lifecycle/contracts/progress_hook_schemas.py +119 -0
  61. agent_lifecycle/contracts/proof_integrity_schemas.py +240 -0
  62. agent_lifecycle/contracts/release_contract_schemas.py +476 -0
  63. agent_lifecycle/contracts/review_mesh_recommendation_schemas.py +64 -0
  64. agent_lifecycle/contracts/review_mesh_schemas.py +222 -0
  65. agent_lifecycle/contracts/review_quality_schemas.py +109 -0
  66. agent_lifecycle/contracts/runner_schemas.py +91 -0
  67. agent_lifecycle/contracts/runner_worktree_schemas.py +389 -0
  68. agent_lifecycle/contracts/sandbox_schemas.py +159 -0
  69. agent_lifecycle/contracts/schema_builders.py +23 -0
  70. agent_lifecycle/contracts/schemas.py +93 -0
  71. agent_lifecycle/contracts/status_goal_schemas.py +469 -0
  72. agent_lifecycle/contracts/task_template_schemas.py +96 -0
  73. agent_lifecycle/contracts/usage_export_schemas.py +68 -0
  74. agent_lifecycle/diagnostics/__init__.py +17 -0
  75. agent_lifecycle/diagnostics/bundles.py +124 -0
  76. agent_lifecycle/diagnostics/readiness.py +733 -0
  77. agent_lifecycle/evidence_index/__init__.py +39 -0
  78. agent_lifecycle/evidence_index/core.py +272 -0
  79. agent_lifecycle/evidence_index/episode_index.py +329 -0
  80. agent_lifecycle/evidence_index/external_context.py +276 -0
  81. agent_lifecycle/followup/__init__.py +23 -0
  82. agent_lifecycle/followup/records.py +404 -0
  83. agent_lifecycle/freeze/__init__.py +5 -0
  84. agent_lifecycle/freeze/locks.py +23 -0
  85. agent_lifecycle/goal/__init__.py +15 -0
  86. agent_lifecycle/goal/records.py +244 -0
  87. agent_lifecycle/goal/view.py +109 -0
  88. agent_lifecycle/host_protocol/__init__.py +65 -0
  89. agent_lifecycle/host_protocol/acp_capability.py +195 -0
  90. agent_lifecycle/host_protocol/capabilities.py +268 -0
  91. agent_lifecycle/host_protocol/contracts.py +214 -0
  92. agent_lifecycle/host_protocol/event_capture.py +390 -0
  93. agent_lifecycle/host_protocol/events.py +196 -0
  94. agent_lifecycle/host_protocol/inspection.py +194 -0
  95. agent_lifecycle/host_protocol/inspection_common.py +310 -0
  96. agent_lifecycle/host_protocol/inspection_cursor.py +164 -0
  97. agent_lifecycle/host_protocol/inspection_gemini_cli.py +163 -0
  98. agent_lifecycle/host_protocol/inspection_hermes.py +161 -0
  99. agent_lifecycle/host_protocol/inspection_kimi_code.py +169 -0
  100. agent_lifecycle/host_protocol/inspection_opencode.py +147 -0
  101. agent_lifecycle/host_protocol/inspection_qwen_code.py +143 -0
  102. agent_lifecycle/host_protocol/receipts.py +58 -0
  103. agent_lifecycle/host_protocol/scaffold.py +329 -0
  104. agent_lifecycle/host_protocol/validation.py +229 -0
  105. agent_lifecycle/imports/__init__.py +76 -0
  106. agent_lifecycle/imports/agentskills_profile.py +54 -0
  107. agent_lifecycle/imports/bmad_profile.py +49 -0
  108. agent_lifecycle/imports/constitution_adr.py +91 -0
  109. agent_lifecycle/imports/dialect_profiles.py +121 -0
  110. agent_lifecycle/imports/external_agent.py +28 -0
  111. agent_lifecycle/imports/external_dialects.py +486 -0
  112. agent_lifecycle/imports/external_workflow.py +28 -0
  113. agent_lifecycle/imports/multi_markdown.py +111 -0
  114. agent_lifecycle/imports/openspec_profile.py +49 -0
  115. agent_lifecycle/imports/planning.py +536 -0
  116. agent_lifecycle/imports/spec_kit_profile.py +49 -0
  117. agent_lifecycle/imports/spec_kitty_profile.py +49 -0
  118. agent_lifecycle/metrics/__init__.py +60 -0
  119. agent_lifecycle/metrics/cost_collection.py +315 -0
  120. agent_lifecycle/metrics/costs.py +203 -0
  121. agent_lifecycle/metrics/outcome_index.py +330 -0
  122. agent_lifecycle/metrics/phase_resources.py +208 -0
  123. agent_lifecycle/metrics/recommendations.py +507 -0
  124. agent_lifecycle/metrics/regression_signals.py +64 -0
  125. agent_lifecycle/metrics/usage_export.py +390 -0
  126. agent_lifecycle/model_routing/__init__.py +19 -0
  127. agent_lifecycle/model_routing/profiles.py +323 -0
  128. agent_lifecycle/model_routing/receipts.py +140 -0
  129. agent_lifecycle/model_routing/resolver.py +566 -0
  130. agent_lifecycle/neutrality/__init__.py +12 -0
  131. agent_lifecycle/neutrality/__main__.py +6 -0
  132. agent_lifecycle/neutrality/authority.py +265 -0
  133. agent_lifecycle/neutrality/canonical.py +28 -0
  134. agent_lifecycle/neutrality/cli.py +294 -0
  135. agent_lifecycle/neutrality/ed25519.py +124 -0
  136. agent_lifecycle/neutrality/errors.py +89 -0
  137. agent_lifecycle/neutrality/gate.py +269 -0
  138. agent_lifecycle/neutrality/paths.py +92 -0
  139. agent_lifecycle/neutrality/policy.py +76 -0
  140. agent_lifecycle/neutrality/receipt.py +135 -0
  141. agent_lifecycle/neutrality/scanner.py +310 -0
  142. agent_lifecycle/neutrality/test_runner.py +116 -0
  143. agent_lifecycle/planning/__init__.py +47 -0
  144. agent_lifecycle/planning/acceptance_markdown.py +159 -0
  145. agent_lifecycle/planning/completeness.py +362 -0
  146. agent_lifecycle/planning/continuity.py +255 -0
  147. agent_lifecycle/planning/templates.py +294 -0
  148. agent_lifecycle/planning/tiering.py +87 -0
  149. agent_lifecycle/planning/validation.py +72 -0
  150. agent_lifecycle/policy/__init__.py +37 -0
  151. agent_lifecycle/policy/adaptive_lifecycle.py +416 -0
  152. agent_lifecycle/policy/apply.py +44 -0
  153. agent_lifecycle/policy/proposals.py +189 -0
  154. agent_lifecycle/policy/quality_floor.py +144 -0
  155. agent_lifecycle/policy/runtime_receipts.py +160 -0
  156. agent_lifecycle/py.typed +1 -0
  157. agent_lifecycle/quality/__init__.py +89 -0
  158. agent_lifecycle/quality/bug_forensics.py +727 -0
  159. agent_lifecycle/quality/bug_forensics_advisor.py +88 -0
  160. agent_lifecycle/quality/bug_forensics_recipes.py +239 -0
  161. agent_lifecycle/quality/cross_check.py +437 -0
  162. agent_lifecycle/quality/failure_classification.py +318 -0
  163. agent_lifecycle/quality/packs.py +265 -0
  164. agent_lifecycle/reporting/__init__.py +37 -0
  165. agent_lifecycle/reporting/change_summary.py +156 -0
  166. agent_lifecycle/reporting/event_feed.py +101 -0
  167. agent_lifecycle/reporting/progress_bridge.py +153 -0
  168. agent_lifecycle/reporting/progress_hooks.py +161 -0
  169. agent_lifecycle/reporting/progress_terminal.py +95 -0
  170. agent_lifecycle/reporting/progress_view.py +284 -0
  171. agent_lifecycle/reporting/status_view.py +125 -0
  172. agent_lifecycle/reporting/usage_export.py +59 -0
  173. agent_lifecycle/review/__init__.py +5 -0
  174. agent_lifecycle/review/validation.py +29 -0
  175. agent_lifecycle/review_mesh/__init__.py +83 -0
  176. agent_lifecycle/review_mesh/assignments.py +160 -0
  177. agent_lifecycle/review_mesh/contracts.py +685 -0
  178. agent_lifecycle/review_mesh/operator_templates.py +320 -0
  179. agent_lifecycle/review_mesh/quorum.py +38 -0
  180. agent_lifecycle/review_mesh/recommendation.py +487 -0
  181. agent_lifecycle/review_mesh/results.py +98 -0
  182. agent_lifecycle/review_mesh/synthesis.py +102 -0
  183. agent_lifecycle/runner/__init__.py +47 -0
  184. agent_lifecycle/runner/attempt_snapshots.py +244 -0
  185. agent_lifecycle/runner/core.py +653 -0
  186. agent_lifecycle/runner/sandbox_receipts.py +628 -0
  187. agent_lifecycle/specification/__init__.py +23 -0
  188. agent_lifecycle/specification/completion_check.py +135 -0
  189. agent_lifecycle/specification/completion_gate.py +501 -0
  190. agent_lifecycle/specification/completion_signal.py +75 -0
  191. agent_lifecycle/specification/validation.py +48 -0
  192. agent_lifecycle/workflow/__init__.py +79 -0
  193. agent_lifecycle/workflow/artifacts.py +74 -0
  194. agent_lifecycle/workflow/budget_decisions.py +370 -0
  195. agent_lifecycle/workflow/budget_policy.py +140 -0
  196. agent_lifecycle/workflow/budget_receipts.py +70 -0
  197. agent_lifecycle/workflow/bug_forensics_gates.py +284 -0
  198. agent_lifecycle/workflow/controller.py +45 -0
  199. agent_lifecycle/workflow/events.py +50 -0
  200. agent_lifecycle/workflow/final_proof_integrity.py +74 -0
  201. agent_lifecycle/workflow/finalization.py +422 -0
  202. agent_lifecycle/workflow/gates.py +185 -0
  203. agent_lifecycle/workflow/implementation_audit_gate.py +126 -0
  204. agent_lifecycle/workflow/leases.py +220 -0
  205. agent_lifecycle/workflow/lineage.py +108 -0
  206. agent_lifecycle/workflow/managed_runner.py +167 -0
  207. agent_lifecycle/workflow/model_usage.py +106 -0
  208. agent_lifecycle/workflow/next_action.py +86 -0
  209. agent_lifecycle/workflow/operation_kernel.py +98 -0
  210. agent_lifecycle/workflow/plan_adoption.py +439 -0
  211. agent_lifecycle/workflow/query.py +52 -0
  212. agent_lifecycle/workflow/review_mesh_gate.py +93 -0
  213. agent_lifecycle/workflow/reviews.py +168 -0
  214. agent_lifecycle/workflow/run_transitions.py +163 -0
  215. agent_lifecycle/workflow/sandbox_policy.py +214 -0
  216. agent_lifecycle/workflow/selectors.py +57 -0
  217. agent_lifecycle/workflow/state.py +130 -0
  218. agent_lifecycle/workflow/task_transitions.py +421 -0
  219. agent_lifecycle/worktree/__init__.py +17 -0
  220. agent_lifecycle/worktree/isolation.py +407 -0
  221. agent_lifecycle_kit-1.50.1.dist-info/METADATA +201 -0
  222. agent_lifecycle_kit-1.50.1.dist-info/RECORD +227 -0
  223. agent_lifecycle_kit-1.50.1.dist-info/WHEEL +5 -0
  224. agent_lifecycle_kit-1.50.1.dist-info/entry_points.txt +3 -0
  225. agent_lifecycle_kit-1.50.1.dist-info/licenses/LICENSE +201 -0
  226. agent_lifecycle_kit-1.50.1.dist-info/licenses/NOTICE +5 -0
  227. agent_lifecycle_kit-1.50.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,93 @@
1
+ """Built-in JSON schema registry for portable lifecycle envelopes."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from copy import deepcopy
6
+ from typing import Any
7
+
8
+ from agent_lifecycle.contracts.adapter_contract_schemas import ADAPTER_CONTRACT_SCHEMAS
9
+ from agent_lifecycle.contracts.adapter_event_schemas import ADAPTER_EVENT_SCHEMAS
10
+ from agent_lifecycle.contracts.adapter_session_schemas import ADAPTER_SESSION_SCHEMAS
11
+ from agent_lifecycle.contracts.adapter_task_schemas import ADAPTER_TASK_SCHEMAS
12
+ from agent_lifecycle.contracts.audit_schemas import AUDIT_SCHEMAS
13
+ from agent_lifecycle.contracts.bug_forensics_schemas import BUG_FORENSICS_SCHEMAS
14
+ from agent_lifecycle.contracts.context_model_schemas import CONTEXT_MODEL_SCHEMAS
15
+ from agent_lifecycle.contracts.core_schemas import CORE_SCHEMAS
16
+ from agent_lifecycle.contracts.cross_check_schemas import CROSS_CHECK_SCHEMAS
17
+ from agent_lifecycle.contracts.evidence_import_schemas import EVIDENCE_IMPORT_SCHEMAS
18
+ from agent_lifecycle.contracts.host_capability_schemas import HOST_CAPABILITY_SCHEMAS
19
+ from agent_lifecycle.contracts.import_dialect_schemas import IMPORT_DIALECT_SCHEMAS
20
+ from agent_lifecycle.contracts.metric_schemas import METRIC_SCHEMAS
21
+ from agent_lifecycle.contracts.plan_contract_schemas import PLAN_CONTRACT_SCHEMAS
22
+ from agent_lifecycle.contracts.policy_schemas import POLICY_SCHEMAS
23
+ from agent_lifecycle.contracts.proof_integrity_schemas import PROOF_INTEGRITY_SCHEMAS
24
+ from agent_lifecycle.contracts.progress_bridge_schemas import PROGRESS_BRIDGE_SCHEMAS
25
+ from agent_lifecycle.contracts.progress_hook_schemas import PROGRESS_HOOK_SCHEMAS
26
+ from agent_lifecycle.contracts.release_contract_schemas import RELEASE_CONTRACT_SCHEMAS
27
+ from agent_lifecycle.contracts.review_mesh_schemas import REVIEW_MESH_SCHEMAS
28
+ from agent_lifecycle.contracts.review_mesh_recommendation_schemas import REVIEW_MESH_RECOMMENDATION_SCHEMAS
29
+ from agent_lifecycle.contracts.review_quality_schemas import REVIEW_QUALITY_SCHEMAS
30
+ from agent_lifecycle.contracts.runner_schemas import RUNNER_SCHEMAS
31
+ from agent_lifecycle.contracts.runner_worktree_schemas import RUNNER_WORKTREE_SCHEMAS
32
+ from agent_lifecycle.contracts.sandbox_schemas import SANDBOX_SCHEMAS
33
+ from agent_lifecycle.contracts.status_goal_schemas import STATUS_GOAL_SCHEMAS
34
+ from agent_lifecycle.contracts.task_template_schemas import TASK_TEMPLATE_SCHEMAS
35
+ from agent_lifecycle.contracts.usage_export_schemas import USAGE_EXPORT_SCHEMAS
36
+
37
+ SCHEMA_INDEX_VERSION = "agent-lifecycle-schema-index.v1"
38
+
39
+ _SCHEMA_GROUPS = (
40
+ CORE_SCHEMAS,
41
+ AUDIT_SCHEMAS,
42
+ ADAPTER_SESSION_SCHEMAS,
43
+ ADAPTER_TASK_SCHEMAS,
44
+ ADAPTER_EVENT_SCHEMAS,
45
+ REVIEW_QUALITY_SCHEMAS,
46
+ EVIDENCE_IMPORT_SCHEMAS,
47
+ IMPORT_DIALECT_SCHEMAS,
48
+ STATUS_GOAL_SCHEMAS,
49
+ TASK_TEMPLATE_SCHEMAS,
50
+ RUNNER_SCHEMAS,
51
+ RUNNER_WORKTREE_SCHEMAS,
52
+ BUG_FORENSICS_SCHEMAS,
53
+ CROSS_CHECK_SCHEMAS,
54
+ REVIEW_MESH_SCHEMAS,
55
+ REVIEW_MESH_RECOMMENDATION_SCHEMAS,
56
+ SANDBOX_SCHEMAS,
57
+ HOST_CAPABILITY_SCHEMAS,
58
+ USAGE_EXPORT_SCHEMAS,
59
+ PROOF_INTEGRITY_SCHEMAS,
60
+ PROGRESS_BRIDGE_SCHEMAS,
61
+ PROGRESS_HOOK_SCHEMAS,
62
+ ADAPTER_CONTRACT_SCHEMAS,
63
+ CONTEXT_MODEL_SCHEMAS,
64
+ RELEASE_CONTRACT_SCHEMAS,
65
+ PLAN_CONTRACT_SCHEMAS,
66
+ METRIC_SCHEMAS,
67
+ POLICY_SCHEMAS,
68
+ )
69
+
70
+ _SCHEMAS: dict[str, dict[str, Any]] = {}
71
+ for _group in _SCHEMA_GROUPS:
72
+ _overlap = set(_SCHEMAS).intersection(_group)
73
+ if _overlap:
74
+ raise RuntimeError(f"duplicate schema ids: {sorted(_overlap)}")
75
+ _SCHEMAS.update(_group)
76
+
77
+
78
+ def list_schemas() -> dict[str, Any]:
79
+ return {
80
+ "schemaVersion": SCHEMA_INDEX_VERSION,
81
+ "schemas": [
82
+ {"id": schema_id, "draft": schema["$schema"]}
83
+ for schema_id, schema in sorted(_SCHEMAS.items())
84
+ ],
85
+ }
86
+
87
+
88
+ def get_schema(schema_id: str) -> dict[str, Any]:
89
+ if schema_id not in _SCHEMAS:
90
+ from agent_lifecycle.contracts.errors import LifecycleError
91
+
92
+ raise LifecycleError("unknown-schema", f"unknown schema: {schema_id}")
93
+ return deepcopy(_SCHEMAS[schema_id])
@@ -0,0 +1,469 @@
1
+ """Built-in JSON schema definitions for a lifecycle contract domain."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ from agent_lifecycle.contracts.schema_builders import open_object_schema as _open_object_schema
8
+
9
+ STATUS_GOAL_SCHEMAS: dict[str, dict[str, Any]] = {
10
+ "agent-diagnostic-bundle.v1": _open_object_schema(
11
+ "agent-diagnostic-bundle.v1",
12
+ required=[
13
+ "schemaVersion",
14
+ "status",
15
+ "projectRoot",
16
+ "sourceOfTruth",
17
+ "redacted",
18
+ "artifacts",
19
+ "blockers",
20
+ "productionPromotionClaimed",
21
+ ],
22
+ properties={
23
+ "status": {"enum": ["PASS", "FAIL"]},
24
+ "projectRoot": {"const": "<checkout>"},
25
+ "sourceOfTruth": {"const": False},
26
+ "redacted": {"const": True},
27
+ "artifacts": {"type": "array", "items": {"type": "object"}},
28
+ "blockers": {"type": "array", "items": {"type": "object"}},
29
+ "productionPromotionClaimed": {"const": False},
30
+ },
31
+ ),
32
+ "agent-readonly-status-view.v1": _open_object_schema(
33
+ "agent-readonly-status-view.v1",
34
+ required=[
35
+ "schemaVersion",
36
+ "status",
37
+ "sourceOfTruth",
38
+ "projectRoot",
39
+ "itemCount",
40
+ "items",
41
+ "blockers",
42
+ "productionPromotionClaimed",
43
+ ],
44
+ properties={
45
+ "status": {"enum": ["PASS", "FAIL"]},
46
+ "sourceOfTruth": {"const": False},
47
+ "projectRoot": {"const": "<checkout>"},
48
+ "itemCount": {"type": "integer", "minimum": 0},
49
+ "items": {"type": "array", "items": {"type": "object"}},
50
+ "blockers": {"type": "array", "items": {"type": "object"}},
51
+ "productionPromotionClaimed": {"const": False},
52
+ },
53
+ ),
54
+ "agent-workflow-event-feed.v1": _open_object_schema(
55
+ "agent-workflow-event-feed.v1",
56
+ required=[
57
+ "schemaVersion",
58
+ "status",
59
+ "sourceOfTruth",
60
+ "readOnly",
61
+ "modelCallsStarted",
62
+ "stateWritten",
63
+ "stateIdentity",
64
+ "eventCount",
65
+ "events",
66
+ "productionPromotionClaimed",
67
+ "feedDigest",
68
+ ],
69
+ properties={
70
+ "status": {"const": "PASS"},
71
+ "sourceOfTruth": {"const": False},
72
+ "readOnly": {"const": True},
73
+ "modelCallsStarted": {"const": False},
74
+ "stateWritten": {"const": False},
75
+ "stateIdentity": {"type": "object"},
76
+ "eventCount": {"type": "integer", "minimum": 0},
77
+ "events": {"type": "array", "items": {"type": "object"}},
78
+ "productionPromotionClaimed": {"const": False},
79
+ "feedDigest": {"type": "string", "minLength": 64, "maxLength": 64},
80
+ },
81
+ ),
82
+ "agent-lifecycle-progress-view.v1": _open_object_schema(
83
+ "agent-lifecycle-progress-view.v1",
84
+ required=[
85
+ "schemaVersion",
86
+ "status",
87
+ "sourceOfTruth",
88
+ "readOnly",
89
+ "modelCallsStarted",
90
+ "stateWritten",
91
+ "tokenSpendForProgress",
92
+ "stateIdentity",
93
+ "rowCount",
94
+ "rows",
95
+ "lines",
96
+ "terminal",
97
+ "terminalSummary",
98
+ "productionPromotionClaimed",
99
+ "progressDigest",
100
+ ],
101
+ properties={
102
+ "status": {"const": "PASS"},
103
+ "sourceOfTruth": {"const": False},
104
+ "readOnly": {"const": True},
105
+ "modelCallsStarted": {"const": False},
106
+ "stateWritten": {"const": False},
107
+ "tokenSpendForProgress": {"const": False},
108
+ "stateIdentity": {"type": "object"},
109
+ "rowCount": {"type": "integer", "minimum": 0},
110
+ "rows": {"type": "array", "items": {"type": "object"}},
111
+ "lines": {"type": "array", "items": {"type": "string"}},
112
+ "terminal": {"type": "boolean"},
113
+ "terminalSummary": {"type": "object"},
114
+ "productionPromotionClaimed": {"const": False},
115
+ "progressDigest": {"type": "string", "minLength": 64, "maxLength": 64},
116
+ },
117
+ ),
118
+ "agent-lifecycle-progress-watch.v1": _open_object_schema(
119
+ "agent-lifecycle-progress-watch.v1",
120
+ required=[
121
+ "schemaVersion",
122
+ "status",
123
+ "sourceOfTruth",
124
+ "readOnly",
125
+ "modelCallsStarted",
126
+ "stateWritten",
127
+ "tokenSpendForProgress",
128
+ "requestedIterations",
129
+ "intervalSeconds",
130
+ "frameCount",
131
+ "frames",
132
+ "terminal",
133
+ "productionPromotionClaimed",
134
+ "watchDigest",
135
+ ],
136
+ properties={
137
+ "status": {"const": "PASS"},
138
+ "sourceOfTruth": {"const": False},
139
+ "readOnly": {"const": True},
140
+ "modelCallsStarted": {"const": False},
141
+ "stateWritten": {"const": False},
142
+ "tokenSpendForProgress": {"const": False},
143
+ "requestedIterations": {"type": "integer", "minimum": 1},
144
+ "intervalSeconds": {"type": "number", "minimum": 0},
145
+ "frameCount": {"type": "integer", "minimum": 1},
146
+ "frames": {"type": "array", "items": {"type": "object"}},
147
+ "terminal": {"type": "boolean"},
148
+ "productionPromotionClaimed": {"const": False},
149
+ "watchDigest": {"type": "string", "minLength": 64, "maxLength": 64},
150
+ },
151
+ ),
152
+ "agent-change-summary-receipt.v1": _open_object_schema(
153
+ "agent-change-summary-receipt.v1",
154
+ required=[
155
+ "schemaVersion",
156
+ "status",
157
+ "sourceOfTruth",
158
+ "readOnly",
159
+ "modelCallsStarted",
160
+ "stateWritten",
161
+ "projectRoot",
162
+ "scope",
163
+ "filesChanged",
164
+ "insertions",
165
+ "deletions",
166
+ "modified",
167
+ "added",
168
+ "deleted",
169
+ "line",
170
+ "productionPromotionClaimed",
171
+ "summaryDigest",
172
+ ],
173
+ properties={
174
+ "status": {"const": "PASS"},
175
+ "sourceOfTruth": {"const": False},
176
+ "readOnly": {"const": True},
177
+ "modelCallsStarted": {"const": False},
178
+ "stateWritten": {"const": False},
179
+ "projectRoot": {"const": "<checkout>"},
180
+ "scope": {"type": "object"},
181
+ "filesChanged": {"type": "integer", "minimum": 0},
182
+ "insertions": {"type": "integer", "minimum": 0},
183
+ "deletions": {"type": "integer", "minimum": 0},
184
+ "modified": {"type": "integer", "minimum": 0},
185
+ "added": {"type": "integer", "minimum": 0},
186
+ "deleted": {"type": "integer", "minimum": 0},
187
+ "line": {"type": "string", "minLength": 1},
188
+ "productionPromotionClaimed": {"const": False},
189
+ "summaryDigest": {"type": "string", "minLength": 64, "maxLength": 64},
190
+ },
191
+ ),
192
+ "agent-completion-signal.v1": {
193
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
194
+ "$id": "agent-completion-signal.v1",
195
+ "type": "object",
196
+ "additionalProperties": True,
197
+ "required": [
198
+ "schemaVersion",
199
+ "runId",
200
+ "packageId",
201
+ "planRevision",
202
+ "planDigest",
203
+ "sourceRevision",
204
+ "status",
205
+ "evidenceIds",
206
+ "verifier",
207
+ ],
208
+ "properties": {
209
+ "schemaVersion": {"const": "agent-completion-signal.v1"},
210
+ "runId": {"type": "string", "minLength": 1},
211
+ "packageId": {"type": "string", "minLength": 1},
212
+ "planRevision": {"type": "integer", "minimum": 1},
213
+ "planDigest": {"type": "string", "minLength": 64, "maxLength": 64},
214
+ "sourceRevision": {"type": "string", "minLength": 1},
215
+ "status": {"enum": ["PASS", "WAIVED", "FAIL"]},
216
+ "evidenceIds": {"type": "array", "items": {"type": "string", "minLength": 1}},
217
+ "verifier": {"type": "object"},
218
+ "waiver": {"type": "object"},
219
+ },
220
+ },
221
+ "agent-completion-signal-validation.v1": _open_object_schema(
222
+ "agent-completion-signal-validation.v1",
223
+ required=["schemaVersion", "status", "signalStatus", "signalDigest", "waived"],
224
+ properties={
225
+ "status": {"const": "PASS"},
226
+ "signalStatus": {"enum": ["PASS", "WAIVED"]},
227
+ "signalDigest": {"type": "string", "minLength": 64, "maxLength": 64},
228
+ "waived": {"type": "boolean"},
229
+ },
230
+ ),
231
+ "agent-completion-check.v1": _open_object_schema(
232
+ "agent-completion-check.v1",
233
+ required=["schemaVersion", "checkId", "kind", "description", "receiptPath", "requiredEvidenceIds"],
234
+ properties={
235
+ "checkId": {"type": "string", "minLength": 1},
236
+ "kind": {"enum": ["verification", "external-action"]},
237
+ "description": {"type": "string", "minLength": 1},
238
+ "receiptPath": {"type": "string", "minLength": 1},
239
+ "requiredEvidenceIds": {"type": "array", "items": {"type": "string", "minLength": 1}},
240
+ },
241
+ ),
242
+ "agent-completion-check-validation.v1": _open_object_schema(
243
+ "agent-completion-check-validation.v1",
244
+ required=["schemaVersion", "checkId", "kind", "receiptPath", "requiredEvidenceIds", "checkDigest"],
245
+ properties={
246
+ "checkId": {"type": "string", "minLength": 1},
247
+ "kind": {"enum": ["verification", "external-action"]},
248
+ "receiptPath": {"type": "string", "minLength": 1},
249
+ "requiredEvidenceIds": {"type": "array", "items": {"type": "string", "minLength": 1}},
250
+ "checkDigest": {"type": "string", "minLength": 64, "maxLength": 64},
251
+ },
252
+ ),
253
+ "agent-completion-check-receipt.v1": _open_object_schema(
254
+ "agent-completion-check-receipt.v1",
255
+ required=[
256
+ "schemaVersion",
257
+ "checkId",
258
+ "runId",
259
+ "packageId",
260
+ "planRevision",
261
+ "planDigest",
262
+ "sourceRevision",
263
+ "status",
264
+ "evidenceIds",
265
+ "verifier",
266
+ ],
267
+ properties={
268
+ "checkId": {"type": "string", "minLength": 1},
269
+ "runId": {"type": "string", "minLength": 1},
270
+ "packageId": {"type": "string", "minLength": 1},
271
+ "planRevision": {"type": "integer", "minimum": 1},
272
+ "planDigest": {"type": "string", "minLength": 64, "maxLength": 64},
273
+ "sourceRevision": {"type": "string", "minLength": 1},
274
+ "status": {"enum": ["PASS", "FAIL"]},
275
+ "evidenceIds": {"type": "array", "items": {"type": "string", "minLength": 1}},
276
+ "verifier": {"type": "object"},
277
+ "externalActionReceipt": {"type": "object"},
278
+ },
279
+ ),
280
+ "agent-completion-check-receipt-validation.v1": _open_object_schema(
281
+ "agent-completion-check-receipt-validation.v1",
282
+ required=["schemaVersion", "status", "checkId", "checkKind", "evidenceIds", "receiptDigest", "checkDigest"],
283
+ properties={
284
+ "status": {"const": "PASS"},
285
+ "checkId": {"type": "string", "minLength": 1},
286
+ "checkKind": {"enum": ["verification", "external-action"]},
287
+ "evidenceIds": {"type": "array", "items": {"type": "string", "minLength": 1}},
288
+ "receiptDigest": {"type": "string", "minLength": 64, "maxLength": 64},
289
+ "checkDigest": {"type": "string", "minLength": 64, "maxLength": 64},
290
+ },
291
+ ),
292
+ "agent-completion-gate-receipt.v1": _open_object_schema(
293
+ "agent-completion-gate-receipt.v1",
294
+ required=[
295
+ "schemaVersion",
296
+ "status",
297
+ "runId",
298
+ "packageId",
299
+ "planRevision",
300
+ "planDigest",
301
+ "sourceRevision",
302
+ "stateRevision",
303
+ "decision",
304
+ "reasonCodes",
305
+ "blockers",
306
+ "acceptance",
307
+ "validation",
308
+ "finalProof",
309
+ "followUp",
310
+ "regression",
311
+ "risk",
312
+ "split",
313
+ "inputDigests",
314
+ "verifier",
315
+ "productionPromotionClaimed",
316
+ "gateDigest",
317
+ ],
318
+ properties={
319
+ "status": {"const": "PASS"},
320
+ "runId": {"type": "string", "minLength": 1},
321
+ "packageId": {"type": "string", "minLength": 1},
322
+ "planRevision": {"type": "integer", "minimum": 1},
323
+ "planDigest": {"type": "string", "minLength": 64, "maxLength": 64},
324
+ "sourceRevision": {"type": "string", "minLength": 1},
325
+ "stateRevision": {"type": "integer", "minimum": 1},
326
+ "decision": {"enum": ["STOP", "CONTINUE", "ESCALATE", "SPLIT", "FOLLOW_UP"]},
327
+ "reasonCodes": {"type": "array", "items": {"type": "string", "minLength": 1}},
328
+ "blockers": {"type": "array", "items": {"type": "object"}},
329
+ "acceptance": {"type": "object"},
330
+ "validation": {"type": "object"},
331
+ "finalProof": {"type": "object"},
332
+ "followUp": {"type": "object"},
333
+ "regression": {"type": "object"},
334
+ "risk": {"type": "object"},
335
+ "split": {"type": "object"},
336
+ "inputDigests": {"type": "object"},
337
+ "verifier": {"type": "object"},
338
+ "productionPromotionClaimed": {"const": False},
339
+ "gateDigest": {"type": "string", "minLength": 64, "maxLength": 64},
340
+ },
341
+ ),
342
+ "agent-completion-gate-validation.v1": _open_object_schema(
343
+ "agent-completion-gate-validation.v1",
344
+ required=[
345
+ "schemaVersion",
346
+ "status",
347
+ "decision",
348
+ "reasonCodes",
349
+ "finalizationAllowed",
350
+ "inputChecks",
351
+ "receiptDigest",
352
+ "validationDigest",
353
+ ],
354
+ properties={
355
+ "status": {"const": "PASS"},
356
+ "decision": {"enum": ["STOP", "CONTINUE", "ESCALATE", "SPLIT", "FOLLOW_UP"]},
357
+ "reasonCodes": {"type": "array", "items": {"type": "string", "minLength": 1}},
358
+ "finalizationAllowed": {"type": "boolean"},
359
+ "inputChecks": {"type": "array", "items": {"type": "object"}},
360
+ "receiptDigest": {"type": "string", "minLength": 64, "maxLength": 64},
361
+ "validationDigest": {"type": "string", "minLength": 64, "maxLength": 64},
362
+ },
363
+ ),
364
+ "agent-goal-record.v1": _open_object_schema(
365
+ "agent-goal-record.v1",
366
+ required=[
367
+ "schemaVersion",
368
+ "goalId",
369
+ "userIntent",
370
+ "ownerOutcome",
371
+ "constraints",
372
+ "status",
373
+ "lineage",
374
+ "evidenceIds",
375
+ "updatedAt",
376
+ ],
377
+ properties={
378
+ "goalId": {"type": "string", "minLength": 1},
379
+ "userIntent": {"type": "string", "minLength": 1},
380
+ "ownerOutcome": {"type": "string", "minLength": 1},
381
+ "constraints": {"type": "array", "items": {"type": "string", "minLength": 1}},
382
+ "status": {"enum": ["ACTIVE", "BLOCKED", "READY_FOR_FINALIZATION", "COMPLETE"]},
383
+ "lineage": {"type": "object"},
384
+ "completionCheck": {"type": "object"},
385
+ "evidenceIds": {"type": "array", "items": {"type": "string", "minLength": 1}},
386
+ "updatedAt": {"type": "string", "minLength": 1},
387
+ },
388
+ ),
389
+ "agent-goal-record-validation.v1": _open_object_schema(
390
+ "agent-goal-record-validation.v1",
391
+ required=["schemaVersion", "status", "goalId", "goalStatus", "lineage", "stateRevision", "goalDigest"],
392
+ properties={
393
+ "status": {"const": "PASS"},
394
+ "goalId": {"type": "string", "minLength": 1},
395
+ "goalStatus": {"enum": ["ACTIVE", "BLOCKED", "READY_FOR_FINALIZATION", "COMPLETE"]},
396
+ "lineage": {"type": "object"},
397
+ "stateRevision": {"type": "integer", "minimum": 1},
398
+ "goalDigest": {"type": "string", "minLength": 64, "maxLength": 64},
399
+ },
400
+ ),
401
+ "agent-objective-snapshot.v1": _open_object_schema(
402
+ "agent-objective-snapshot.v1",
403
+ required=["schemaVersion", "status", "goal", "lifecycle", "estimatedTokens", "snapshotDigest"],
404
+ properties={
405
+ "status": {"const": "PASS"},
406
+ "goal": {"type": "object"},
407
+ "lifecycle": {"type": "object"},
408
+ "completionCheck": {"type": ["object", "null"]},
409
+ "estimatedTokens": {"type": "integer", "minimum": 1},
410
+ "snapshotDigest": {"type": "string", "minLength": 64, "maxLength": 64},
411
+ },
412
+ ),
413
+ "agent-follow-up-register.v1": _open_object_schema(
414
+ "agent-follow-up-register.v1",
415
+ required=["schemaVersion", "lineage", "items"],
416
+ properties={
417
+ "lineage": {"type": "object"},
418
+ "items": {"type": "array", "items": {"type": "object"}},
419
+ "updatedAt": {"type": "string", "minLength": 1},
420
+ },
421
+ ),
422
+ "agent-follow-up-register-validation.v1": _open_object_schema(
423
+ "agent-follow-up-register-validation.v1",
424
+ required=[
425
+ "schemaVersion",
426
+ "status",
427
+ "registerDigest",
428
+ "lineage",
429
+ "itemCount",
430
+ "openItemIds",
431
+ "finalizationBlockers",
432
+ "items",
433
+ "validationDigest",
434
+ ],
435
+ properties={
436
+ "status": {"const": "PASS"},
437
+ "registerDigest": {"type": "string", "minLength": 64, "maxLength": 64},
438
+ "lineage": {"type": "object"},
439
+ "itemCount": {"type": "integer", "minimum": 0},
440
+ "openItemIds": {"type": "array", "items": {"type": "string", "minLength": 1}},
441
+ "finalizationBlockers": {"type": "array", "items": {"type": "object"}},
442
+ "items": {"type": "array", "items": {"type": "object"}},
443
+ "validationDigest": {"type": "string", "minLength": 64, "maxLength": 64},
444
+ },
445
+ ),
446
+ "agent-follow-up-close-result.v1": _open_object_schema(
447
+ "agent-follow-up-close-result.v1",
448
+ required=["schemaVersion", "status", "itemId", "registerDigest"],
449
+ properties={
450
+ "status": {"const": "PASS"},
451
+ "itemId": {"type": "string", "minLength": 1},
452
+ "registerDigest": {"type": "string", "minLength": 64, "maxLength": 64},
453
+ },
454
+ ),
455
+ "agent-follow-up-summary.v1": _open_object_schema(
456
+ "agent-follow-up-summary.v1",
457
+ required=["schemaVersion", "status", "lineage", "registerDigest", "counts", "openItems", "finalizationBlockers", "estimatedTokens", "summaryDigest"],
458
+ properties={
459
+ "status": {"const": "PASS"},
460
+ "lineage": {"type": "object"},
461
+ "registerDigest": {"type": "string", "minLength": 64, "maxLength": 64},
462
+ "counts": {"type": "object"},
463
+ "openItems": {"type": "array", "items": {"type": "object"}},
464
+ "finalizationBlockers": {"type": "array", "items": {"type": "object"}},
465
+ "estimatedTokens": {"type": "integer", "minimum": 1},
466
+ "summaryDigest": {"type": "string", "minLength": 64, "maxLength": 64},
467
+ },
468
+ ),
469
+ }
@@ -0,0 +1,96 @@
1
+ """Built-in JSON schemas for draft-only task template contracts."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ from agent_lifecycle.contracts.schema_builders import open_object_schema
8
+
9
+ TASK_TEMPLATE_SCHEMAS: dict[str, dict[str, Any]] = {
10
+ "agent-task-template-library.v1": open_object_schema(
11
+ "agent-task-template-library.v1",
12
+ required=[
13
+ "schemaVersion",
14
+ "status",
15
+ "enabledByDefault",
16
+ "activationMode",
17
+ "draftOnly",
18
+ "requiresReview",
19
+ "freezeBlocked",
20
+ "defaultCommandFootprint",
21
+ "templates",
22
+ "productionPromotionClaimed",
23
+ "libraryDigest",
24
+ ],
25
+ properties={
26
+ "status": {"const": "OPTIONAL"},
27
+ "enabledByDefault": {"const": False},
28
+ "activationMode": {"const": "explicit-template-selection"},
29
+ "draftOnly": {"const": True},
30
+ "requiresReview": {"const": True},
31
+ "freezeBlocked": {"const": True},
32
+ "defaultCommandFootprint": {"type": "object"},
33
+ "templates": {"type": "array", "items": {"type": "object"}},
34
+ "productionPromotionClaimed": {"const": False},
35
+ "libraryDigest": {"type": "string", "minLength": 64, "maxLength": 64},
36
+ },
37
+ ),
38
+ "agent-task-template-library-validation.v1": open_object_schema(
39
+ "agent-task-template-library-validation.v1",
40
+ required=[
41
+ "schemaVersion",
42
+ "status",
43
+ "templateCount",
44
+ "templateIds",
45
+ "reports",
46
+ "blockers",
47
+ "libraryDigest",
48
+ "productionPromotionClaimed",
49
+ "validationDigest",
50
+ ],
51
+ properties={
52
+ "status": {"enum": ["PASS", "FAIL"]},
53
+ "templateCount": {"type": "integer", "minimum": 0},
54
+ "templateIds": {"type": "array", "items": {"type": "string"}},
55
+ "reports": {"type": "array", "items": {"type": "object"}},
56
+ "blockers": {"type": "array", "items": {"type": "object"}},
57
+ "libraryDigest": {"type": ["string", "null"], "minLength": 64, "maxLength": 64},
58
+ "productionPromotionClaimed": {"const": False},
59
+ "validationDigest": {"type": "string", "minLength": 64, "maxLength": 64},
60
+ },
61
+ ),
62
+ "agent-task-template-render.v1": open_object_schema(
63
+ "agent-task-template-render.v1",
64
+ required=[
65
+ "schemaVersion",
66
+ "status",
67
+ "templateId",
68
+ "path",
69
+ "draftOnly",
70
+ "requiresReview",
71
+ "freezeBlocked",
72
+ "qualityProfiles",
73
+ "declaredPlaceholders",
74
+ "substitutedPlaceholders",
75
+ "content",
76
+ "blockers",
77
+ "productionPromotionClaimed",
78
+ "renderDigest",
79
+ ],
80
+ properties={
81
+ "status": {"enum": ["PASS", "FAIL"]},
82
+ "templateId": {"type": "string", "minLength": 1},
83
+ "path": {"type": "string", "minLength": 1},
84
+ "draftOnly": {"const": True},
85
+ "requiresReview": {"const": True},
86
+ "freezeBlocked": {"const": True},
87
+ "qualityProfiles": {"type": "array", "items": {"type": "string"}},
88
+ "declaredPlaceholders": {"type": "array", "items": {"type": "string"}},
89
+ "substitutedPlaceholders": {"type": "array", "items": {"type": "string"}},
90
+ "content": {"type": "string"},
91
+ "blockers": {"type": "array", "items": {"type": "object"}},
92
+ "productionPromotionClaimed": {"const": False},
93
+ "renderDigest": {"type": "string", "minLength": 64, "maxLength": 64},
94
+ },
95
+ ),
96
+ }