ai-kit-python 1.4.2__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 (278) hide show
  1. ai_kit_python-1.4.2.dist-info/METADATA +132 -0
  2. ai_kit_python-1.4.2.dist-info/RECORD +278 -0
  3. ai_kit_python-1.4.2.dist-info/WHEEL +5 -0
  4. ai_kit_python-1.4.2.dist-info/entry_points.txt +2 -0
  5. ai_kit_python-1.4.2.dist-info/licenses/LICENSE +21 -0
  6. ai_kit_python-1.4.2.dist-info/licenses/template/ai-kit/vendor/security-audit/LICENSE +21 -0
  7. ai_kit_python-1.4.2.dist-info/licenses/template/ai-kit/vendor/strix/LICENSE +201 -0
  8. ai_kit_python-1.4.2.dist-info/top_level.txt +1 -0
  9. aikit/.agents/skills/go-work/SKILL.md +8 -0
  10. aikit/.agents/skills/laravel-work/SKILL.md +8 -0
  11. aikit/.agents/skills/moodle-work/SKILL.md +8 -0
  12. aikit/.agents/skills/project-continuity/SKILL.md +34 -0
  13. aikit/.agents/skills/python-work/SKILL.md +8 -0
  14. aikit/.dockerignore +90 -0
  15. aikit/.gitattributes +3 -0
  16. aikit/.github/workflows/check-kit.yml +70 -0
  17. aikit/.github/workflows/publish-pypi.yml +108 -0
  18. aikit/.gitignore +60 -0
  19. aikit/BOOTSTRAP_PROMPT.md +18 -0
  20. aikit/CHANGELOG.md +85 -0
  21. aikit/CLAUDE.md +3 -0
  22. aikit/CONTRIBUTING.md +46 -0
  23. aikit/Dockerfile +44 -0
  24. aikit/KIMI.md +3 -0
  25. aikit/LICENSE +21 -0
  26. aikit/MANIFEST.in +22 -0
  27. aikit/MANUS.md +3 -0
  28. aikit/Makefile +70 -0
  29. aikit/README.md +1161 -0
  30. aikit/SECURITY.md +8 -0
  31. aikit/SKILL.md +105 -0
  32. aikit/VERSION +1 -0
  33. aikit/__init__.py +1 -0
  34. aikit/ai-kit/ADAPTERS.md +5 -0
  35. aikit/ai-kit/CONTAINERS.md +5 -0
  36. aikit/ai-kit/ENGINEERING.md +5 -0
  37. aikit/ai-kit/INTENT.md +5 -0
  38. aikit/ai-kit/MODELS.md +5 -0
  39. aikit/ai-kit/SKILLS.md +5 -0
  40. aikit/ai-kit/stacks/GO.md +5 -0
  41. aikit/ai-kit/stacks/LARAVEL.md +5 -0
  42. aikit/ai-kit/stacks/MOODLE.md +5 -0
  43. aikit/ai-kit/stacks/PYTHON.md +5 -0
  44. aikit/aikit_cli.py +59 -0
  45. aikit/deploy/k8s/install-preview-job.yaml +56 -0
  46. aikit/docker/build-requirements.txt +4 -0
  47. aikit/docker/check_version.py +29 -0
  48. aikit/docker/pypi-requirements.txt +3 -0
  49. aikit/docs/ADAPTER_PATH_FIX.md +23 -0
  50. aikit/docs/BENCHMARK.md +106 -0
  51. aikit/docs/CONTEXT7.md +33 -0
  52. aikit/docs/DECISIONS.md +22 -0
  53. aikit/docs/DEVELOPMENT_PLAN.md +16 -0
  54. aikit/docs/DIALOGUE_MEMORY.md +70 -0
  55. aikit/docs/DOCKER.md +74 -0
  56. aikit/docs/DOCKER_HUB_OVERVIEW.md +311 -0
  57. aikit/docs/EVALUATION.md +30 -0
  58. aikit/docs/IMPLEMENTATION.md +134 -0
  59. aikit/docs/MANUS_REVIEW.md +46 -0
  60. aikit/docs/PYPI.md +87 -0
  61. aikit/docs/PYPI_DESCRIPTION.md +103 -0
  62. aikit/docs/SECURITY_AUDIT.md +26 -0
  63. aikit/docs/STRIX.md +28 -0
  64. aikit/docs/V0_5_0.md +27 -0
  65. aikit/docs/V0_6_4.md +25 -0
  66. aikit/docs/V1_4_0.md +73 -0
  67. aikit/docs/V1_4_1.md +55 -0
  68. aikit/docs/V1_4_2.md +33 -0
  69. aikit/docs/WEB_DESIGN.md +72 -0
  70. aikit/docs/WINDOWS_CI_FIX.md +39 -0
  71. aikit/docs/adr/0000-template.md +24 -0
  72. aikit/docs/adr/0001-adaptive-model-routing.md +30 -0
  73. aikit/docs/adr/0002-template-separation.md +24 -0
  74. aikit/docs/adr/0003-agent-registry-and-router.md +24 -0
  75. aikit/docs/adr/0004-onboarding-and-project-facts.md +24 -0
  76. aikit/docs/adr/0005-client-settings-ownership.md +30 -0
  77. aikit/docs/adr/0006-routing-evidence-and-local-measurements.md +26 -0
  78. aikit/docs/adr/0007-generated-client-configuration-and-presets.md +34 -0
  79. aikit/docs/adr/0008-unified-cli-and-fact-drift.md +20 -0
  80. aikit/docs/adr/0009-provider-review-doctor-fix-and-ci-self-install.md +20 -0
  81. aikit/docs/adr/0010-metrics-analysis-and-gemini-verification.md +20 -0
  82. aikit/docs/adr/0011-evidence-lifecycle-and-evaluation.md +20 -0
  83. aikit/docs/adr/0012-measurement-led-routing.md +31 -0
  84. aikit/docs/adr/0013-docker-cli-image.md +24 -0
  85. aikit/docs/adr/0014-local-dialogue-memory.md +22 -0
  86. aikit/docs/history/original-bundle-checks.md +11 -0
  87. aikit/docs/history/v0.1-changelog.txt +37 -0
  88. aikit/docs/history/v0.10-changelog.md +12 -0
  89. aikit/docs/history/v0.2-changelog.md +35 -0
  90. aikit/docs/history/v0.3-changelog.md +25 -0
  91. aikit/docs/history/v0.4-changelog.md +31 -0
  92. aikit/docs/history/v0.5-changelog.md +14 -0
  93. aikit/docs/history/v0.6.4-changelog.md +12 -0
  94. aikit/docs/history/v0.6.5-v0.9-changelog.md +35 -0
  95. aikit/docs/history/v1.1.0-changelog.md +12 -0
  96. aikit/docs/history/v1.2.0-changelog.md +11 -0
  97. aikit/docs/history/verification-before-measurements.md +53 -0
  98. aikit/integrations/CONVENTIONS.md +3 -0
  99. aikit/integrations/README.md +7 -0
  100. aikit/integrations/agents.json +136 -0
  101. aikit/integrations/ai-kit-check.yml +66 -0
  102. aikit/integrations/ai-kit-cline.md +4 -0
  103. aikit/integrations/ai-kit-roo.md +4 -0
  104. aikit/integrations/ai-kit-windsurf.md +4 -0
  105. aikit/integrations/ai-kit.mdc +6 -0
  106. aikit/integrations/claude-settings.data-ask.json +23 -0
  107. aikit/integrations/claude-settings.git-ask.json +10 -0
  108. aikit/integrations/copilot-instructions.md +3 -0
  109. aikit/integrations/security-audit.json +135 -0
  110. aikit/integrations/strix.json +69 -0
  111. aikit/pyproject.toml +60 -0
  112. aikit/scripts/__init__.py +1 -0
  113. aikit/scripts/adapters.py +184 -0
  114. aikit/scripts/adaptive.py +167 -0
  115. aikit/scripts/adr.py +61 -0
  116. aikit/scripts/benchmark.py +543 -0
  117. aikit/scripts/changelog.py +55 -0
  118. aikit/scripts/check_distribution.py +178 -0
  119. aikit/scripts/check_kit.py +406 -0
  120. aikit/scripts/context.py +184 -0
  121. aikit/scripts/docker_test_usage.py +55 -0
  122. aikit/scripts/doctor.py +313 -0
  123. aikit/scripts/evaluate.py +125 -0
  124. aikit/scripts/install.py +1584 -0
  125. aikit/scripts/learning.py +260 -0
  126. aikit/scripts/memory.py +344 -0
  127. aikit/scripts/memory_import.py +177 -0
  128. aikit/scripts/memory_store.py +125 -0
  129. aikit/scripts/metrics.py +351 -0
  130. aikit/scripts/router.py +399 -0
  131. aikit/template/.agents/hooks/session-start.md +3 -0
  132. aikit/template/.agents/hooks/session-start.sh +21 -0
  133. aikit/template/.agents/skills/ai-kit-bootstrap/SKILL.md +14 -0
  134. aikit/template/.agents/skills/ai-kit-review/SKILL.md +11 -0
  135. aikit/template/.agents/skills/ai-kit-sync-context/SKILL.md +12 -0
  136. aikit/template/.agents/skills/context7-docs/SKILL.md +11 -0
  137. aikit/template/.agents/skills/design-extract/SKILL.md +9 -0
  138. aikit/template/.agents/skills/dotnet-work/SKILL.md +9 -0
  139. aikit/template/.agents/skills/filament-work/SKILL.md +9 -0
  140. aikit/template/.agents/skills/frontend-work/SKILL.md +9 -0
  141. aikit/template/.agents/skills/go-work/SKILL.md +9 -0
  142. aikit/template/.agents/skills/infra-work/SKILL.md +9 -0
  143. aikit/template/.agents/skills/java-work/SKILL.md +9 -0
  144. aikit/template/.agents/skills/laravel-blade-ui/SKILL.md +9 -0
  145. aikit/template/.agents/skills/laravel-work/SKILL.md +10 -0
  146. aikit/template/.agents/skills/library-work/SKILL.md +9 -0
  147. aikit/template/.agents/skills/moodle-work/SKILL.md +9 -0
  148. aikit/template/.agents/skills/php-work/SKILL.md +9 -0
  149. aikit/template/.agents/skills/project-continuity/SKILL.md +21 -0
  150. aikit/template/.agents/skills/python-work/SKILL.md +9 -0
  151. aikit/template/.agents/skills/rust-work/SKILL.md +9 -0
  152. aikit/template/.agents/skills/security-audit/SKILL.md +16 -0
  153. aikit/template/.agents/skills/security-audit/agents/openai.yaml +2 -0
  154. aikit/template/.agents/skills/strix/SKILL.md +16 -0
  155. aikit/template/.agents/skills/strix/agents/openai.yaml +2 -0
  156. aikit/template/.agents/skills/ui-review/SKILL.md +9 -0
  157. aikit/template/.agents/skills/web-design/SKILL.md +9 -0
  158. aikit/template/AGENTS.md +16 -0
  159. aikit/template/CHANGELOG.md +6 -0
  160. aikit/template/CLAUDE.md +5 -0
  161. aikit/template/GEMINI.md +4 -0
  162. aikit/template/KIMI.md +4 -0
  163. aikit/template/MANUS.md +4 -0
  164. aikit/template/PROJECT_CONTEXT.md +35 -0
  165. aikit/template/README.md +6 -0
  166. aikit/template/WIKI.md +37 -0
  167. aikit/template/ai-kit/ADAPTERS.md +100 -0
  168. aikit/template/ai-kit/BOOTSTRAP.md +15 -0
  169. aikit/template/ai-kit/CONTAINERS.md +63 -0
  170. aikit/template/ai-kit/CONTEXT7.md +96 -0
  171. aikit/template/ai-kit/CORE.md +23 -0
  172. aikit/template/ai-kit/ENGINEERING.md +34 -0
  173. aikit/template/ai-kit/MCP.md +17 -0
  174. aikit/template/ai-kit/METRICS.md +83 -0
  175. aikit/template/ai-kit/SECURITY-AUDIT.md +21 -0
  176. aikit/template/ai-kit/SECURITY.md +34 -0
  177. aikit/template/ai-kit/SKILLS.md +37 -0
  178. aikit/template/ai-kit/STRIX.md +44 -0
  179. aikit/template/ai-kit/UPSTREAM.md +38 -0
  180. aikit/template/ai-kit/WEB-DESIGN.md +37 -0
  181. aikit/template/ai-kit/profiles/OWNER.md +19 -0
  182. aikit/template/ai-kit/project.json +14 -0
  183. aikit/template/ai-kit/router/POLICY.md +79 -0
  184. aikit/template/ai-kit/router/providers/anthropic.json +44 -0
  185. aikit/template/ai-kit/router/providers/anthropic.md +14 -0
  186. aikit/template/ai-kit/router/providers/gemini.json +13 -0
  187. aikit/template/ai-kit/router/providers/gemini.md +10 -0
  188. aikit/template/ai-kit/router/providers/kimi.json +26 -0
  189. aikit/template/ai-kit/router/providers/kimi.md +13 -0
  190. aikit/template/ai-kit/router/providers/local.json +18 -0
  191. aikit/template/ai-kit/router/providers/local.md +10 -0
  192. aikit/template/ai-kit/router/providers/openai.json +48 -0
  193. aikit/template/ai-kit/router/providers/openai.md +14 -0
  194. aikit/template/ai-kit/router/routing.json +11 -0
  195. aikit/template/ai-kit/router/selection.json +14 -0
  196. aikit/template/ai-kit/settings.json +11 -0
  197. aikit/template/ai-kit/stacks/DOTNET.md +13 -0
  198. aikit/template/ai-kit/stacks/FILAMENT.md +18 -0
  199. aikit/template/ai-kit/stacks/FRONTEND.md +9 -0
  200. aikit/template/ai-kit/stacks/GO.md +19 -0
  201. aikit/template/ai-kit/stacks/INFRA.md +12 -0
  202. aikit/template/ai-kit/stacks/JAVA.md +13 -0
  203. aikit/template/ai-kit/stacks/LARAVEL.md +15 -0
  204. aikit/template/ai-kit/stacks/LIBRARY.md +9 -0
  205. aikit/template/ai-kit/stacks/MOODLE.md +12 -0
  206. aikit/template/ai-kit/stacks/PHP.md +11 -0
  207. aikit/template/ai-kit/stacks/PYTHON.md +11 -0
  208. aikit/template/ai-kit/stacks/RUST.md +18 -0
  209. aikit/template/ai-kit/vendor/security-audit/AI-AND-LLM.md +83 -0
  210. aikit/template/ai-kit/vendor/security-audit/ATTACK-CLASSES.md +130 -0
  211. aikit/template/ai-kit/vendor/security-audit/CLIENT-SIDE.md +83 -0
  212. aikit/template/ai-kit/vendor/security-audit/CLOUD-AND-DEPLOYMENT.md +86 -0
  213. aikit/template/ai-kit/vendor/security-audit/DATA-ISOLATION-AND-LIFECYCLE.md +84 -0
  214. aikit/template/ai-kit/vendor/security-audit/DESKTOP-MOBILE-AND-LOCAL-IPC.md +89 -0
  215. aikit/template/ai-kit/vendor/security-audit/HUNTING.md +251 -0
  216. aikit/template/ai-kit/vendor/security-audit/LICENSE +21 -0
  217. aikit/template/ai-kit/vendor/security-audit/MEMORY-SAFETY-AND-BINARY.md +101 -0
  218. aikit/template/ai-kit/vendor/security-audit/PROTOCOLS-RPC-AND-MESSAGING.md +81 -0
  219. aikit/template/ai-kit/vendor/security-audit/RECONNAISSANCE.md +156 -0
  220. aikit/template/ai-kit/vendor/security-audit/RESOURCE-EXHAUSTION-AND-AVAILABILITY.md +78 -0
  221. aikit/template/ai-kit/vendor/security-audit/SKILL.md +192 -0
  222. aikit/template/ai-kit/vendor/security-audit/SUPPLY-CHAIN-AND-RELEASE.md +73 -0
  223. aikit/template/ai-kit/vendor/security-audit/VALIDATION-AND-REPORTING.md +186 -0
  224. aikit/template/ai-kit/vendor/security-audit/WEB-PROTOCOL-AND-AUTH.md +105 -0
  225. aikit/template/ai-kit/vendor/security-audit/report-schema.json +461 -0
  226. aikit/template/ai-kit/vendor/security-audit/validate-coverage-ledger.cjs +872 -0
  227. aikit/template/ai-kit/vendor/security-audit/validate-coverage-ledger.test.cjs +740 -0
  228. aikit/template/ai-kit/vendor/security-audit/validate-findings.cjs +773 -0
  229. aikit/template/ai-kit/vendor/security-audit/validate-findings.test.cjs +652 -0
  230. aikit/template/ai-kit/vendor/strix/LICENSE +201 -0
  231. aikit/template/ai-kit/vendor/strix/api-security-testing/SKILL.md +61 -0
  232. aikit/template/ai-kit/vendor/strix/application-security-testing/SKILL.md +66 -0
  233. aikit/template/ai-kit/vendor/strix/ci-security-scanning-with-strix/SKILL.md +149 -0
  234. aikit/template/ai-kit/vendor/strix/find-security-vulnerabilities-in-code/SKILL.md +62 -0
  235. aikit/template/ai-kit/vendor/strix/fix-security-vulnerabilities-with-strix/SKILL.md +77 -0
  236. aikit/template/ai-kit/vendor/strix/managed-pentesting-with-strix/SKILL.md +321 -0
  237. aikit/template/ai-kit/vendor/strix/owasp-top-10-testing/SKILL.md +64 -0
  238. aikit/template/ai-kit/vendor/strix/penetration-testing-with-strix/SKILL.md +162 -0
  239. aikit/template/ai-kit/vendor/strix/web-app-penetration-testing/SKILL.md +54 -0
  240. aikit/template/ai-kit/web-design/LARAVEL.md +51 -0
  241. aikit/template/ai-kit/web-design/LIBRARIES.md +39 -0
  242. aikit/template/ai-kit/web-design/REVIEW.md +37 -0
  243. aikit/template/ai-kit/web-design/TOOLS.md +43 -0
  244. aikit/template/docs/DECISIONS.md +7 -0
  245. aikit/template/docs/adr/0000-template.md +20 -0
  246. aikit/template/docs/design/ACCEPTANCE.md +24 -0
  247. aikit/template/docs/design/BRIEF.md +26 -0
  248. aikit/template/docs/design/SYSTEM.md +30 -0
  249. aikit/templates/agent-secrets.ignore +19 -0
  250. aikit/templates/gitignore.private +160 -0
  251. aikit/templates/gitignore.team +139 -0
  252. aikit/tests/build_distribution.py +73 -0
  253. aikit/tests/docker_smoke.py +172 -0
  254. aikit/tests/fixtures/create-junction.ps1 +18 -0
  255. aikit/tests/fixtures/golden/claude-settings-local.json +58 -0
  256. aikit/tests/test_adapters.py +105 -0
  257. aikit/tests/test_aikit.py +79 -0
  258. aikit/tests/test_benchmark.py +241 -0
  259. aikit/tests/test_check_kit.py +203 -0
  260. aikit/tests/test_context.py +76 -0
  261. aikit/tests/test_context7.py +153 -0
  262. aikit/tests/test_context_selection.py +70 -0
  263. aikit/tests/test_distribution.py +181 -0
  264. aikit/tests/test_docker_image.py +63 -0
  265. aikit/tests/test_docker_test_usage.py +54 -0
  266. aikit/tests/test_doctor.py +148 -0
  267. aikit/tests/test_evaluate.py +66 -0
  268. aikit/tests/test_install.py +939 -0
  269. aikit/tests/test_learning.py +247 -0
  270. aikit/tests/test_memory.py +371 -0
  271. aikit/tests/test_metrics.py +209 -0
  272. aikit/tests/test_native.py +342 -0
  273. aikit/tests/test_onboarding.py +301 -0
  274. aikit/tests/test_router.py +336 -0
  275. aikit/tests/test_security_audit.py +237 -0
  276. aikit/tests/test_strix.py +245 -0
  277. aikit/tests/test_web_design.py +219 -0
  278. aikit/tests/wheel_smoke.py +104 -0
@@ -0,0 +1,461 @@
1
+ {
2
+ "$comment": "Top-level contract for findings.json. validate-findings.cjs interprets and checks this schema directly.",
3
+ "type": "array",
4
+ "items": {
5
+ "oneOf": [
6
+ {
7
+ "type": "object",
8
+ "description": "A source-grounded vulnerability that was independently demonstrated.",
9
+ "properties": {
10
+ "verdict": {
11
+ "type": "string",
12
+ "const": "confirmed"
13
+ },
14
+ "fingerprint": {
15
+ "type": "string",
16
+ "minLength": 1,
17
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/@+-]*$",
18
+ "description": "A stable source-derived identifier that does not change between validation states."
19
+ },
20
+ "title": {
21
+ "type": "string",
22
+ "minLength": 1,
23
+ "visibleContent": true
24
+ },
25
+ "description": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "visibleContent": true
29
+ },
30
+ "root_cause": {
31
+ "type": "string",
32
+ "minLength": 1,
33
+ "visibleContent": true
34
+ },
35
+ "intended_behavior": {
36
+ "type": "string",
37
+ "minLength": 1,
38
+ "visibleContent": true
39
+ },
40
+ "trace": {
41
+ "type": "array",
42
+ "minItems": 1,
43
+ "uniqueItems": true,
44
+ "items": {
45
+ "type": "object",
46
+ "properties": {
47
+ "kind": {
48
+ "type": "string",
49
+ "enum": ["entrypoint", "propagation", "sink"]
50
+ },
51
+ "file": {
52
+ "type": "string",
53
+ "minLength": 1
54
+ },
55
+ "line": {
56
+ "type": "integer",
57
+ "minimum": 1
58
+ },
59
+ "scope": {
60
+ "type": "string",
61
+ "minLength": 1,
62
+ "visibleContent": true
63
+ },
64
+ "description": {
65
+ "type": "string",
66
+ "minLength": 1,
67
+ "visibleContent": true
68
+ }
69
+ },
70
+ "required": ["kind", "file", "line", "scope", "description"],
71
+ "additionalProperties": false
72
+ }
73
+ },
74
+ "evidence": {
75
+ "type": "array",
76
+ "minItems": 1,
77
+ "uniqueItems": true,
78
+ "items": {
79
+ "type": "object",
80
+ "properties": {
81
+ "file": {
82
+ "type": "string",
83
+ "minLength": 1
84
+ },
85
+ "line": {
86
+ "type": "integer",
87
+ "minimum": 1
88
+ },
89
+ "description": {
90
+ "type": "string",
91
+ "minLength": 1,
92
+ "visibleContent": true
93
+ }
94
+ },
95
+ "required": ["file", "line", "description"],
96
+ "additionalProperties": false
97
+ }
98
+ },
99
+ "conditions": {
100
+ "type": "array",
101
+ "uniqueItems": true,
102
+ "items": {
103
+ "type": "object",
104
+ "properties": {
105
+ "kind": {
106
+ "type": "string",
107
+ "enum": ["authentication_level", "authorization_role", "user_interaction", "system_configuration", "network_routing", "environmental_dependency", "data_state", "timing_dependency", "third_party_dependency"]
108
+ },
109
+ "description": {
110
+ "type": "string",
111
+ "minLength": 1,
112
+ "visibleContent": true
113
+ }
114
+ },
115
+ "required": ["kind", "description"],
116
+ "additionalProperties": false
117
+ }
118
+ },
119
+ "execution": {
120
+ "type": "object",
121
+ "description": "Target-neutral reproduction in the target's native interface.",
122
+ "properties": {
123
+ "attacker_perspective": {
124
+ "type": "string",
125
+ "minLength": 1,
126
+ "visibleContent": true
127
+ },
128
+ "payloads": {
129
+ "type": "array",
130
+ "minItems": 1,
131
+ "uniqueItems": true,
132
+ "items": {
133
+ "type": "string"
134
+ }
135
+ },
136
+ "instructions": {
137
+ "type": "array",
138
+ "minItems": 1,
139
+ "items": {
140
+ "type": "string",
141
+ "minLength": 1,
142
+ "visibleContent": true
143
+ }
144
+ },
145
+ "observed_result": {
146
+ "type": "string",
147
+ "minLength": 1,
148
+ "visibleContent": true
149
+ }
150
+ },
151
+ "required": ["attacker_perspective", "payloads", "instructions", "observed_result"],
152
+ "additionalProperties": false
153
+ },
154
+ "remediation": {
155
+ "type": "object",
156
+ "properties": {
157
+ "strategy": {
158
+ "type": "string",
159
+ "minLength": 1,
160
+ "visibleContent": true
161
+ },
162
+ "code_changes": {
163
+ "type": "array",
164
+ "items": {
165
+ "type": "object",
166
+ "properties": {
167
+ "file_name": {
168
+ "type": "string",
169
+ "minLength": 1
170
+ },
171
+ "fixed_code": {
172
+ "type": "string"
173
+ }
174
+ },
175
+ "required": ["file_name", "fixed_code"],
176
+ "additionalProperties": false
177
+ }
178
+ }
179
+ },
180
+ "required": ["strategy"],
181
+ "additionalProperties": false
182
+ },
183
+ "severity": {
184
+ "type": "object",
185
+ "properties": {
186
+ "likelihood": {
187
+ "type": "object",
188
+ "properties": {
189
+ "score": {
190
+ "type": "string",
191
+ "enum": ["informational", "low", "medium", "high", "critical"]
192
+ },
193
+ "reason": {
194
+ "type": "string",
195
+ "minLength": 1,
196
+ "visibleContent": true
197
+ }
198
+ },
199
+ "required": ["score", "reason"],
200
+ "additionalProperties": false
201
+ },
202
+ "impact": {
203
+ "type": "object",
204
+ "properties": {
205
+ "score": {
206
+ "type": "string",
207
+ "enum": ["informational", "low", "medium", "high", "critical"]
208
+ },
209
+ "reason": {
210
+ "type": "string",
211
+ "minLength": 1,
212
+ "visibleContent": true
213
+ }
214
+ },
215
+ "required": ["score", "reason"],
216
+ "additionalProperties": false
217
+ },
218
+ "overall_severity": {
219
+ "type": "string",
220
+ "enum": ["informational", "low", "medium", "high", "critical"]
221
+ }
222
+ },
223
+ "required": ["likelihood", "impact", "overall_severity"],
224
+ "additionalProperties": false
225
+ },
226
+ "confidence": {
227
+ "type": "object",
228
+ "properties": {
229
+ "score": {
230
+ "type": "string",
231
+ "enum": ["low", "medium", "high"]
232
+ },
233
+ "reason": {
234
+ "type": "string",
235
+ "minLength": 1,
236
+ "visibleContent": true
237
+ }
238
+ },
239
+ "required": ["score", "reason"],
240
+ "additionalProperties": false
241
+ }
242
+ },
243
+ "required": ["verdict", "fingerprint", "title", "description", "root_cause", "intended_behavior", "trace", "evidence", "conditions", "execution", "remediation", "severity", "confidence"],
244
+ "additionalProperties": false
245
+ },
246
+ {
247
+ "type": "object",
248
+ "description": "A source-grounded candidate whose decisive validation is blocked.",
249
+ "properties": {
250
+ "verdict": {
251
+ "type": "string",
252
+ "const": "needs_validation"
253
+ },
254
+ "fingerprint": {
255
+ "type": "string",
256
+ "minLength": 1,
257
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/@+-]*$"
258
+ },
259
+ "title": {
260
+ "type": "string",
261
+ "minLength": 1,
262
+ "visibleContent": true
263
+ },
264
+ "description": {
265
+ "type": "string",
266
+ "minLength": 1,
267
+ "visibleContent": true
268
+ },
269
+ "claimed_root_cause": {
270
+ "type": "string",
271
+ "minLength": 1,
272
+ "visibleContent": true
273
+ },
274
+ "trace": {
275
+ "type": "array",
276
+ "minItems": 1,
277
+ "uniqueItems": true,
278
+ "items": {
279
+ "type": "object",
280
+ "properties": {
281
+ "kind": {
282
+ "type": "string",
283
+ "enum": ["entrypoint", "propagation", "sink"]
284
+ },
285
+ "file": {
286
+ "type": "string",
287
+ "minLength": 1
288
+ },
289
+ "line": {
290
+ "type": "integer",
291
+ "minimum": 1
292
+ },
293
+ "scope": {
294
+ "type": "string",
295
+ "minLength": 1,
296
+ "visibleContent": true
297
+ },
298
+ "description": {
299
+ "type": "string",
300
+ "minLength": 1,
301
+ "visibleContent": true
302
+ }
303
+ },
304
+ "required": ["kind", "file", "line", "scope", "description"],
305
+ "additionalProperties": false
306
+ }
307
+ },
308
+ "evidence": {
309
+ "type": "array",
310
+ "minItems": 1,
311
+ "uniqueItems": true,
312
+ "items": {
313
+ "type": "object",
314
+ "properties": {
315
+ "file": {
316
+ "type": "string",
317
+ "minLength": 1
318
+ },
319
+ "line": {
320
+ "type": "integer",
321
+ "minimum": 1
322
+ },
323
+ "description": {
324
+ "type": "string",
325
+ "minLength": 1,
326
+ "visibleContent": true
327
+ }
328
+ },
329
+ "required": ["file", "line", "description"],
330
+ "additionalProperties": false
331
+ }
332
+ },
333
+ "blockers": {
334
+ "type": "array",
335
+ "minItems": 1,
336
+ "uniqueItems": true,
337
+ "items": {
338
+ "type": "string",
339
+ "minLength": 1,
340
+ "visibleContent": true
341
+ }
342
+ },
343
+ "validation_plan": {
344
+ "type": "object",
345
+ "properties": {
346
+ "local": {
347
+ "type": "string",
348
+ "minLength": 1,
349
+ "visibleContent": true
350
+ },
351
+ "deployment": {
352
+ "type": "string",
353
+ "minLength": 1,
354
+ "visibleContent": true
355
+ }
356
+ },
357
+ "additionalProperties": false
358
+ }
359
+ },
360
+ "required": ["verdict", "fingerprint", "title", "description", "claimed_root_cause", "trace", "evidence", "blockers", "validation_plan"],
361
+ "additionalProperties": false
362
+ },
363
+ {
364
+ "type": "object",
365
+ "description": "A source-grounded candidate refuted during validation.",
366
+ "properties": {
367
+ "verdict": {
368
+ "type": "string",
369
+ "const": "rejected"
370
+ },
371
+ "fingerprint": {
372
+ "type": "string",
373
+ "minLength": 1,
374
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/@+-]*$"
375
+ },
376
+ "title": {
377
+ "type": "string",
378
+ "minLength": 1,
379
+ "visibleContent": true
380
+ },
381
+ "description": {
382
+ "type": "string",
383
+ "minLength": 1,
384
+ "visibleContent": true
385
+ },
386
+ "claimed_root_cause": {
387
+ "type": "string",
388
+ "minLength": 1,
389
+ "visibleContent": true
390
+ },
391
+ "trace": {
392
+ "type": "array",
393
+ "minItems": 1,
394
+ "uniqueItems": true,
395
+ "items": {
396
+ "type": "object",
397
+ "properties": {
398
+ "kind": {
399
+ "type": "string",
400
+ "enum": ["entrypoint", "propagation", "sink"]
401
+ },
402
+ "file": {
403
+ "type": "string",
404
+ "minLength": 1
405
+ },
406
+ "line": {
407
+ "type": "integer",
408
+ "minimum": 1
409
+ },
410
+ "scope": {
411
+ "type": "string",
412
+ "minLength": 1,
413
+ "visibleContent": true
414
+ },
415
+ "description": {
416
+ "type": "string",
417
+ "minLength": 1,
418
+ "visibleContent": true
419
+ }
420
+ },
421
+ "required": ["kind", "file", "line", "scope", "description"],
422
+ "additionalProperties": false
423
+ }
424
+ },
425
+ "evidence": {
426
+ "type": "array",
427
+ "minItems": 1,
428
+ "uniqueItems": true,
429
+ "items": {
430
+ "type": "object",
431
+ "properties": {
432
+ "file": {
433
+ "type": "string",
434
+ "minLength": 1
435
+ },
436
+ "line": {
437
+ "type": "integer",
438
+ "minimum": 1
439
+ },
440
+ "description": {
441
+ "type": "string",
442
+ "minLength": 1,
443
+ "visibleContent": true
444
+ }
445
+ },
446
+ "required": ["file", "line", "description"],
447
+ "additionalProperties": false
448
+ }
449
+ },
450
+ "reason": {
451
+ "type": "string",
452
+ "minLength": 1,
453
+ "visibleContent": true
454
+ }
455
+ },
456
+ "required": ["verdict", "fingerprint", "title", "description", "claimed_root_cause", "trace", "evidence", "reason"],
457
+ "additionalProperties": false
458
+ }
459
+ ]
460
+ }
461
+ }