icdev 1.0.0__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 (1105) hide show
  1. icdev/__init__.py +18 -0
  2. icdev/_paths.py +85 -0
  3. icdev/_version.py +3 -0
  4. icdev/data/__init__.py +1 -0
  5. icdev/data/args/__init__.py +1 -0
  6. icdev/data/args/agent_authority.yaml +61 -0
  7. icdev/data/args/agent_config.yaml +355 -0
  8. icdev/data/args/agentic_fitness.yaml +31 -0
  9. icdev/data/args/ai_governance_config.yaml +137 -0
  10. icdev/data/args/atlas_critique_config.yaml +66 -0
  11. icdev/data/args/bedrock_models.yaml +63 -0
  12. icdev/data/args/cicd_config.yaml +82 -0
  13. icdev/data/args/classification_config.yaml +232 -0
  14. icdev/data/args/cli_config.yaml +154 -0
  15. icdev/data/args/cloud_config.yaml +63 -0
  16. icdev/data/args/code_pattern_config.yaml +151 -0
  17. icdev/data/args/code_quality_config.yaml +47 -0
  18. icdev/data/args/companion_registry.yaml +202 -0
  19. icdev/data/args/context_config.yaml +82 -0
  20. icdev/data/args/csp_monitor_config.yaml +268 -0
  21. icdev/data/args/cui_markings.yaml +35 -0
  22. icdev/data/args/db_config.yaml +40 -0
  23. icdev/data/args/deployment_profiles.yaml +248 -0
  24. icdev/data/args/dev_profile_config.yaml +144 -0
  25. icdev/data/args/devsecops_config.yaml +286 -0
  26. icdev/data/args/endpoint_security_config.yaml +137 -0
  27. icdev/data/args/extension_config.yaml +79 -0
  28. icdev/data/args/file_access_tiers.yaml +88 -0
  29. icdev/data/args/framework_registry.yaml +415 -0
  30. icdev/data/args/innovation_config.yaml +431 -0
  31. icdev/data/args/installation_manifest.yaml +1087 -0
  32. icdev/data/args/llm_config.yaml +495 -0
  33. icdev/data/args/maintenance_config.yaml +55 -0
  34. icdev/data/args/memory_config.yaml +83 -0
  35. icdev/data/args/monitoring_config.yaml +127 -0
  36. icdev/data/args/mosa_config.yaml +190 -0
  37. icdev/data/args/nlq_config.yaml +35 -0
  38. icdev/data/args/observability_config.yaml +39 -0
  39. icdev/data/args/observability_tracing_config.yaml +170 -0
  40. icdev/data/args/oscal_tools_config.yaml +43 -0
  41. icdev/data/args/owasp_agentic_config.yaml +171 -0
  42. icdev/data/args/phase_registry.yaml +618 -0
  43. icdev/data/args/project_defaults.yaml +235 -0
  44. icdev/data/args/prompt_chains.yaml +163 -0
  45. icdev/data/args/resilience_config.yaml +50 -0
  46. icdev/data/args/ricoas_config.yaml +191 -0
  47. icdev/data/args/role_personas.yaml +362 -0
  48. icdev/data/args/scaling_config.yaml +176 -0
  49. icdev/data/args/security_gates.yaml +685 -0
  50. icdev/data/args/skill_injection_config.yaml +322 -0
  51. icdev/data/args/spec_config.yaml +53 -0
  52. icdev/data/args/supply_chain_config.yaml +76 -0
  53. icdev/data/args/translation_config.yaml +228 -0
  54. icdev/data/args/workflow_templates/ato_acceleration.yaml +54 -0
  55. icdev/data/args/workflow_templates/build_deploy.yaml +63 -0
  56. icdev/data/args/workflow_templates/full_compliance.yaml +43 -0
  57. icdev/data/args/workflow_templates/security_hardening.yaml +55 -0
  58. icdev/data/args/worktree_config.yaml +34 -0
  59. icdev/data/args/zta_config.yaml +247 -0
  60. icdev/data/context/__init__.py +1 -0
  61. icdev/data/context/agent/__init__.py +1 -0
  62. icdev/data/context/agent/response_schemas/__init__.py +1 -0
  63. icdev/data/context/agent/response_schemas/debate_position.json +46 -0
  64. icdev/data/context/agent/response_schemas/fitness_scorecard.json +74 -0
  65. icdev/data/context/agent/response_schemas/review_decision.json +39 -0
  66. icdev/data/context/agent/response_schemas/task_decomposition.json +82 -0
  67. icdev/data/context/agent/response_schemas/veto_decision.json +40 -0
  68. icdev/data/context/agentic/__init__.py +1 -0
  69. icdev/data/context/agentic/architecture_patterns.md +269 -0
  70. icdev/data/context/agentic/capability_registry.yaml +202 -0
  71. icdev/data/context/agentic/csp_mcp_registry.yaml +280 -0
  72. icdev/data/context/agentic/fitness_rubric.md +56 -0
  73. icdev/data/context/agentic/governance_baseline.md +205 -0
  74. icdev/data/context/ci/__init__.py +1 -0
  75. icdev/data/context/ci/worktree_templates.json +44 -0
  76. icdev/data/context/cloud/__init__.py +1 -0
  77. icdev/data/context/cloud/csp_service_registry.json +739 -0
  78. icdev/data/context/compliance/__init__.py +1 -0
  79. icdev/data/context/compliance/atlas_mitigations.json +293 -0
  80. icdev/data/context/compliance/atlas_techniques.json +833 -0
  81. icdev/data/context/compliance/cisa_sbd_requirements.json +432 -0
  82. icdev/data/context/compliance/cjis_security_policy.json +522 -0
  83. icdev/data/context/compliance/cmmc_practices.json +2494 -0
  84. icdev/data/context/compliance/cmmc_report_template.md +142 -0
  85. icdev/data/context/compliance/cnssi_1253_overlay.json +109 -0
  86. icdev/data/context/compliance/control_crosswalk.json +1914 -0
  87. icdev/data/context/compliance/control_families/__init__.py +1 -0
  88. icdev/data/context/compliance/csp_certifications.json +251 -0
  89. icdev/data/context/compliance/cssp_report_template.md +193 -0
  90. icdev/data/context/compliance/cui_templates/__init__.py +1 -0
  91. icdev/data/context/compliance/cui_templates/banner_block.txt +4 -0
  92. icdev/data/context/compliance/cui_templates/code_header.txt +8 -0
  93. icdev/data/context/compliance/cui_templates/document_template.md +35 -0
  94. icdev/data/context/compliance/data_type_framework_map.json +321 -0
  95. icdev/data/context/compliance/data_type_registry.json +147 -0
  96. icdev/data/context/compliance/dod_cssp_8530.json +463 -0
  97. icdev/data/context/compliance/eu_ai_act_annex_iii.json +108 -0
  98. icdev/data/context/compliance/export_templates/__init__.py +1 -0
  99. icdev/data/context/compliance/export_templates/emass_controls.csv.j2 +4 -0
  100. icdev/data/context/compliance/export_templates/evidence_package.md.j2 +39 -0
  101. icdev/data/context/compliance/export_templates/executive_summary.md.j2 +55 -0
  102. icdev/data/context/compliance/export_templates/poam_tracking.csv.j2 +4 -0
  103. icdev/data/context/compliance/fedramp_20x_ksi_schemas.json +133 -0
  104. icdev/data/context/compliance/fedramp_high_baseline.json +4370 -0
  105. icdev/data/context/compliance/fedramp_moderate_baseline.json +2183 -0
  106. icdev/data/context/compliance/fedramp_report_template.md +181 -0
  107. icdev/data/context/compliance/fips_200_areas.json +362 -0
  108. icdev/data/context/compliance/gao_ai_accountability.json +262 -0
  109. icdev/data/context/compliance/hipaa_security_rule.json +720 -0
  110. icdev/data/context/compliance/hitrust_csf_v11.json +930 -0
  111. icdev/data/context/compliance/impact_level_profiles.json +251 -0
  112. icdev/data/context/compliance/incident_response_template.md +1110 -0
  113. icdev/data/context/compliance/iso27001_2022_controls.json +750 -0
  114. icdev/data/context/compliance/iso27001_nist_bridge.json +382 -0
  115. icdev/data/context/compliance/iso42001_controls.json +254 -0
  116. icdev/data/context/compliance/ivv_checklist_template.md +80 -0
  117. icdev/data/context/compliance/ivv_report_template.md +116 -0
  118. icdev/data/context/compliance/ivv_requirements.json +372 -0
  119. icdev/data/context/compliance/mosa_crosswalk.json +327 -0
  120. icdev/data/context/compliance/mosa_framework.json +250 -0
  121. icdev/data/context/compliance/narrative_templates/AC.md.j2 +101 -0
  122. icdev/data/context/compliance/narrative_templates/AU.md.j2 +106 -0
  123. icdev/data/context/compliance/narrative_templates/IA.md.j2 +104 -0
  124. icdev/data/context/compliance/narrative_templates/SC.md.j2 +102 -0
  125. icdev/data/context/compliance/narrative_templates/SI.md.j2 +111 -0
  126. icdev/data/context/compliance/narrative_templates/__init__.py +1 -0
  127. icdev/data/context/compliance/narrative_templates/default.md.j2 +50 -0
  128. icdev/data/context/compliance/narrative_templates/executive_summary.j2 +27 -0
  129. icdev/data/context/compliance/narrative_templates/poam_milestone.j2 +19 -0
  130. icdev/data/context/compliance/narrative_templates/ssp_section.j2 +11 -0
  131. icdev/data/context/compliance/nist_800_171_controls.json +1552 -0
  132. icdev/data/context/compliance/nist_800_207_crosswalk.json +399 -0
  133. icdev/data/context/compliance/nist_800_207_zta.json +258 -0
  134. icdev/data/context/compliance/nist_800_53.json +324 -0
  135. icdev/data/context/compliance/nist_ai_600_1_genai.json +326 -0
  136. icdev/data/context/compliance/nist_ai_rmf.json +206 -0
  137. icdev/data/context/compliance/nist_sp_800_60_types.json +1667 -0
  138. icdev/data/context/compliance/omb_m25_21_high_impact_ai.json +248 -0
  139. icdev/data/context/compliance/omb_m26_04_unbiased_ai.json +262 -0
  140. icdev/data/context/compliance/owasp_agentic_asi.json +133 -0
  141. icdev/data/context/compliance/owasp_agentic_threats.json +285 -0
  142. icdev/data/context/compliance/owasp_llm_top10.json +274 -0
  143. icdev/data/context/compliance/pci_dss_v4.json +510 -0
  144. icdev/data/context/compliance/poam_template.md +117 -0
  145. icdev/data/context/compliance/safeai_controls.json +512 -0
  146. icdev/data/context/compliance/sbd_report_template.md +77 -0
  147. icdev/data/context/compliance/siem_config_templates/__init__.py +1 -0
  148. icdev/data/context/compliance/siem_config_templates/filebeat.yml +213 -0
  149. icdev/data/context/compliance/siem_config_templates/log_sources.json +208 -0
  150. icdev/data/context/compliance/soc2_trust_criteria.json +661 -0
  151. icdev/data/context/compliance/ssp_template.md +432 -0
  152. icdev/data/context/compliance/stig_templates/__init__.py +1 -0
  153. icdev/data/context/compliance/stig_templates/webapp_stig.json +139 -0
  154. icdev/data/context/compliance/xai_requirements.json +108 -0
  155. icdev/data/context/dashboard/__init__.py +1 -0
  156. icdev/data/context/dashboard/nlq_examples.json +50 -0
  157. icdev/data/context/dashboard/schema_descriptions.json +23 -0
  158. icdev/data/context/integration/__init__.py +1 -0
  159. icdev/data/context/integration/approval_workflows.json +32 -0
  160. icdev/data/context/integration/gitlab_field_mappings.json +33 -0
  161. icdev/data/context/integration/jira_field_mappings.json +32 -0
  162. icdev/data/context/integration/reqif_export_schema.json +23 -0
  163. icdev/data/context/integration/servicenow_field_mappings.json +22 -0
  164. icdev/data/context/languages/__init__.py +1 -0
  165. icdev/data/context/languages/framework_patterns.json +205 -0
  166. icdev/data/context/languages/language_registry.json +279 -0
  167. icdev/data/context/llm/__init__.py +1 -0
  168. icdev/data/context/llm/example_provider.py +86 -0
  169. icdev/data/context/mbse/__init__.py +1 -0
  170. icdev/data/context/mbse/des_report_template.md +162 -0
  171. icdev/data/context/mbse/des_requirements.json +411 -0
  172. icdev/data/context/mbse/digital_thread_patterns.json +403 -0
  173. icdev/data/context/mbse/reqif_schema.json +280 -0
  174. icdev/data/context/mbse/sysml_element_types.json +432 -0
  175. icdev/data/context/modernization/__init__.py +1 -0
  176. icdev/data/context/modernization/db_type_mappings.json +148 -0
  177. icdev/data/context/modernization/decomposition_patterns.json +284 -0
  178. icdev/data/context/modernization/framework_migration_patterns.json +359 -0
  179. icdev/data/context/modernization/migration_report_template.md +168 -0
  180. icdev/data/context/modernization/seven_rs_catalog.json +369 -0
  181. icdev/data/context/modernization/version_upgrade_rules.json +279 -0
  182. icdev/data/context/oscal/NIST_SP-800-53_rev5_catalog.json +254987 -0
  183. icdev/data/context/oscal/README.md +43 -0
  184. icdev/data/context/patterns/__init__.py +1 -0
  185. icdev/data/context/profiles/__init__.py +1 -0
  186. icdev/data/context/profiles/dod_baseline_v1.yaml +145 -0
  187. icdev/data/context/profiles/fedramp_baseline_v1.yaml +143 -0
  188. icdev/data/context/profiles/financial_baseline_v1.yaml +142 -0
  189. icdev/data/context/profiles/healthcare_baseline_v1.yaml +135 -0
  190. icdev/data/context/profiles/law_enforcement_v1.yaml +129 -0
  191. icdev/data/context/profiles/startup_v1.yaml +134 -0
  192. icdev/data/context/requirements/__init__.py +1 -0
  193. icdev/data/context/requirements/ambiguity_patterns.json +97 -0
  194. icdev/data/context/requirements/boundary_impact_rules.json +123 -0
  195. icdev/data/context/requirements/default_constitutions.json +67 -0
  196. icdev/data/context/requirements/document_extraction_rules.json +58 -0
  197. icdev/data/context/requirements/gap_patterns.json +108 -0
  198. icdev/data/context/requirements/readiness_rubric.json +78 -0
  199. icdev/data/context/requirements/red_alternative_patterns.json +210 -0
  200. icdev/data/context/requirements/safe_templates.json +72 -0
  201. icdev/data/context/requirements/spec_quality_checklist.json +122 -0
  202. icdev/data/context/simulation/__init__.py +1 -0
  203. icdev/data/context/simulation/architecture_patterns.json +36 -0
  204. icdev/data/context/simulation/coa_templates.json +38 -0
  205. icdev/data/context/simulation/cost_models.json +23 -0
  206. icdev/data/context/simulation/risk_categories.json +46 -0
  207. icdev/data/context/supply_chain/__init__.py +1 -0
  208. icdev/data/context/supply_chain/isa_templates.json +129 -0
  209. icdev/data/context/supply_chain/nist_800_161_controls.json +247 -0
  210. icdev/data/context/supply_chain/scrm_risk_matrix.json +147 -0
  211. icdev/data/context/templates/__init__.py +1 -0
  212. icdev/data/context/templates/ansible/__init__.py +1 -0
  213. icdev/data/context/templates/ansible/playbooks/__init__.py +1 -0
  214. icdev/data/context/templates/ansible/roles/__init__.py +1 -0
  215. icdev/data/context/templates/gitlab_ci/__init__.py +1 -0
  216. icdev/data/context/templates/grafana/__init__.py +1 -0
  217. icdev/data/context/templates/kubernetes/__init__.py +1 -0
  218. icdev/data/context/templates/project/__init__.py +1 -0
  219. icdev/data/context/templates/project/api/__init__.py +1 -0
  220. icdev/data/context/templates/project/cli/__init__.py +1 -0
  221. icdev/data/context/templates/project/data_pipeline/__init__.py +1 -0
  222. icdev/data/context/templates/project/iac/__init__.py +1 -0
  223. icdev/data/context/templates/project/javascript_frontend/__init__.py +1 -0
  224. icdev/data/context/templates/project/javascript_frontend/src/__init__.py +1 -0
  225. icdev/data/context/templates/project/javascript_frontend/tests/__init__.py +1 -0
  226. icdev/data/context/templates/project/microservice/__init__.py +1 -0
  227. icdev/data/context/templates/project/python_backend/__init__.py +1 -0
  228. icdev/data/context/templates/project/python_backend/src/__init__.py +1 -0
  229. icdev/data/context/templates/project/python_backend/tests/__init__.py +1 -0
  230. icdev/data/context/templates/project/python_backend/tests/features/__init__.py +1 -0
  231. icdev/data/context/templates/project/python_backend/tests/steps/__init__.py +1 -0
  232. icdev/data/context/templates/terraform/__init__.py +1 -0
  233. icdev/data/context/templates/terraform/govcloud_base/__init__.py +1 -0
  234. icdev/data/context/templates/terraform/modules/__init__.py +1 -0
  235. icdev/data/context/tone/__init__.py +1 -0
  236. icdev/data/context/translation/dependency_mappings.json +186 -0
  237. icdev/data/context/translation/type_mappings.json +149 -0
  238. icdev/data/docs/README.md +187 -0
  239. icdev/data/docs/__init__.py +1 -0
  240. icdev/data/docs/admin/gateway-guide.md +338 -0
  241. icdev/data/docs/admin/marketplace-guide.md +396 -0
  242. icdev/data/docs/admin/monitoring-guide.md +509 -0
  243. icdev/data/docs/architecture/compliance-framework.md +764 -0
  244. icdev/data/docs/architecture/database-schema.md +689 -0
  245. icdev/data/docs/architecture/gotcha-framework.md +518 -0
  246. icdev/data/docs/architecture/multi-agent-system.md +603 -0
  247. icdev/data/docs/dx/README.md +106 -0
  248. icdev/data/docs/dx/__init__.py +1 -0
  249. icdev/data/docs/dx/ci-cd-integration.md +378 -0
  250. icdev/data/docs/dx/claude-code-guide.md +213 -0
  251. icdev/data/docs/dx/companion-guide.md +232 -0
  252. icdev/data/docs/dx/dev-profiles.md +309 -0
  253. icdev/data/docs/dx/icdev-yaml-spec.md +219 -0
  254. icdev/data/docs/dx/integration-tiers.md +279 -0
  255. icdev/data/docs/dx/llm-routing-guide.md +456 -0
  256. icdev/data/docs/dx/quickstart.md +192 -0
  257. icdev/data/docs/dx/sdk-reference.md +356 -0
  258. icdev/data/docs/dx/unified-mcp-setup.md +525 -0
  259. icdev/data/docs/features/__init__.py +1 -0
  260. icdev/data/docs/features/phase-01-gotcha-framework.md +249 -0
  261. icdev/data/docs/features/phase-02-atlas-build-workflow.md +223 -0
  262. icdev/data/docs/features/phase-03-tdd-bdd-testing.md +261 -0
  263. icdev/data/docs/features/phase-04-nist-compliance.md +255 -0
  264. icdev/data/docs/features/phase-05-security-scanning.md +229 -0
  265. icdev/data/docs/features/phase-06-infrastructure-deployment.md +288 -0
  266. icdev/data/docs/features/phase-07-code-review-gates.md +276 -0
  267. icdev/data/docs/features/phase-08-self-healing.md +223 -0
  268. icdev/data/docs/features/phase-09-monitoring-observability.md +230 -0
  269. icdev/data/docs/features/phase-10-dashboard-web-ui.md +218 -0
  270. icdev/data/docs/features/phase-11-multi-agent-architecture.md +272 -0
  271. icdev/data/docs/features/phase-12-integration-testing.md +228 -0
  272. icdev/data/docs/features/phase-13-cicd-integration.md +257 -0
  273. icdev/data/docs/features/phase-14-secure-by-design-ivv.md +240 -0
  274. icdev/data/docs/features/phase-15-maintenance-audit.md +192 -0
  275. icdev/data/docs/features/phase-16-ato-acceleration.md +228 -0
  276. icdev/data/docs/features/phase-17-multi-framework-compliance.md +223 -0
  277. icdev/data/docs/features/phase-18-mbse-integration.md +242 -0
  278. icdev/data/docs/features/phase-19-agentic-generation.md +202 -0
  279. icdev/data/docs/features/phase-20-fips-security-categorization.md +198 -0
  280. icdev/data/docs/features/phase-21-saas-multi-tenancy.md +273 -0
  281. icdev/data/docs/features/phase-22-federated-gotcha-marketplace.md +242 -0
  282. icdev/data/docs/features/phase-23-universal-compliance-platform.md +238 -0
  283. icdev/data/docs/features/phase-24-devsecops-pipeline-security.md +198 -0
  284. icdev/data/docs/features/phase-25-zero-trust-architecture.md +220 -0
  285. icdev/data/docs/features/phase-26-dod-mosa.md +205 -0
  286. icdev/data/docs/features/phase-27-cli-capabilities.md +222 -0
  287. icdev/data/docs/features/phase-28-remote-command-gateway.md +235 -0
  288. icdev/data/docs/features/phase-29-proactive-monitoring.md +212 -0
  289. icdev/data/docs/features/phase-30-dashboard-auth.md +215 -0
  290. icdev/data/docs/features/phase-31-dashboard-ux-low-impact.md +188 -0
  291. icdev/data/docs/features/phase-32-dashboard-ux-medium-impact.md +223 -0
  292. icdev/data/docs/features/phase-33-modular-installation.md +218 -0
  293. icdev/data/docs/features/phase-34-dev-profiles.md +239 -0
  294. icdev/data/docs/features/phase-35-innovation-engine.md +257 -0
  295. icdev/data/docs/features/phase-36-evolutionary-intelligence.md +351 -0
  296. icdev/data/docs/features/phase-37-mitre-atlas-integration.md +485 -0
  297. icdev/data/docs/features/phase-38-cloud-agnostic-architecture.md +1033 -0
  298. icdev/data/docs/features/phase-39-observability-operations.md +178 -0
  299. icdev/data/docs/features/phase-40-nlq-compliance-queries.md +176 -0
  300. icdev/data/docs/features/phase-41-parallel-cicd.md +169 -0
  301. icdev/data/docs/features/phase-42-framework-planning.md +177 -0
  302. icdev/data/docs/features/phase-43-cross-language-translation.md +225 -0
  303. icdev/data/docs/features/phase-44-innovation-adaptation.md +227 -0
  304. icdev/data/docs/features/phase-45-owasp-agentic-security.md +239 -0
  305. icdev/data/docs/features/phase-46-observability-traceability-xai.md +240 -0
  306. icdev/data/docs/features/phase-47-unified-mcp-gateway.md +257 -0
  307. icdev/data/docs/features/phase-48-ai-transparency.md +203 -0
  308. icdev/data/docs/features/phase-49-ai-accountability.md +243 -0
  309. icdev/data/docs/features/phase-50-ai-governance-intake-chat.md +195 -0
  310. icdev/data/docs/features/phase-51-unified-chat-dashboard.md +240 -0
  311. icdev/data/docs/features/phase-52-code-intelligence.md +244 -0
  312. icdev/data/docs/features/phase-53-fedramp-20x-owasp-asi.md +359 -0
  313. icdev/data/docs/features/phase-54-slsa-swft-orchestration.md +379 -0
  314. icdev/data/docs/features/phase-55-a2a-v03-mcp-oauth.md +322 -0
  315. icdev/data/docs/features/phase-56-evidence-lineage.md +352 -0
  316. icdev/data/docs/features/phase-57-eu-ai-act-iron-bank.md +319 -0
  317. icdev/data/docs/features/phase-58-creative-engine.md +370 -0
  318. icdev/data/docs/features/phase-59-govcon-intelligence.md +535 -0
  319. icdev/data/docs/features/phase-60-cpmp.md +528 -0
  320. icdev/data/docs/features/phase-61-orchestration-improvements.md +534 -0
  321. icdev/data/docs/operations/dashboard-guide.md +354 -0
  322. icdev/data/docs/operations/deployment-guide.md +556 -0
  323. icdev/data/docs/operations/saas-admin-guide.md +439 -0
  324. icdev/data/docs/operations/security-operations-guide.md +733 -0
  325. icdev/data/docs/runbooks/backup-restore.md +412 -0
  326. icdev/data/docs/runbooks/troubleshooting.md +499 -0
  327. icdev/data/features/__init__.py +1 -0
  328. icdev/data/features/cicd_integration.feature +41 -0
  329. icdev/data/features/compliance_gates.feature +46 -0
  330. icdev/data/features/dashboard.feature +72 -0
  331. icdev/data/features/environment.py +25 -0
  332. icdev/data/features/project_management.feature +32 -0
  333. icdev/data/features/requirements_intake.feature +42 -0
  334. icdev/data/features/saas_platform.feature +53 -0
  335. icdev/data/features/security_scanning.feature +36 -0
  336. icdev/data/features/steps/__init__.py +1 -0
  337. icdev/data/features/steps/cicd_steps.py +465 -0
  338. icdev/data/features/steps/compliance_steps.py +308 -0
  339. icdev/data/features/steps/dashboard_steps.py +88 -0
  340. icdev/data/features/steps/project_steps.py +126 -0
  341. icdev/data/features/steps/requirements_intake_steps.py +689 -0
  342. icdev/data/features/steps/saas_platform_steps.py +572 -0
  343. icdev/data/features/steps/security_steps.py +236 -0
  344. icdev/data/features/steps/testing_steps.py +226 -0
  345. icdev/data/features/testing_pipeline.feature +42 -0
  346. icdev/data/goals/__init__.py +1 -0
  347. icdev/data/goals/agent_management.md +144 -0
  348. icdev/data/goals/agentic_generation.md +345 -0
  349. icdev/data/goals/agentic_threat_model.md +309 -0
  350. icdev/data/goals/ai_accountability.md +90 -0
  351. icdev/data/goals/ai_governance_intake.md +132 -0
  352. icdev/data/goals/ai_transparency.md +76 -0
  353. icdev/data/goals/atlas_integration.md +405 -0
  354. icdev/data/goals/ato_acceleration.md +139 -0
  355. icdev/data/goals/boundary_supply_chain.md +206 -0
  356. icdev/data/goals/build_app.md +544 -0
  357. icdev/data/goals/cicd_integration.md +86 -0
  358. icdev/data/goals/claude_dir_maintenance.md +77 -0
  359. icdev/data/goals/cli_capabilities.md +340 -0
  360. icdev/data/goals/cloud_agnostic.md +312 -0
  361. icdev/data/goals/code_intelligence.md +197 -0
  362. icdev/data/goals/code_review.md +94 -0
  363. icdev/data/goals/compliance_workflow.md +858 -0
  364. icdev/data/goals/continuous_harmonization.md +140 -0
  365. icdev/data/goals/cross_language_translation.md +171 -0
  366. icdev/data/goals/dashboard.md +142 -0
  367. icdev/data/goals/deploy_workflow.md +390 -0
  368. icdev/data/goals/devsecops_workflow.md +408 -0
  369. icdev/data/goals/evolutionary_intelligence.md +305 -0
  370. icdev/data/goals/external_integration.md +113 -0
  371. icdev/data/goals/framework_planning.md +63 -0
  372. icdev/data/goals/init_project.md +235 -0
  373. icdev/data/goals/innovation_engine.md +199 -0
  374. icdev/data/goals/integration_testing.md +189 -0
  375. icdev/data/goals/maintenance_audit.md +196 -0
  376. icdev/data/goals/manifest.md +56 -0
  377. icdev/data/goals/mbse_integration.md +504 -0
  378. icdev/data/goals/modernization_workflow.md +618 -0
  379. icdev/data/goals/monitoring.md +126 -0
  380. icdev/data/goals/mosa_workflow.md +463 -0
  381. icdev/data/goals/multi_agent_orchestration.md +68 -0
  382. icdev/data/goals/nlq_compliance.md +63 -0
  383. icdev/data/goals/observability.md +64 -0
  384. icdev/data/goals/observability_traceability_xai.md +154 -0
  385. icdev/data/goals/owasp_agentic_security.md +395 -0
  386. icdev/data/goals/parallel_cicd.md +61 -0
  387. icdev/data/goals/requirements_intake.md +213 -0
  388. icdev/data/goals/sbd_ivv_workflow.md +195 -0
  389. icdev/data/goals/security_categorization.md +133 -0
  390. icdev/data/goals/security_scan.md +381 -0
  391. icdev/data/goals/self_healing.md +120 -0
  392. icdev/data/goals/simulation_engine.md +111 -0
  393. icdev/data/goals/tdd_workflow.md +403 -0
  394. icdev/data/goals/zero_trust_architecture.md +403 -0
  395. icdev/data/hardprompts/__init__.py +1 -0
  396. icdev/data/hardprompts/agent/__init__.py +1 -0
  397. icdev/data/hardprompts/agent/agentic_architect.md +100 -0
  398. icdev/data/hardprompts/agent/debate_prompt.md +32 -0
  399. icdev/data/hardprompts/agent/fitness_evaluation.md +48 -0
  400. icdev/data/hardprompts/agent/governance_review.md +214 -0
  401. icdev/data/hardprompts/agent/reviewer_prompt.md +34 -0
  402. icdev/data/hardprompts/agent/skill_design.md +172 -0
  403. icdev/data/hardprompts/agent/task_decomposition.md +275 -0
  404. icdev/data/hardprompts/agent/veto_check_prompt.md +33 -0
  405. icdev/data/hardprompts/architect/__init__.py +1 -0
  406. icdev/data/hardprompts/architect/api_design.md +283 -0
  407. icdev/data/hardprompts/architect/data_model.md +277 -0
  408. icdev/data/hardprompts/architect/system_design.md +180 -0
  409. icdev/data/hardprompts/builder/__init__.py +1 -0
  410. icdev/data/hardprompts/builder/code_generation.md +59 -0
  411. icdev/data/hardprompts/builder/refactor.md +58 -0
  412. icdev/data/hardprompts/builder/scaffold_project.md +69 -0
  413. icdev/data/hardprompts/builder/test_generation.md +87 -0
  414. icdev/data/hardprompts/ci/__init__.py +1 -0
  415. icdev/data/hardprompts/ci/worktree_setup.md +35 -0
  416. icdev/data/hardprompts/compliance/__init__.py +1 -0
  417. icdev/data/hardprompts/compliance/cmmc_assessment.md +63 -0
  418. icdev/data/hardprompts/compliance/cssp_assessment.md +75 -0
  419. icdev/data/hardprompts/compliance/cui_marking.md +86 -0
  420. icdev/data/hardprompts/compliance/fedramp_assessment.md +55 -0
  421. icdev/data/hardprompts/compliance/ivv_assessment.md +96 -0
  422. icdev/data/hardprompts/compliance/poam_generation.md +57 -0
  423. icdev/data/hardprompts/compliance/sbd_assessment.md +101 -0
  424. icdev/data/hardprompts/compliance/security_categorization.md +74 -0
  425. icdev/data/hardprompts/compliance/ssp_generation.md +56 -0
  426. icdev/data/hardprompts/compliance/stig_evaluation.md +63 -0
  427. icdev/data/hardprompts/dashboard/__init__.py +1 -0
  428. icdev/data/hardprompts/dashboard/nlq_system_prompt.md +26 -0
  429. icdev/data/hardprompts/infra/__init__.py +1 -0
  430. icdev/data/hardprompts/infra/k8s_manifests.md +118 -0
  431. icdev/data/hardprompts/infra/pipeline_generation.md +160 -0
  432. icdev/data/hardprompts/infra/terraform_generation.md +92 -0
  433. icdev/data/hardprompts/integration/__init__.py +1 -0
  434. icdev/data/hardprompts/integration/approval_review.md +17 -0
  435. icdev/data/hardprompts/integration/jira_mapping.md +25 -0
  436. icdev/data/hardprompts/integration/servicenow_mapping.md +14 -0
  437. icdev/data/hardprompts/knowledge/__init__.py +1 -0
  438. icdev/data/hardprompts/knowledge/pattern_detection.md +73 -0
  439. icdev/data/hardprompts/knowledge/recommendation_engine.md +90 -0
  440. icdev/data/hardprompts/knowledge/root_cause_analysis.md +91 -0
  441. icdev/data/hardprompts/maintenance/__init__.py +1 -0
  442. icdev/data/hardprompts/maintenance/maintenance_assessment.md +82 -0
  443. icdev/data/hardprompts/mbse/__init__.py +1 -0
  444. icdev/data/hardprompts/mbse/digital_thread.md +67 -0
  445. icdev/data/hardprompts/mbse/model_import.md +62 -0
  446. icdev/data/hardprompts/mbse/model_to_code.md +65 -0
  447. icdev/data/hardprompts/modernization/__init__.py +1 -0
  448. icdev/data/hardprompts/modernization/legacy_analysis.md +93 -0
  449. icdev/data/hardprompts/modernization/migration_planning.md +150 -0
  450. icdev/data/hardprompts/modernization/seven_r_assessment.md +107 -0
  451. icdev/data/hardprompts/requirements/__init__.py +1 -0
  452. icdev/data/hardprompts/requirements/bdd_generation.md +35 -0
  453. icdev/data/hardprompts/requirements/clarification_prioritization.md +29 -0
  454. icdev/data/hardprompts/requirements/decomposition.md +60 -0
  455. icdev/data/hardprompts/requirements/document_extraction.md +45 -0
  456. icdev/data/hardprompts/requirements/gap_detection.md +70 -0
  457. icdev/data/hardprompts/requirements/intake_conversation.md +101 -0
  458. icdev/data/hardprompts/requirements/readiness_assessment.md +39 -0
  459. icdev/data/hardprompts/requirements/spec_quality.md +33 -0
  460. icdev/data/hardprompts/requirements/traceability_analysis.md +23 -0
  461. icdev/data/hardprompts/security/__init__.py +1 -0
  462. icdev/data/hardprompts/security/endpoint_security.md +78 -0
  463. icdev/data/hardprompts/security/threat_model.md +70 -0
  464. icdev/data/hardprompts/security/vulnerability_assessment.md +81 -0
  465. icdev/data/hardprompts/simulation/__init__.py +1 -0
  466. icdev/data/hardprompts/simulation/architecture_impact.md +27 -0
  467. icdev/data/hardprompts/simulation/coa_alternative.md +27 -0
  468. icdev/data/hardprompts/simulation/coa_generation.md +25 -0
  469. icdev/data/hardprompts/simulation/compliance_impact.md +28 -0
  470. icdev/data/hardprompts/simulation/cost_estimation.md +33 -0
  471. icdev/data/hardprompts/simulation/risk_assessment.md +28 -0
  472. icdev/data/hardprompts/translation/code_translation.md +68 -0
  473. icdev/data/hardprompts/translation/dependency_suggestion.md +44 -0
  474. icdev/data/hardprompts/translation/test_translation.md +64 -0
  475. icdev/data/hardprompts/translation/translation_repair.md +59 -0
  476. icdev/py.typed +0 -0
  477. icdev/tools/__init__.py +1 -0
  478. icdev/tools/_gen_formatter.py +12 -0
  479. icdev/tools/a2a/__init__.py +1 -0
  480. icdev/tools/a2a/agent_cards/architect.json +43 -0
  481. icdev/tools/a2a/agent_cards/builder.json +50 -0
  482. icdev/tools/a2a/agent_cards/compliance.json +57 -0
  483. icdev/tools/a2a/agent_cards/devsecops.json +71 -0
  484. icdev/tools/a2a/agent_cards/infra.json +57 -0
  485. icdev/tools/a2a/agent_cards/integration.json +57 -0
  486. icdev/tools/a2a/agent_cards/knowledge.json +43 -0
  487. icdev/tools/a2a/agent_cards/mbse.json +57 -0
  488. icdev/tools/a2a/agent_cards/modernization.json +50 -0
  489. icdev/tools/a2a/agent_cards/monitor.json +43 -0
  490. icdev/tools/a2a/agent_cards/orchestrator.json +36 -0
  491. icdev/tools/a2a/agent_cards/requirements_analyst.json +64 -0
  492. icdev/tools/a2a/agent_cards/security.json +50 -0
  493. icdev/tools/a2a/agent_cards/simulation.json +57 -0
  494. icdev/tools/a2a/agent_cards/supply_chain.json +50 -0
  495. icdev/tools/a2a/agent_client.py +349 -0
  496. icdev/tools/a2a/agent_registry.py +412 -0
  497. icdev/tools/a2a/agent_server.py +579 -0
  498. icdev/tools/a2a/task.py +200 -0
  499. icdev/tools/agent/__init__.py +2 -0
  500. icdev/tools/agent/a2a_agent_card_generator.py +285 -0
  501. icdev/tools/agent/a2a_discovery_server.py +250 -0
  502. icdev/tools/agent/agent_executor.py +529 -0
  503. icdev/tools/agent/agent_memory.py +557 -0
  504. icdev/tools/agent/agent_models.py +51 -0
  505. icdev/tools/agent/atlas_critique.py +908 -0
  506. icdev/tools/agent/authority.py +443 -0
  507. icdev/tools/agent/bedrock_client.py +1075 -0
  508. icdev/tools/agent/collaboration.py +871 -0
  509. icdev/tools/agent/dispatcher_mode.py +665 -0
  510. icdev/tools/agent/mailbox.py +575 -0
  511. icdev/tools/agent/prompt_chain_executor.py +1064 -0
  512. icdev/tools/agent/session_purpose.py +350 -0
  513. icdev/tools/agent/skill_router.py +638 -0
  514. icdev/tools/agent/skill_selector.py +486 -0
  515. icdev/tools/agent/team_orchestrator.py +1108 -0
  516. icdev/tools/agent/token_tracker.py +290 -0
  517. icdev/tools/analysis/__init__.py +1 -0
  518. icdev/tools/analysis/code_analyzer.py +780 -0
  519. icdev/tools/analysis/runtime_feedback.py +389 -0
  520. icdev/tools/audit/__init__.py +1 -0
  521. icdev/tools/audit/audit_logger.py +196 -0
  522. icdev/tools/audit/audit_query.py +157 -0
  523. icdev/tools/audit/decision_recorder.py +72 -0
  524. icdev/tools/builder/__init__.py +1 -0
  525. icdev/tools/builder/agentic_fitness.py +534 -0
  526. icdev/tools/builder/agentic_test_templates/test_a2a_callback.py +117 -0
  527. icdev/tools/builder/agentic_test_templates/test_a2a_lifecycle.feature +52 -0
  528. icdev/tools/builder/agentic_test_templates/test_agent_card.feature +37 -0
  529. icdev/tools/builder/agentic_test_templates/test_agent_health.py +128 -0
  530. icdev/tools/builder/agentic_test_templates/test_memory_system.feature +50 -0
  531. icdev/tools/builder/agentic_test_templates/test_skill_execution.feature +40 -0
  532. icdev/tools/builder/app_blueprint.py +1583 -0
  533. icdev/tools/builder/child_app_generator.py +2852 -0
  534. icdev/tools/builder/claude_md_generator.py +1734 -0
  535. icdev/tools/builder/code_generator.py +3703 -0
  536. icdev/tools/builder/db_init_generator.py +1709 -0
  537. icdev/tools/builder/dev_profile_manager.py +954 -0
  538. icdev/tools/builder/formatter.py +768 -0
  539. icdev/tools/builder/goal_adapter.py +592 -0
  540. icdev/tools/builder/gotcha_validator.py +812 -0
  541. icdev/tools/builder/language_support.py +441 -0
  542. icdev/tools/builder/linter.py +976 -0
  543. icdev/tools/builder/profile_detector.py +657 -0
  544. icdev/tools/builder/profile_md_generator.py +723 -0
  545. icdev/tools/builder/scaffolder.py +1590 -0
  546. icdev/tools/builder/scaffolder_extended.py +1771 -0
  547. icdev/tools/builder/test_writer.py +950 -0
  548. icdev/tools/ci/__init__.py +2 -0
  549. icdev/tools/ci/connectors/__init__.py +2 -0
  550. icdev/tools/ci/connectors/base_connector.py +80 -0
  551. icdev/tools/ci/connectors/connector_registry.py +188 -0
  552. icdev/tools/ci/connectors/mattermost_connector.py +159 -0
  553. icdev/tools/ci/connectors/slack_connector.py +197 -0
  554. icdev/tools/ci/core/__init__.py +2 -0
  555. icdev/tools/ci/core/air_gap_detector.py +115 -0
  556. icdev/tools/ci/core/comment_handler.py +192 -0
  557. icdev/tools/ci/core/conversation_manager.py +479 -0
  558. icdev/tools/ci/core/event_envelope.py +500 -0
  559. icdev/tools/ci/core/event_router.py +443 -0
  560. icdev/tools/ci/core/failure_parser.py +397 -0
  561. icdev/tools/ci/core/recovery_engine.py +527 -0
  562. icdev/tools/ci/modules/__init__.py +2 -0
  563. icdev/tools/ci/modules/agent.py +271 -0
  564. icdev/tools/ci/modules/git_ops.py +175 -0
  565. icdev/tools/ci/modules/state.py +117 -0
  566. icdev/tools/ci/modules/vcs.py +303 -0
  567. icdev/tools/ci/modules/workflow_ops.py +295 -0
  568. icdev/tools/ci/modules/worktree.py +340 -0
  569. icdev/tools/ci/pipeline_config_generator.py +558 -0
  570. icdev/tools/ci/triggers/__init__.py +2 -0
  571. icdev/tools/ci/triggers/gitlab_task_monitor.py +330 -0
  572. icdev/tools/ci/triggers/poll_trigger.py +237 -0
  573. icdev/tools/ci/triggers/webhook_server.py +356 -0
  574. icdev/tools/ci/workflows/__init__.py +2 -0
  575. icdev/tools/ci/workflows/icdev_build.py +140 -0
  576. icdev/tools/ci/workflows/icdev_comply.py +284 -0
  577. icdev/tools/ci/workflows/icdev_document.py +152 -0
  578. icdev/tools/ci/workflows/icdev_e2e.py +188 -0
  579. icdev/tools/ci/workflows/icdev_patch.py +186 -0
  580. icdev/tools/ci/workflows/icdev_plan.py +202 -0
  581. icdev/tools/ci/workflows/icdev_plan_build.py +41 -0
  582. icdev/tools/ci/workflows/icdev_plan_build_test.py +46 -0
  583. icdev/tools/ci/workflows/icdev_plan_build_test_review.py +47 -0
  584. icdev/tools/ci/workflows/icdev_review.py +126 -0
  585. icdev/tools/ci/workflows/icdev_sdlc.py +261 -0
  586. icdev/tools/ci/workflows/icdev_test.py +240 -0
  587. icdev/tools/cli/__init__.py +1 -0
  588. icdev/tools/cli/output_formatter.py +756 -0
  589. icdev/tools/cli_formatter.py +42 -0
  590. icdev/tools/cloud/__init__.py +11 -0
  591. icdev/tools/cloud/cloud_mode_manager.py +364 -0
  592. icdev/tools/cloud/csp_changelog.py +383 -0
  593. icdev/tools/cloud/csp_health_checker.py +268 -0
  594. icdev/tools/cloud/csp_monitor.py +951 -0
  595. icdev/tools/cloud/iam_provider.py +593 -0
  596. icdev/tools/cloud/kms_provider.py +346 -0
  597. icdev/tools/cloud/monitoring_provider.py +628 -0
  598. icdev/tools/cloud/provider_factory.py +376 -0
  599. icdev/tools/cloud/region_validator.py +345 -0
  600. icdev/tools/cloud/registry_provider.py +563 -0
  601. icdev/tools/cloud/secrets_provider.py +486 -0
  602. icdev/tools/cloud/storage_provider.py +446 -0
  603. icdev/tools/compat/__init__.py +21 -0
  604. icdev/tools/compat/cli_harmonizer.py +251 -0
  605. icdev/tools/compat/datetime_utils.py +18 -0
  606. icdev/tools/compat/db_utils.py +160 -0
  607. icdev/tools/compat/platform_utils.py +123 -0
  608. icdev/tools/compliance/__init__.py +1 -0
  609. icdev/tools/compliance/accountability_manager.py +397 -0
  610. icdev/tools/compliance/ai_accountability_audit.py +294 -0
  611. icdev/tools/compliance/ai_impact_assessor.py +273 -0
  612. icdev/tools/compliance/ai_incident_response.py +301 -0
  613. icdev/tools/compliance/ai_inventory_manager.py +239 -0
  614. icdev/tools/compliance/ai_reassessment_scheduler.py +256 -0
  615. icdev/tools/compliance/ai_transparency_audit.py +248 -0
  616. icdev/tools/compliance/atlas_assessor.py +278 -0
  617. icdev/tools/compliance/atlas_report_generator.py +1211 -0
  618. icdev/tools/compliance/base_assessor.py +597 -0
  619. icdev/tools/compliance/cato_monitor.py +1385 -0
  620. icdev/tools/compliance/cato_scheduler.py +699 -0
  621. icdev/tools/compliance/cjis_assessor.py +76 -0
  622. icdev/tools/compliance/classification_manager.py +1353 -0
  623. icdev/tools/compliance/cmmc_assessor.py +1491 -0
  624. icdev/tools/compliance/cmmc_report_generator.py +1100 -0
  625. icdev/tools/compliance/compliance_detector.py +463 -0
  626. icdev/tools/compliance/compliance_exporter.py +427 -0
  627. icdev/tools/compliance/compliance_status.py +825 -0
  628. icdev/tools/compliance/control_mapper.py +505 -0
  629. icdev/tools/compliance/crosswalk_engine.py +1203 -0
  630. icdev/tools/compliance/cssp_assessor.py +1045 -0
  631. icdev/tools/compliance/cssp_evidence_collector.py +729 -0
  632. icdev/tools/compliance/cssp_report_generator.py +1116 -0
  633. icdev/tools/compliance/cui_marker.py +388 -0
  634. icdev/tools/compliance/diagram_validator.py +600 -0
  635. icdev/tools/compliance/emass/__init__.py +2 -0
  636. icdev/tools/compliance/emass/emass_client.py +840 -0
  637. icdev/tools/compliance/emass/emass_export.py +777 -0
  638. icdev/tools/compliance/emass/emass_sync.py +826 -0
  639. icdev/tools/compliance/eu_ai_act_classifier.py +194 -0
  640. icdev/tools/compliance/evidence_collector.py +468 -0
  641. icdev/tools/compliance/fairness_assessor.py +316 -0
  642. icdev/tools/compliance/fedramp_assessor.py +1808 -0
  643. icdev/tools/compliance/fedramp_authorization_packager.py +137 -0
  644. icdev/tools/compliance/fedramp_ksi_generator.py +355 -0
  645. icdev/tools/compliance/fedramp_report_generator.py +1128 -0
  646. icdev/tools/compliance/fips199_categorizer.py +881 -0
  647. icdev/tools/compliance/fips200_validator.py +315 -0
  648. icdev/tools/compliance/gao_ai_assessor.py +231 -0
  649. icdev/tools/compliance/gao_evidence_builder.py +308 -0
  650. icdev/tools/compliance/hipaa_assessor.py +78 -0
  651. icdev/tools/compliance/hitrust_assessor.py +49 -0
  652. icdev/tools/compliance/incident_response_plan.py +718 -0
  653. icdev/tools/compliance/iso27001_assessor.py +92 -0
  654. icdev/tools/compliance/iso42001_assessor.py +114 -0
  655. icdev/tools/compliance/ivv_assessor.py +2327 -0
  656. icdev/tools/compliance/ivv_report_generator.py +1662 -0
  657. icdev/tools/compliance/model_card_generator.py +297 -0
  658. icdev/tools/compliance/mosa_assessor.py +117 -0
  659. icdev/tools/compliance/multi_regime_assessor.py +451 -0
  660. icdev/tools/compliance/narrative_generator.py +1013 -0
  661. icdev/tools/compliance/nist_800_207_assessor.py +191 -0
  662. icdev/tools/compliance/nist_ai_600_1_assessor.py +188 -0
  663. icdev/tools/compliance/nist_ai_rmf_assessor.py +110 -0
  664. icdev/tools/compliance/nist_lookup.py +245 -0
  665. icdev/tools/compliance/omb_m25_21_assessor.py +228 -0
  666. icdev/tools/compliance/omb_m26_04_assessor.py +188 -0
  667. icdev/tools/compliance/oscal_catalog_adapter.py +395 -0
  668. icdev/tools/compliance/oscal_generator.py +2170 -0
  669. icdev/tools/compliance/oscal_tools.py +1182 -0
  670. icdev/tools/compliance/owasp_agentic_assessor.py +226 -0
  671. icdev/tools/compliance/owasp_asi_assessor.py +200 -0
  672. icdev/tools/compliance/owasp_llm_assessor.py +244 -0
  673. icdev/tools/compliance/pci_dss_assessor.py +80 -0
  674. icdev/tools/compliance/pi_compliance_tracker.py +1461 -0
  675. icdev/tools/compliance/poam_generator.py +405 -0
  676. icdev/tools/compliance/resolve_marking.py +283 -0
  677. icdev/tools/compliance/sbd_assessor.py +2068 -0
  678. icdev/tools/compliance/sbd_report_generator.py +1236 -0
  679. icdev/tools/compliance/sbom_generator.py +1008 -0
  680. icdev/tools/compliance/siem_config_generator.py +674 -0
  681. icdev/tools/compliance/slsa_attestation_generator.py +490 -0
  682. icdev/tools/compliance/soc2_assessor.py +77 -0
  683. icdev/tools/compliance/ssp_generator.py +573 -0
  684. icdev/tools/compliance/stig_checker.py +727 -0
  685. icdev/tools/compliance/swft_evidence_bundler.py +337 -0
  686. icdev/tools/compliance/system_card_generator.py +309 -0
  687. icdev/tools/compliance/traceability_matrix.py +1281 -0
  688. icdev/tools/compliance/universal_classification_manager.py +1172 -0
  689. icdev/tools/compliance/xacta/__init__.py +2 -0
  690. icdev/tools/compliance/xacta/xacta_client.py +449 -0
  691. icdev/tools/compliance/xacta/xacta_export.py +557 -0
  692. icdev/tools/compliance/xacta/xacta_sync.py +333 -0
  693. icdev/tools/compliance/xai_assessor.py +231 -0
  694. icdev/tools/dashboard/__init__.py +1 -0
  695. icdev/tools/dashboard/api/__init__.py +1 -0
  696. icdev/tools/dashboard/api/_pipeline_state.py +17 -0
  697. icdev/tools/dashboard/api/activity.py +206 -0
  698. icdev/tools/dashboard/api/admin.py +176 -0
  699. icdev/tools/dashboard/api/agents.py +53 -0
  700. icdev/tools/dashboard/api/ai_accountability.py +163 -0
  701. icdev/tools/dashboard/api/ai_transparency.py +198 -0
  702. icdev/tools/dashboard/api/audit.py +58 -0
  703. icdev/tools/dashboard/api/batch.py +666 -0
  704. icdev/tools/dashboard/api/chat.py +241 -0
  705. icdev/tools/dashboard/api/cicd.py +219 -0
  706. icdev/tools/dashboard/api/code_quality.py +223 -0
  707. icdev/tools/dashboard/api/compliance.py +171 -0
  708. icdev/tools/dashboard/api/cpmp.py +915 -0
  709. icdev/tools/dashboard/api/diagrams.py +65 -0
  710. icdev/tools/dashboard/api/events.py +250 -0
  711. icdev/tools/dashboard/api/evidence.py +99 -0
  712. icdev/tools/dashboard/api/fedramp_20x.py +77 -0
  713. icdev/tools/dashboard/api/govcon.py +1095 -0
  714. icdev/tools/dashboard/api/intake.py +1171 -0
  715. icdev/tools/dashboard/api/lineage.py +163 -0
  716. icdev/tools/dashboard/api/metrics.py +155 -0
  717. icdev/tools/dashboard/api/nlq.py +72 -0
  718. icdev/tools/dashboard/api/orchestration.py +472 -0
  719. icdev/tools/dashboard/api/oscal.py +183 -0
  720. icdev/tools/dashboard/api/prod_audit.py +183 -0
  721. icdev/tools/dashboard/api/projects.py +191 -0
  722. icdev/tools/dashboard/api/proposals.py +1084 -0
  723. icdev/tools/dashboard/api/traces.py +363 -0
  724. icdev/tools/dashboard/api/usage.py +234 -0
  725. icdev/tools/dashboard/app.py +1986 -0
  726. icdev/tools/dashboard/auth.py +500 -0
  727. icdev/tools/dashboard/byok.py +245 -0
  728. icdev/tools/dashboard/chat_manager.py +675 -0
  729. icdev/tools/dashboard/config.py +116 -0
  730. icdev/tools/dashboard/diagram_definitions.py +642 -0
  731. icdev/tools/dashboard/nlq_processor.py +323 -0
  732. icdev/tools/dashboard/phase_loader.py +136 -0
  733. icdev/tools/dashboard/sse_manager.py +89 -0
  734. icdev/tools/dashboard/state_tracker.py +267 -0
  735. icdev/tools/dashboard/static/css/style.css +706 -0
  736. icdev/tools/dashboard/static/css/ux.css +2047 -0
  737. icdev/tools/dashboard/static/js/activity.js +322 -0
  738. icdev/tools/dashboard/static/js/api.js +161 -0
  739. icdev/tools/dashboard/static/js/batch.js +814 -0
  740. icdev/tools/dashboard/static/js/charts.js +618 -0
  741. icdev/tools/dashboard/static/js/chat.js +1514 -0
  742. icdev/tools/dashboard/static/js/kanban.js +113 -0
  743. icdev/tools/dashboard/static/js/live.js +569 -0
  744. icdev/tools/dashboard/static/js/mermaid-icdev.js +332 -0
  745. icdev/tools/dashboard/static/js/proposals.js +588 -0
  746. icdev/tools/dashboard/static/js/shortcuts.js +544 -0
  747. icdev/tools/dashboard/static/js/tables.js +652 -0
  748. icdev/tools/dashboard/static/js/tour.js +524 -0
  749. icdev/tools/dashboard/static/js/ux.js +942 -0
  750. icdev/tools/dashboard/templates/404.html +10 -0
  751. icdev/tools/dashboard/templates/activity.html +80 -0
  752. icdev/tools/dashboard/templates/admin/users.html +144 -0
  753. icdev/tools/dashboard/templates/ai_accountability.html +235 -0
  754. icdev/tools/dashboard/templates/ai_transparency.html +263 -0
  755. icdev/tools/dashboard/templates/base.html +104 -0
  756. icdev/tools/dashboard/templates/batch.html +23 -0
  757. icdev/tools/dashboard/templates/chat.html +332 -0
  758. icdev/tools/dashboard/templates/children.html +149 -0
  759. icdev/tools/dashboard/templates/cicd.html +253 -0
  760. icdev/tools/dashboard/templates/code_quality.html +214 -0
  761. icdev/tools/dashboard/templates/cpmp/cor_detail.html +220 -0
  762. icdev/tools/dashboard/templates/cpmp/cor_portal.html +91 -0
  763. icdev/tools/dashboard/templates/cpmp/deliverable_detail.html +197 -0
  764. icdev/tools/dashboard/templates/cpmp/detail.html +578 -0
  765. icdev/tools/dashboard/templates/cpmp/portfolio.html +202 -0
  766. icdev/tools/dashboard/templates/dev_profiles.html +304 -0
  767. icdev/tools/dashboard/templates/diagrams.html +224 -0
  768. icdev/tools/dashboard/templates/events/timeline.html +232 -0
  769. icdev/tools/dashboard/templates/evidence.html +134 -0
  770. icdev/tools/dashboard/templates/fedramp_20x.html +207 -0
  771. icdev/tools/dashboard/templates/gateway.html +244 -0
  772. icdev/tools/dashboard/templates/govcon/capabilities.html +135 -0
  773. icdev/tools/dashboard/templates/govcon/pipeline.html +214 -0
  774. icdev/tools/dashboard/templates/govcon/requirements.html +120 -0
  775. icdev/tools/dashboard/templates/index.html +254 -0
  776. icdev/tools/dashboard/templates/lineage.html +141 -0
  777. icdev/tools/dashboard/templates/login.html +51 -0
  778. icdev/tools/dashboard/templates/monitoring/overview.html +193 -0
  779. icdev/tools/dashboard/templates/orchestration/dashboard.html +545 -0
  780. icdev/tools/dashboard/templates/oscal.html +263 -0
  781. icdev/tools/dashboard/templates/phases.html +150 -0
  782. icdev/tools/dashboard/templates/prod_audit.html +280 -0
  783. icdev/tools/dashboard/templates/profile.html +183 -0
  784. icdev/tools/dashboard/templates/projects/detail.html +583 -0
  785. icdev/tools/dashboard/templates/projects/list.html +47 -0
  786. icdev/tools/dashboard/templates/proposals/detail.html +1253 -0
  787. icdev/tools/dashboard/templates/proposals/list.html +179 -0
  788. icdev/tools/dashboard/templates/proposals/section_detail.html +193 -0
  789. icdev/tools/dashboard/templates/provenance.html +181 -0
  790. icdev/tools/dashboard/templates/query/nlq.html +234 -0
  791. icdev/tools/dashboard/templates/quick_paths.html +69 -0
  792. icdev/tools/dashboard/templates/traces.html +155 -0
  793. icdev/tools/dashboard/templates/translation_detail.html +199 -0
  794. icdev/tools/dashboard/templates/translations.html +162 -0
  795. icdev/tools/dashboard/templates/usage.html +225 -0
  796. icdev/tools/dashboard/templates/wizard.html +539 -0
  797. icdev/tools/dashboard/templates/xai.html +208 -0
  798. icdev/tools/dashboard/ux_helpers.py +962 -0
  799. icdev/tools/dashboard/websocket.py +81 -0
  800. icdev/tools/db/__init__.py +1 -0
  801. icdev/tools/db/backup.py +312 -0
  802. icdev/tools/db/backup_manager.py +832 -0
  803. icdev/tools/db/init_icdev_db.py +5900 -0
  804. icdev/tools/db/migrate.py +178 -0
  805. icdev/tools/db/migration_runner.py +549 -0
  806. icdev/tools/db/migrations/001_baseline/meta.json +9 -0
  807. icdev/tools/db/migrations/001_baseline/up.py +68 -0
  808. icdev/tools/db/migrations/002_memory_enhancements/down.sql +8 -0
  809. icdev/tools/db/migrations/002_memory_enhancements/meta.json +9 -0
  810. icdev/tools/db/migrations/002_memory_enhancements/up.py +118 -0
  811. icdev/tools/db/migrations/003_dev_profiles/meta.json +8 -0
  812. icdev/tools/db/migrations/003_dev_profiles/up.py +93 -0
  813. icdev/tools/db/migrations/004_innovation_engine/down.py +19 -0
  814. icdev/tools/db/migrations/004_innovation_engine/up.py +227 -0
  815. icdev/tools/db/migrations/005_phase_37_ai_security/down.py +19 -0
  816. icdev/tools/db/migrations/005_phase_37_ai_security/up.py +258 -0
  817. icdev/tools/db/migrations/006_phase_36_evolution/down.py +21 -0
  818. icdev/tools/db/migrations/006_phase_36_evolution/up.py +323 -0
  819. icdev/tools/db/migrations/007_phase_38_cloud/down.py +14 -0
  820. icdev/tools/db/migrations/007_phase_38_cloud/up.py +110 -0
  821. icdev/tools/db/migrations/008_phase36_37_integration/up.py +55 -0
  822. icdev/tools/db/migrations/__init__.py +2 -0
  823. icdev/tools/devsecops/__init__.py +2 -0
  824. icdev/tools/devsecops/attestation_manager.py +458 -0
  825. icdev/tools/devsecops/network_segmentation_generator.py +614 -0
  826. icdev/tools/devsecops/pdp_config_generator.py +1256 -0
  827. icdev/tools/devsecops/pipeline_security_generator.py +484 -0
  828. icdev/tools/devsecops/policy_generator.py +653 -0
  829. icdev/tools/devsecops/profile_manager.py +388 -0
  830. icdev/tools/devsecops/service_mesh_generator.py +1073 -0
  831. icdev/tools/devsecops/zta_maturity_scorer.py +368 -0
  832. icdev/tools/devsecops/zta_terraform_generator.py +1303 -0
  833. icdev/tools/dx/__init__.py +3 -0
  834. icdev/tools/dx/companion.py +266 -0
  835. icdev/tools/dx/instruction_generator.py +753 -0
  836. icdev/tools/dx/mcp_config_generator.py +282 -0
  837. icdev/tools/dx/skill_translator.py +425 -0
  838. icdev/tools/dx/tool_detector.py +144 -0
  839. icdev/tools/extensions/__init__.py +21 -0
  840. icdev/tools/extensions/builtins/010_ai_governance_chat.py +277 -0
  841. icdev/tools/extensions/builtins/__init__.py +2 -0
  842. icdev/tools/extensions/extension_manager.py +455 -0
  843. icdev/tools/infra/__init__.py +1 -0
  844. icdev/tools/infra/ansible_generator.py +869 -0
  845. icdev/tools/infra/dockerfile_generator.py +361 -0
  846. icdev/tools/infra/infra_status.py +393 -0
  847. icdev/tools/infra/ironbank_metadata_generator.py +411 -0
  848. icdev/tools/infra/k8s_generator.py +1002 -0
  849. icdev/tools/infra/pipeline_generator.py +832 -0
  850. icdev/tools/infra/rollback.py +400 -0
  851. icdev/tools/infra/terraform_generator.py +1142 -0
  852. icdev/tools/infra/terraform_generator_azure.py +1254 -0
  853. icdev/tools/infra/terraform_generator_gcp.py +953 -0
  854. icdev/tools/infra/terraform_generator_ibm.py +360 -0
  855. icdev/tools/infra/terraform_generator_oci.py +919 -0
  856. icdev/tools/infra/terraform_generator_onprem.py +319 -0
  857. icdev/tools/innovation/__init__.py +8 -0
  858. icdev/tools/innovation/competitive_intel.py +492 -0
  859. icdev/tools/innovation/innovation_manager.py +681 -0
  860. icdev/tools/innovation/introspective_analyzer.py +774 -0
  861. icdev/tools/innovation/register_external_patterns.py +440 -0
  862. icdev/tools/innovation/signal_ranker.py +1038 -0
  863. icdev/tools/innovation/solution_generator.py +697 -0
  864. icdev/tools/innovation/standards_monitor.py +466 -0
  865. icdev/tools/innovation/trend_detector.py +1046 -0
  866. icdev/tools/innovation/triage_engine.py +1149 -0
  867. icdev/tools/innovation/web_scanner.py +894 -0
  868. icdev/tools/installer/__init__.py +1 -0
  869. icdev/tools/installer/compliance_configurator.py +637 -0
  870. icdev/tools/installer/installer.py +1711 -0
  871. icdev/tools/installer/module_registry.py +805 -0
  872. icdev/tools/installer/platform_setup.py +961 -0
  873. icdev/tools/integration/__init__.py +2 -0
  874. icdev/tools/integration/approval_manager.py +561 -0
  875. icdev/tools/integration/doors_exporter.py +627 -0
  876. icdev/tools/integration/gitlab_connector.py +784 -0
  877. icdev/tools/integration/jira_connector.py +774 -0
  878. icdev/tools/integration/servicenow_connector.py +693 -0
  879. icdev/tools/knowledge/__init__.py +1 -0
  880. icdev/tools/knowledge/knowledge_ingest.py +293 -0
  881. icdev/tools/knowledge/pattern_detector.py +693 -0
  882. icdev/tools/knowledge/recommendation_engine.py +461 -0
  883. icdev/tools/knowledge/self_heal_analyzer.py +504 -0
  884. icdev/tools/llm/__init__.py +72 -0
  885. icdev/tools/llm/anthropic_provider.py +170 -0
  886. icdev/tools/llm/azure_openai_provider.py +338 -0
  887. icdev/tools/llm/bedrock_provider.py +315 -0
  888. icdev/tools/llm/embedding_provider.py +438 -0
  889. icdev/tools/llm/gemini_provider.py +381 -0
  890. icdev/tools/llm/ibm_watsonx_provider.py +232 -0
  891. icdev/tools/llm/oci_genai_provider.py +462 -0
  892. icdev/tools/llm/ollama_provider.py +340 -0
  893. icdev/tools/llm/openai_provider.py +225 -0
  894. icdev/tools/llm/provider.py +355 -0
  895. icdev/tools/llm/provider_sdk.py +175 -0
  896. icdev/tools/llm/router.py +780 -0
  897. icdev/tools/llm/vertex_ai_provider.py +374 -0
  898. icdev/tools/maintenance/__init__.py +2 -0
  899. icdev/tools/maintenance/dependency_scanner.py +1030 -0
  900. icdev/tools/maintenance/maintenance_auditor.py +815 -0
  901. icdev/tools/maintenance/remediation_engine.py +966 -0
  902. icdev/tools/maintenance/vulnerability_checker.py +987 -0
  903. icdev/tools/mbse/__init__.py +3 -0
  904. icdev/tools/mbse/des_assessor.py +1186 -0
  905. icdev/tools/mbse/des_report_generator.py +800 -0
  906. icdev/tools/mbse/diagram_extractor.py +811 -0
  907. icdev/tools/mbse/digital_thread.py +1665 -0
  908. icdev/tools/mbse/model_code_generator.py +1122 -0
  909. icdev/tools/mbse/model_control_mapper.py +420 -0
  910. icdev/tools/mbse/pi_model_tracker.py +1093 -0
  911. icdev/tools/mbse/reqif_parser.py +1483 -0
  912. icdev/tools/mbse/sync_engine.py +1805 -0
  913. icdev/tools/mbse/xmi_parser.py +1573 -0
  914. icdev/tools/mcp/__init__.py +1 -0
  915. icdev/tools/mcp/base_server.py +535 -0
  916. icdev/tools/mcp/builder_server.py +725 -0
  917. icdev/tools/mcp/compliance_server.py +1407 -0
  918. icdev/tools/mcp/context_indexer.py +199 -0
  919. icdev/tools/mcp/context_server.py +305 -0
  920. icdev/tools/mcp/core_server.py +679 -0
  921. icdev/tools/mcp/devsecops_server.py +432 -0
  922. icdev/tools/mcp/gap_handlers.py +1079 -0
  923. icdev/tools/mcp/gateway_server.py +339 -0
  924. icdev/tools/mcp/generate_registry.py +623 -0
  925. icdev/tools/mcp/infra_server.py +264 -0
  926. icdev/tools/mcp/innovation_server.py +316 -0
  927. icdev/tools/mcp/integration_server.py +527 -0
  928. icdev/tools/mcp/knowledge_server.py +429 -0
  929. icdev/tools/mcp/maintenance_server.py +248 -0
  930. icdev/tools/mcp/marketplace_server.py +499 -0
  931. icdev/tools/mcp/mbse_server.py +398 -0
  932. icdev/tools/mcp/modernization_server.py +496 -0
  933. icdev/tools/mcp/observability_server.py +354 -0
  934. icdev/tools/mcp/requirements_server.py +415 -0
  935. icdev/tools/mcp/simulation_server.py +468 -0
  936. icdev/tools/mcp/standalone/__init__.py +2 -0
  937. icdev/tools/mcp/standalone/builder.py +59 -0
  938. icdev/tools/mcp/standalone/compliance.py +59 -0
  939. icdev/tools/mcp/standalone/core.py +59 -0
  940. icdev/tools/mcp/standalone/knowledge.py +59 -0
  941. icdev/tools/mcp/standalone/maintenance.py +59 -0
  942. icdev/tools/mcp/supply_chain_server.py +476 -0
  943. icdev/tools/mcp/tool_registry.py +2008 -0
  944. icdev/tools/mcp/unified_server.py +158 -0
  945. icdev/tools/memory/__init__.py +2 -0
  946. icdev/tools/memory/auto_capture.py +347 -0
  947. icdev/tools/memory/embed_memory.py +158 -0
  948. icdev/tools/memory/history_compressor.py +334 -0
  949. icdev/tools/memory/hybrid_search.py +236 -0
  950. icdev/tools/memory/maintenance_cron.py +289 -0
  951. icdev/tools/memory/memory_consolidation.py +444 -0
  952. icdev/tools/memory/memory_db.py +133 -0
  953. icdev/tools/memory/memory_read.py +102 -0
  954. icdev/tools/memory/memory_write.py +222 -0
  955. icdev/tools/memory/semantic_search.py +139 -0
  956. icdev/tools/memory/time_decay.py +435 -0
  957. icdev/tools/modernization/__init__.py +3 -0
  958. icdev/tools/modernization/architecture_extractor.py +734 -0
  959. icdev/tools/modernization/compliance_bridge.py +1499 -0
  960. icdev/tools/modernization/db_migration_planner.py +1385 -0
  961. icdev/tools/modernization/doc_generator.py +1428 -0
  962. icdev/tools/modernization/framework_migrator.py +1525 -0
  963. icdev/tools/modernization/legacy_analyzer.py +1948 -0
  964. icdev/tools/modernization/migration_code_generator.py +1639 -0
  965. icdev/tools/modernization/migration_report_generator.py +1653 -0
  966. icdev/tools/modernization/migration_tracker.py +1726 -0
  967. icdev/tools/modernization/monolith_decomposer.py +1508 -0
  968. icdev/tools/modernization/seven_r_assessor.py +1658 -0
  969. icdev/tools/modernization/strangler_fig_manager.py +1705 -0
  970. icdev/tools/modernization/ui_analyzer.py +771 -0
  971. icdev/tools/modernization/version_migrator.py +1392 -0
  972. icdev/tools/monitor/__init__.py +1 -0
  973. icdev/tools/monitor/alert_correlator.py +495 -0
  974. icdev/tools/monitor/auto_resolver.py +612 -0
  975. icdev/tools/monitor/health_checker.py +509 -0
  976. icdev/tools/monitor/heartbeat_daemon.py +792 -0
  977. icdev/tools/monitor/log_analyzer.py +516 -0
  978. icdev/tools/monitor/metric_collector.py +496 -0
  979. icdev/tools/mosa/__init__.py +10 -0
  980. icdev/tools/mosa/icd_generator.py +370 -0
  981. icdev/tools/mosa/modular_design_analyzer.py +683 -0
  982. icdev/tools/mosa/mosa_code_enforcer.py +349 -0
  983. icdev/tools/mosa/tsp_generator.py +265 -0
  984. icdev/tools/observability/__init__.py +100 -0
  985. icdev/tools/observability/genai_attributes.py +88 -0
  986. icdev/tools/observability/instrumentation.py +140 -0
  987. icdev/tools/observability/mlflow_exporter.py +194 -0
  988. icdev/tools/observability/otel_tracer.py +168 -0
  989. icdev/tools/observability/provenance/__init__.py +3 -0
  990. icdev/tools/observability/provenance/prov_recorder.py +324 -0
  991. icdev/tools/observability/shap/__init__.py +3 -0
  992. icdev/tools/observability/shap/agent_shap.py +275 -0
  993. icdev/tools/observability/sqlite_tracer.py +361 -0
  994. icdev/tools/observability/trace_context.py +205 -0
  995. icdev/tools/observability/tracer.py +230 -0
  996. icdev/tools/orchestration/__init__.py +2 -0
  997. icdev/tools/orchestration/workflow_composer.py +361 -0
  998. icdev/tools/project/__init__.py +1 -0
  999. icdev/tools/project/manifest_loader.py +418 -0
  1000. icdev/tools/project/project_create.py +350 -0
  1001. icdev/tools/project/project_list.py +174 -0
  1002. icdev/tools/project/project_scaffold.py +1715 -0
  1003. icdev/tools/project/project_status.py +479 -0
  1004. icdev/tools/project/session_context_builder.py +757 -0
  1005. icdev/tools/project/validate_manifest.py +55 -0
  1006. icdev/tools/registry/__init__.py +10 -0
  1007. icdev/tools/registry/absorption_engine.py +832 -0
  1008. icdev/tools/registry/capability_evaluator.py +668 -0
  1009. icdev/tools/registry/child_registry.py +617 -0
  1010. icdev/tools/registry/cross_pollinator.py +1065 -0
  1011. icdev/tools/registry/genome_manager.py +671 -0
  1012. icdev/tools/registry/learning_collector.py +912 -0
  1013. icdev/tools/registry/propagation_manager.py +942 -0
  1014. icdev/tools/registry/staging_manager.py +742 -0
  1015. icdev/tools/registry/telemetry_collector.py +423 -0
  1016. icdev/tools/requirements/__init__.py +1 -0
  1017. icdev/tools/requirements/ai_governance_scorer.py +208 -0
  1018. icdev/tools/requirements/boundary_analyzer.py +1293 -0
  1019. icdev/tools/requirements/clarification_engine.py +618 -0
  1020. icdev/tools/requirements/complexity_scorer.py +387 -0
  1021. icdev/tools/requirements/consistency_analyzer.py +803 -0
  1022. icdev/tools/requirements/constitution_manager.py +605 -0
  1023. icdev/tools/requirements/decomposition_engine.py +778 -0
  1024. icdev/tools/requirements/document_extractor.py +1016 -0
  1025. icdev/tools/requirements/elicitation_techniques.py +519 -0
  1026. icdev/tools/requirements/gap_detector.py +271 -0
  1027. icdev/tools/requirements/intake_engine.py +2188 -0
  1028. icdev/tools/requirements/prd_generator.py +847 -0
  1029. icdev/tools/requirements/prd_validator.py +595 -0
  1030. icdev/tools/requirements/readiness_scorer.py +313 -0
  1031. icdev/tools/requirements/spec_organizer.py +1029 -0
  1032. icdev/tools/requirements/spec_quality_checker.py +1097 -0
  1033. icdev/tools/requirements/traceability_builder.py +579 -0
  1034. icdev/tools/resilience/__init__.py +34 -0
  1035. icdev/tools/resilience/circuit_breaker.py +340 -0
  1036. icdev/tools/resilience/correlation.py +150 -0
  1037. icdev/tools/resilience/errors.py +81 -0
  1038. icdev/tools/resilience/retry.py +95 -0
  1039. icdev/tools/schemas/__init__.py +27 -0
  1040. icdev/tools/schemas/chat.py +61 -0
  1041. icdev/tools/schemas/compliance.py +56 -0
  1042. icdev/tools/schemas/core.py +85 -0
  1043. icdev/tools/schemas/innovation.py +37 -0
  1044. icdev/tools/schemas/validation.py +109 -0
  1045. icdev/tools/sdk/__init__.py +3 -0
  1046. icdev/tools/sdk/icdev_client.py +218 -0
  1047. icdev/tools/security/__init__.py +1 -0
  1048. icdev/tools/security/agent_output_validator.py +330 -0
  1049. icdev/tools/security/agent_trust_scorer.py +466 -0
  1050. icdev/tools/security/ai_bom_generator.py +725 -0
  1051. icdev/tools/security/ai_telemetry_logger.py +469 -0
  1052. icdev/tools/security/atlas_red_team.py +543 -0
  1053. icdev/tools/security/code_pattern_scanner.py +378 -0
  1054. icdev/tools/security/confabulation_detector.py +271 -0
  1055. icdev/tools/security/container_scanner.py +491 -0
  1056. icdev/tools/security/dependency_auditor.py +944 -0
  1057. icdev/tools/security/endpoint_security_scanner.py +579 -0
  1058. icdev/tools/security/mcp_tool_authorizer.py +243 -0
  1059. icdev/tools/security/prompt_injection_detector.py +737 -0
  1060. icdev/tools/security/sast_runner.py +948 -0
  1061. icdev/tools/security/secret_detector.py +378 -0
  1062. icdev/tools/security/tool_chain_validator.py +357 -0
  1063. icdev/tools/security/vuln_scanner.py +539 -0
  1064. icdev/tools/simulation/__init__.py +2 -0
  1065. icdev/tools/simulation/coa_generator.py +1552 -0
  1066. icdev/tools/simulation/monte_carlo.py +758 -0
  1067. icdev/tools/simulation/scenario_manager.py +1073 -0
  1068. icdev/tools/simulation/simulation_engine.py +1104 -0
  1069. icdev/tools/supply_chain/__init__.py +2 -0
  1070. icdev/tools/supply_chain/cve_triager.py +705 -0
  1071. icdev/tools/supply_chain/dependency_graph.py +645 -0
  1072. icdev/tools/supply_chain/isa_manager.py +540 -0
  1073. icdev/tools/supply_chain/scrm_assessor.py +546 -0
  1074. icdev/tools/testing/__init__.py +2 -0
  1075. icdev/tools/testing/acceptance_validator.py +411 -0
  1076. icdev/tools/testing/claude_dir_validator.py +831 -0
  1077. icdev/tools/testing/data_types.py +199 -0
  1078. icdev/tools/testing/e2e_runner.py +715 -0
  1079. icdev/tools/testing/fuzz_cli.py +306 -0
  1080. icdev/tools/testing/health_check.py +483 -0
  1081. icdev/tools/testing/platform_check.py +143 -0
  1082. icdev/tools/testing/production_audit.py +1862 -0
  1083. icdev/tools/testing/production_remediate.py +804 -0
  1084. icdev/tools/testing/screenshot_validator.py +539 -0
  1085. icdev/tools/testing/smoke_test.py +283 -0
  1086. icdev/tools/testing/test_agent_models.py +117 -0
  1087. icdev/tools/testing/test_orchestrator.py +957 -0
  1088. icdev/tools/testing/utils.py +229 -0
  1089. icdev/tools/translation/__init__.py +17 -0
  1090. icdev/tools/translation/code_translator.py +550 -0
  1091. icdev/tools/translation/dependency_mapper.py +277 -0
  1092. icdev/tools/translation/feature_map.py +395 -0
  1093. icdev/tools/translation/project_assembler.py +439 -0
  1094. icdev/tools/translation/source_extractor.py +609 -0
  1095. icdev/tools/translation/test_translator.py +333 -0
  1096. icdev/tools/translation/translation_manager.py +582 -0
  1097. icdev/tools/translation/translation_validator.py +662 -0
  1098. icdev/tools/translation/type_checker.py +371 -0
  1099. icdev-1.0.0.dist-info/METADATA +868 -0
  1100. icdev-1.0.0.dist-info/RECORD +1105 -0
  1101. icdev-1.0.0.dist-info/WHEEL +5 -0
  1102. icdev-1.0.0.dist-info/entry_points.txt +9 -0
  1103. icdev-1.0.0.dist-info/licenses/LICENSE +254 -0
  1104. icdev-1.0.0.dist-info/licenses/NOTICE +268 -0
  1105. icdev-1.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,915 @@
1
+ #!/usr/bin/env python3
2
+ # CUI // SP-CTI
3
+ """Dashboard API: Contract Performance Management Portal (Phase 60).
4
+
5
+ Post-award contract lifecycle — EVM, CDRL, CPARS, subcontractors, COR portal.
6
+ Bridges tools/govcon/ CPMP tools into the Flask dashboard.
7
+
8
+ Integration points:
9
+ contract_manager.py → Contracts, CLINs, WBS, Deliverables CRUD
10
+ portfolio_manager.py → Portfolio summary, health scoring, transition bridge
11
+ evm_engine.py → ANSI/EIA-748 calculations, Monte Carlo
12
+ cpars_predictor.py → Deterministic weighted CPARS scoring
13
+ subcontractor_tracker.py → FAR 52.219-9, ISR/SSR
14
+ negative_event_tracker.py → NDAA event-based tracking
15
+ cdrl_generator.py → CDRL auto-generation via ICDEV tools
16
+ sam_contract_sync.py → SAM.gov Contract Awards API
17
+ """
18
+
19
+ import json
20
+ import os
21
+ import sqlite3
22
+ import sys
23
+ import uuid
24
+ from datetime import datetime, timezone
25
+ from pathlib import Path
26
+
27
+ from flask import Blueprint, g, jsonify, request
28
+
29
+ from icdev.tools.dashboard.auth import require_role
30
+ from icdev._paths import get_project_root
31
+
32
+ BASE_DIR = get_project_root()
33
+ if str(BASE_DIR) not in sys.path:
34
+ sys.path.insert(0, str(BASE_DIR))
35
+
36
+ DB_PATH = Path(os.environ.get("ICDEV_DB_PATH", str(BASE_DIR / "data" / "icdev.db")))
37
+
38
+ cpmp_api = Blueprint("cpmp_api", __name__, url_prefix="/api/cpmp")
39
+
40
+
41
+ def _get_db():
42
+ conn = sqlite3.connect(str(DB_PATH))
43
+ conn.row_factory = sqlite3.Row
44
+ conn.execute("PRAGMA journal_mode=WAL")
45
+ conn.execute("PRAGMA foreign_keys=ON")
46
+ return conn
47
+
48
+
49
+ def _now():
50
+ return datetime.now(timezone.utc).isoformat()
51
+
52
+
53
+ def _uuid():
54
+ return str(uuid.uuid4())
55
+
56
+
57
+ def _audit(conn, action, details="", actor="cpmp_api"):
58
+ try:
59
+ conn.execute(
60
+ "INSERT INTO audit_trail (id, timestamp, event_type, actor, action, details, session_id) "
61
+ "VALUES (?, ?, ?, ?, ?, ?, ?)",
62
+ (_uuid(), _now(), "cpmp.api", actor, action, details, "cpmp"),
63
+ )
64
+ except Exception:
65
+ pass
66
+
67
+
68
+ def _cor_access_log(conn, user_id, contract_id, action):
69
+ try:
70
+ conn.execute(
71
+ "INSERT INTO cpmp_cor_access_log (id, user_id, contract_id, action, accessed_at, classification) "
72
+ "VALUES (?, ?, ?, ?, ?, ?)",
73
+ (_uuid(), user_id, contract_id, action, _now(), "CUI // SP-CTI"),
74
+ )
75
+ except Exception:
76
+ pass
77
+
78
+
79
+ # =====================================================================
80
+ # Phase A — Contracts CRUD
81
+ # =====================================================================
82
+
83
+ @cpmp_api.route("/contracts", methods=["GET"])
84
+ def list_contracts():
85
+ """GET /api/cpmp/contracts — List contracts with optional filters."""
86
+ try:
87
+ from icdev.tools.govcon.contract_manager import list_contracts as _list
88
+ status = request.args.get("status")
89
+ agency = request.args.get("agency")
90
+ limit = int(request.args.get("limit", 50))
91
+ result = _list(status=status, limit=limit)
92
+ return jsonify(result)
93
+ except Exception as e:
94
+ return jsonify({"status": "error", "message": str(e)}), 500
95
+
96
+
97
+ @cpmp_api.route("/contracts", methods=["POST"])
98
+ def create_contract():
99
+ """POST /api/cpmp/contracts — Create a new contract."""
100
+ try:
101
+ from icdev.tools.govcon.contract_manager import create_contract as _create
102
+ data = request.get_json(silent=True) or {}
103
+ result = _create(data)
104
+ return jsonify(result), 201 if result.get("status") == "ok" else 400
105
+ except Exception as e:
106
+ return jsonify({"status": "error", "message": str(e)}), 500
107
+
108
+
109
+ @cpmp_api.route("/contracts/<contract_id>", methods=["GET"])
110
+ def get_contract(contract_id):
111
+ """GET /api/cpmp/contracts/<id> — Get contract details."""
112
+ try:
113
+ from icdev.tools.govcon.contract_manager import get_contract as _get
114
+ result = _get(contract_id)
115
+ if result.get("status") == "error":
116
+ return jsonify(result), 404
117
+ return jsonify(result)
118
+ except Exception as e:
119
+ return jsonify({"status": "error", "message": str(e)}), 500
120
+
121
+
122
+ @cpmp_api.route("/contracts/<contract_id>", methods=["PUT"])
123
+ def update_contract(contract_id):
124
+ """PUT /api/cpmp/contracts/<id> — Update contract fields."""
125
+ try:
126
+ from icdev.tools.govcon.contract_manager import update_contract as _update
127
+ data = request.get_json(silent=True) or {}
128
+ result = _update(contract_id, data)
129
+ if result.get("status") == "error":
130
+ return jsonify(result), 404
131
+ return jsonify(result)
132
+ except Exception as e:
133
+ return jsonify({"status": "error", "message": str(e)}), 500
134
+
135
+
136
+ @cpmp_api.route("/contracts/<contract_id>/status", methods=["PUT"])
137
+ def transition_contract(contract_id):
138
+ """PUT /api/cpmp/contracts/<id>/status — Transition contract status."""
139
+ try:
140
+ from icdev.tools.govcon.contract_manager import transition_contract as _transition
141
+ data = request.get_json(silent=True) or {}
142
+ new_status = data.get("status")
143
+ changed_by = data.get("changed_by")
144
+ reason = data.get("reason")
145
+ if not new_status:
146
+ return jsonify({"status": "error", "message": "status required"}), 400
147
+ result = _transition(contract_id, new_status, changed_by, reason)
148
+ if result.get("status") == "error":
149
+ return jsonify(result), 400
150
+ return jsonify(result)
151
+ except Exception as e:
152
+ return jsonify({"status": "error", "message": str(e)}), 500
153
+
154
+
155
+ # =====================================================================
156
+ # Phase A — CLINs
157
+ # =====================================================================
158
+
159
+ @cpmp_api.route("/contracts/<contract_id>/clins", methods=["GET"])
160
+ def list_clins(contract_id):
161
+ """GET /api/cpmp/contracts/<id>/clins — List CLINs for a contract."""
162
+ try:
163
+ from icdev.tools.govcon.contract_manager import list_clins as _list
164
+ result = _list(contract_id)
165
+ return jsonify(result)
166
+ except Exception as e:
167
+ return jsonify({"status": "error", "message": str(e)}), 500
168
+
169
+
170
+ @cpmp_api.route("/contracts/<contract_id>/clins", methods=["POST"])
171
+ def create_clin(contract_id):
172
+ """POST /api/cpmp/contracts/<id>/clins — Create a CLIN."""
173
+ try:
174
+ from icdev.tools.govcon.contract_manager import create_clin as _create
175
+ data = request.get_json(silent=True) or {}
176
+ result = _create(contract_id, data)
177
+ return jsonify(result), 201 if result.get("status") == "ok" else 400
178
+ except Exception as e:
179
+ return jsonify({"status": "error", "message": str(e)}), 500
180
+
181
+
182
+ @cpmp_api.route("/clins/<clin_id>", methods=["PUT"])
183
+ def update_clin(clin_id):
184
+ """PUT /api/cpmp/clins/<id> — Update a CLIN."""
185
+ try:
186
+ from icdev.tools.govcon.contract_manager import update_clin as _update
187
+ data = request.get_json(silent=True) or {}
188
+ result = _update(clin_id, data)
189
+ if result.get("status") == "error":
190
+ return jsonify(result), 404
191
+ return jsonify(result)
192
+ except Exception as e:
193
+ return jsonify({"status": "error", "message": str(e)}), 500
194
+
195
+
196
+ # =====================================================================
197
+ # Phase A — WBS
198
+ # =====================================================================
199
+
200
+ @cpmp_api.route("/contracts/<contract_id>/wbs", methods=["GET"])
201
+ def list_wbs(contract_id):
202
+ """GET /api/cpmp/contracts/<id>/wbs — List WBS elements (flat or tree)."""
203
+ try:
204
+ from icdev.tools.govcon.contract_manager import list_wbs as _list, build_wbs_tree as _tree
205
+ tree = request.args.get("tree", "").lower() == "true"
206
+ if tree:
207
+ result = _tree(contract_id)
208
+ else:
209
+ result = _list(contract_id)
210
+ return jsonify(result)
211
+ except Exception as e:
212
+ return jsonify({"status": "error", "message": str(e)}), 500
213
+
214
+
215
+ @cpmp_api.route("/contracts/<contract_id>/wbs", methods=["POST"])
216
+ def create_wbs(contract_id):
217
+ """POST /api/cpmp/contracts/<id>/wbs — Create a WBS element."""
218
+ try:
219
+ from icdev.tools.govcon.contract_manager import create_wbs as _create
220
+ data = request.get_json(silent=True) or {}
221
+ result = _create(contract_id, data)
222
+ return jsonify(result), 201 if result.get("status") == "ok" else 400
223
+ except Exception as e:
224
+ return jsonify({"status": "error", "message": str(e)}), 500
225
+
226
+
227
+ @cpmp_api.route("/wbs/<wbs_id>", methods=["PUT"])
228
+ def update_wbs(wbs_id):
229
+ """PUT /api/cpmp/wbs/<id> — Update a WBS element."""
230
+ try:
231
+ from icdev.tools.govcon.contract_manager import update_wbs as _update
232
+ data = request.get_json(silent=True) or {}
233
+ result = _update(wbs_id, data)
234
+ if result.get("status") == "error":
235
+ return jsonify(result), 404
236
+ return jsonify(result)
237
+ except Exception as e:
238
+ return jsonify({"status": "error", "message": str(e)}), 500
239
+
240
+
241
+ # =====================================================================
242
+ # Phase A — Deliverables
243
+ # =====================================================================
244
+
245
+ @cpmp_api.route("/contracts/<contract_id>/deliverables", methods=["GET"])
246
+ def list_deliverables(contract_id):
247
+ """GET /api/cpmp/contracts/<id>/deliverables — List deliverables."""
248
+ try:
249
+ from icdev.tools.govcon.contract_manager import list_deliverables as _list
250
+ status = request.args.get("status")
251
+ result = _list(contract_id, status=status)
252
+ return jsonify(result)
253
+ except Exception as e:
254
+ return jsonify({"status": "error", "message": str(e)}), 500
255
+
256
+
257
+ @cpmp_api.route("/contracts/<contract_id>/deliverables", methods=["POST"])
258
+ def create_deliverable(contract_id):
259
+ """POST /api/cpmp/contracts/<id>/deliverables — Create a deliverable."""
260
+ try:
261
+ from icdev.tools.govcon.contract_manager import create_deliverable as _create
262
+ data = request.get_json(silent=True) or {}
263
+ result = _create(contract_id, data)
264
+ return jsonify(result), 201 if result.get("status") == "ok" else 400
265
+ except Exception as e:
266
+ return jsonify({"status": "error", "message": str(e)}), 500
267
+
268
+
269
+ @cpmp_api.route("/deliverables/<deliverable_id>", methods=["GET"])
270
+ def get_deliverable(deliverable_id):
271
+ """GET /api/cpmp/deliverables/<id> — Get deliverable with generations/history."""
272
+ try:
273
+ from icdev.tools.govcon.contract_manager import get_deliverable as _get
274
+ result = _get(deliverable_id)
275
+ if result.get("status") == "error":
276
+ return jsonify(result), 404
277
+ return jsonify(result)
278
+ except Exception as e:
279
+ return jsonify({"status": "error", "message": str(e)}), 500
280
+
281
+
282
+ @cpmp_api.route("/deliverables/<deliverable_id>", methods=["PUT"])
283
+ def update_deliverable(deliverable_id):
284
+ """PUT /api/cpmp/deliverables/<id> — Update deliverable fields."""
285
+ try:
286
+ from icdev.tools.govcon.contract_manager import update_deliverable as _update
287
+ data = request.get_json(silent=True) or {}
288
+ result = _update(deliverable_id, data)
289
+ if result.get("status") == "error":
290
+ return jsonify(result), 404
291
+ return jsonify(result)
292
+ except Exception as e:
293
+ return jsonify({"status": "error", "message": str(e)}), 500
294
+
295
+
296
+ @cpmp_api.route("/deliverables/<deliverable_id>/status", methods=["PUT"])
297
+ def transition_deliverable(deliverable_id):
298
+ """PUT /api/cpmp/deliverables/<id>/status — Transition deliverable status."""
299
+ try:
300
+ from icdev.tools.govcon.contract_manager import transition_deliverable as _transition
301
+ data = request.get_json(silent=True) or {}
302
+ new_status = data.get("status")
303
+ changed_by = data.get("changed_by")
304
+ reason = data.get("reason")
305
+ if not new_status:
306
+ return jsonify({"status": "error", "message": "status required"}), 400
307
+ result = _transition(deliverable_id, new_status, changed_by, reason)
308
+ if result.get("status") == "error":
309
+ return jsonify(result), 400
310
+ return jsonify(result)
311
+ except Exception as e:
312
+ return jsonify({"status": "error", "message": str(e)}), 500
313
+
314
+
315
+ # =====================================================================
316
+ # Phase A — Portfolio + Transition
317
+ # =====================================================================
318
+
319
+ @cpmp_api.route("/portfolio", methods=["GET"])
320
+ def get_portfolio():
321
+ """GET /api/cpmp/portfolio — Portfolio dashboard summary."""
322
+ try:
323
+ from icdev.tools.govcon.portfolio_manager import get_portfolio_summary
324
+ result = get_portfolio_summary()
325
+ return jsonify(result)
326
+ except Exception as e:
327
+ return jsonify({"status": "error", "message": str(e)}), 500
328
+
329
+
330
+ @cpmp_api.route("/from-opportunity/<opp_id>", methods=["POST"])
331
+ def transition_from_opportunity(opp_id):
332
+ """POST /api/cpmp/from-opportunity/<opp_id> — Create contract from won proposal."""
333
+ try:
334
+ from icdev.tools.govcon.portfolio_manager import transition_from_opportunity
335
+ data = request.get_json(silent=True) or {}
336
+ result = transition_from_opportunity(opp_id, created_by=data.get("created_by"))
337
+ if result.get("status") == "error":
338
+ return jsonify(result), 400
339
+ return jsonify(result), 201
340
+ except Exception as e:
341
+ return jsonify({"status": "error", "message": str(e)}), 500
342
+
343
+
344
+ # =====================================================================
345
+ # Phase B — EVM
346
+ # =====================================================================
347
+
348
+ @cpmp_api.route("/contracts/<contract_id>/evm", methods=["GET"])
349
+ def get_evm(contract_id):
350
+ """GET /api/cpmp/contracts/<id>/evm — Aggregated contract-level EVM."""
351
+ try:
352
+ from icdev.tools.govcon.evm_engine import aggregate_contract_evm
353
+ result = aggregate_contract_evm(contract_id)
354
+ return jsonify(result)
355
+ except Exception as e:
356
+ return jsonify({"status": "error", "message": str(e)}), 500
357
+
358
+
359
+ @cpmp_api.route("/contracts/<contract_id>/evm", methods=["POST"])
360
+ def record_evm_period(contract_id):
361
+ """POST /api/cpmp/contracts/<id>/evm — Record an EVM period snapshot."""
362
+ try:
363
+ from icdev.tools.govcon.evm_engine import record_period
364
+ data = request.get_json(silent=True) or {}
365
+ wbs_id = data.get("wbs_id")
366
+ period_date = data.get("period_date")
367
+ pv = data.get("pv", 0)
368
+ ev = data.get("ev", 0)
369
+ ac = data.get("ac", 0)
370
+ source = data.get("source", "manual")
371
+ if not wbs_id or not period_date:
372
+ return jsonify({"status": "error", "message": "wbs_id and period_date required"}), 400
373
+ result = record_period(contract_id, wbs_id, period_date, pv, ev, ac, source)
374
+ if result.get("status") == "error":
375
+ return jsonify(result), 400
376
+ return jsonify(result), 201
377
+ except Exception as e:
378
+ return jsonify({"status": "error", "message": str(e)}), 500
379
+
380
+
381
+ @cpmp_api.route("/contracts/<contract_id>/evm/forecast", methods=["GET"])
382
+ def evm_forecast(contract_id):
383
+ """GET /api/cpmp/contracts/<id>/evm/forecast — Monte Carlo EAC forecast."""
384
+ try:
385
+ from icdev.tools.govcon.evm_engine import forecast_monte_carlo
386
+ iterations = int(request.args.get("iterations", 10000))
387
+ result = forecast_monte_carlo(contract_id, iterations)
388
+ return jsonify(result)
389
+ except Exception as e:
390
+ return jsonify({"status": "error", "message": str(e)}), 500
391
+
392
+
393
+ @cpmp_api.route("/contracts/<contract_id>/evm/scurve", methods=["GET"])
394
+ def evm_scurve(contract_id):
395
+ """GET /api/cpmp/contracts/<id>/evm/scurve — S-curve chart data."""
396
+ try:
397
+ from icdev.tools.govcon.evm_engine import generate_scurve_data
398
+ result = generate_scurve_data(contract_id)
399
+ return jsonify(result)
400
+ except Exception as e:
401
+ return jsonify({"status": "error", "message": str(e)}), 500
402
+
403
+
404
+ @cpmp_api.route("/contracts/<contract_id>/evm/ipmdar", methods=["GET"])
405
+ def evm_ipmdar(contract_id):
406
+ """GET /api/cpmp/contracts/<id>/evm/ipmdar — IPMDAR-compatible data."""
407
+ try:
408
+ from icdev.tools.govcon.evm_engine import generate_ipmdar_data
409
+ result = generate_ipmdar_data(contract_id)
410
+ return jsonify(result)
411
+ except Exception as e:
412
+ return jsonify({"status": "error", "message": str(e)}), 500
413
+
414
+
415
+ @cpmp_api.route("/contracts/<contract_id>/evm/periods", methods=["GET"])
416
+ def evm_periods(contract_id):
417
+ """GET /api/cpmp/contracts/<id>/evm/periods — List EVM period records."""
418
+ try:
419
+ from icdev.tools.govcon.evm_engine import get_evm_periods
420
+ wbs_id = request.args.get("wbs_id")
421
+ result = get_evm_periods(contract_id, wbs_id)
422
+ return jsonify(result)
423
+ except Exception as e:
424
+ return jsonify({"status": "error", "message": str(e)}), 500
425
+
426
+
427
+ # =====================================================================
428
+ # Phase B — Subcontractors
429
+ # =====================================================================
430
+
431
+ @cpmp_api.route("/contracts/<contract_id>/subcontractors", methods=["GET"])
432
+ def list_subcontractors(contract_id):
433
+ """GET /api/cpmp/contracts/<id>/subcontractors — List subcontractors."""
434
+ try:
435
+ from icdev.tools.govcon.subcontractor_tracker import list_subcontractors as _list
436
+ business_size = request.args.get("business_size")
437
+ result = _list(contract_id, business_size=business_size)
438
+ return jsonify(result)
439
+ except Exception as e:
440
+ return jsonify({"status": "error", "message": str(e)}), 500
441
+
442
+
443
+ @cpmp_api.route("/contracts/<contract_id>/subcontractors", methods=["POST"])
444
+ def create_subcontractor(contract_id):
445
+ """POST /api/cpmp/contracts/<id>/subcontractors — Add a subcontractor."""
446
+ try:
447
+ from icdev.tools.govcon.subcontractor_tracker import create_subcontractor as _create
448
+ data = request.get_json(silent=True) or {}
449
+ result = _create(contract_id, data)
450
+ return jsonify(result), 201 if result.get("status") == "ok" else 400
451
+ except Exception as e:
452
+ return jsonify({"status": "error", "message": str(e)}), 500
453
+
454
+
455
+ @cpmp_api.route("/subcontractors/<sub_id>", methods=["PUT"])
456
+ def update_subcontractor(sub_id):
457
+ """PUT /api/cpmp/subcontractors/<id> — Update subcontractor."""
458
+ try:
459
+ from icdev.tools.govcon.subcontractor_tracker import update_subcontractor as _update
460
+ data = request.get_json(silent=True) or {}
461
+ result = _update(sub_id, data)
462
+ if result.get("status") == "error":
463
+ return jsonify(result), 404
464
+ return jsonify(result)
465
+ except Exception as e:
466
+ return jsonify({"status": "error", "message": str(e)}), 500
467
+
468
+
469
+ @cpmp_api.route("/contracts/<contract_id>/subcontractors/noncompliance", methods=["GET"])
470
+ def subcontractor_noncompliance(contract_id):
471
+ """GET /api/cpmp/contracts/<id>/subcontractors/noncompliance — Detect noncompliance."""
472
+ try:
473
+ from icdev.tools.govcon.subcontractor_tracker import detect_noncompliance
474
+ result = detect_noncompliance(contract_id)
475
+ return jsonify(result)
476
+ except Exception as e:
477
+ return jsonify({"status": "error", "message": str(e)}), 500
478
+
479
+
480
+ @cpmp_api.route("/contracts/<contract_id>/sb-compliance", methods=["GET"])
481
+ def sb_compliance(contract_id):
482
+ """GET /api/cpmp/contracts/<id>/sb-compliance — Small business compliance."""
483
+ try:
484
+ from icdev.tools.govcon.subcontractor_tracker import compute_sb_compliance
485
+ result = compute_sb_compliance(contract_id)
486
+ return jsonify(result)
487
+ except Exception as e:
488
+ return jsonify({"status": "error", "message": str(e)}), 500
489
+
490
+
491
+ # =====================================================================
492
+ # Phase B — Small Business Plans (ISR/SSR)
493
+ # =====================================================================
494
+
495
+ @cpmp_api.route("/contracts/<contract_id>/small-business", methods=["GET"])
496
+ def list_sb_reports(contract_id):
497
+ """GET /api/cpmp/contracts/<id>/small-business — List ISR/SSR reports."""
498
+ try:
499
+ from icdev.tools.govcon.subcontractor_tracker import list_sb_reports as _list
500
+ result = _list(contract_id)
501
+ return jsonify(result)
502
+ except Exception as e:
503
+ return jsonify({"status": "error", "message": str(e)}), 500
504
+
505
+
506
+ @cpmp_api.route("/contracts/<contract_id>/small-business", methods=["POST"])
507
+ def create_sb_report(contract_id):
508
+ """POST /api/cpmp/contracts/<id>/small-business — Create ISR/SSR report."""
509
+ try:
510
+ from icdev.tools.govcon.subcontractor_tracker import create_sb_report as _create
511
+ data = request.get_json(silent=True) or {}
512
+ period = data.get("period")
513
+ report_type = data.get("type", "isr")
514
+ if not period:
515
+ return jsonify({"status": "error", "message": "period required"}), 400
516
+ result = _create(contract_id, period, report_type)
517
+ return jsonify(result), 201 if result.get("status") == "ok" else 400
518
+ except Exception as e:
519
+ return jsonify({"status": "error", "message": str(e)}), 500
520
+
521
+
522
+ # =====================================================================
523
+ # Phase B — CPARS
524
+ # =====================================================================
525
+
526
+ @cpmp_api.route("/contracts/<contract_id>/cpars", methods=["GET"])
527
+ def list_cpars(contract_id):
528
+ """GET /api/cpmp/contracts/<id>/cpars — List CPARS assessments."""
529
+ try:
530
+ from icdev.tools.govcon.cpars_predictor import list_assessments as _list
531
+ result = _list(contract_id)
532
+ return jsonify(result)
533
+ except Exception as e:
534
+ return jsonify({"status": "error", "message": str(e)}), 500
535
+
536
+
537
+ @cpmp_api.route("/contracts/<contract_id>/cpars", methods=["POST"])
538
+ def create_cpars(contract_id):
539
+ """POST /api/cpmp/contracts/<id>/cpars — Create CPARS assessment."""
540
+ try:
541
+ from icdev.tools.govcon.cpars_predictor import create_assessment as _create
542
+ data = request.get_json(silent=True) or {}
543
+ period_start = data.get("period_start")
544
+ period_end = data.get("period_end")
545
+ if not period_start or not period_end:
546
+ return jsonify({"status": "error", "message": "period_start and period_end required"}), 400
547
+ result = _create(contract_id, period_start, period_end, data)
548
+ return jsonify(result), 201 if result.get("status") == "ok" else 400
549
+ except Exception as e:
550
+ return jsonify({"status": "error", "message": str(e)}), 500
551
+
552
+
553
+ @cpmp_api.route("/cpars/<assessment_id>", methods=["PUT"])
554
+ def update_cpars(assessment_id):
555
+ """PUT /api/cpmp/cpars/<id> — Update CPARS assessment."""
556
+ try:
557
+ from icdev.tools.govcon.cpars_predictor import update_assessment as _update
558
+ data = request.get_json(silent=True) or {}
559
+ result = _update(assessment_id, data)
560
+ if result.get("status") == "error":
561
+ return jsonify(result), 404
562
+ return jsonify(result)
563
+ except Exception as e:
564
+ return jsonify({"status": "error", "message": str(e)}), 500
565
+
566
+
567
+ @cpmp_api.route("/contracts/<contract_id>/cpars/predict", methods=["GET"])
568
+ def predict_cpars(contract_id):
569
+ """GET /api/cpmp/contracts/<id>/cpars/predict — Predictive CPARS score."""
570
+ try:
571
+ from icdev.tools.govcon.cpars_predictor import predict_cpars as _predict
572
+ result = _predict(contract_id)
573
+ return jsonify(result)
574
+ except Exception as e:
575
+ return jsonify({"status": "error", "message": str(e)}), 500
576
+
577
+
578
+ @cpmp_api.route("/contracts/<contract_id>/cpars/trend", methods=["GET"])
579
+ def cpars_trend(contract_id):
580
+ """GET /api/cpmp/contracts/<id>/cpars/trend — CPARS score trend."""
581
+ try:
582
+ from icdev.tools.govcon.cpars_predictor import get_cpars_trend as _trend
583
+ result = _trend(contract_id)
584
+ return jsonify(result)
585
+ except Exception as e:
586
+ return jsonify({"status": "error", "message": str(e)}), 500
587
+
588
+
589
+ # =====================================================================
590
+ # Phase B — Negative Events
591
+ # =====================================================================
592
+
593
+ @cpmp_api.route("/contracts/<contract_id>/negative-events", methods=["GET"])
594
+ def list_negative_events(contract_id):
595
+ """GET /api/cpmp/contracts/<id>/negative-events — List negative events."""
596
+ try:
597
+ from icdev.tools.govcon.negative_event_tracker import list_events as _list
598
+ severity = request.args.get("severity")
599
+ status = request.args.get("status")
600
+ result = _list(contract_id, severity=severity, status=status)
601
+ return jsonify(result)
602
+ except Exception as e:
603
+ return jsonify({"status": "error", "message": str(e)}), 500
604
+
605
+
606
+ @cpmp_api.route("/contracts/<contract_id>/negative-events", methods=["POST"])
607
+ def record_negative_event(contract_id):
608
+ """POST /api/cpmp/contracts/<id>/negative-events — Record a negative event."""
609
+ try:
610
+ from icdev.tools.govcon.negative_event_tracker import record_event as _record
611
+ data = request.get_json(silent=True) or {}
612
+ data["contract_id"] = contract_id
613
+ result = _record(contract_id, data)
614
+ return jsonify(result), 201 if result.get("status") == "ok" else 400
615
+ except Exception as e:
616
+ return jsonify({"status": "error", "message": str(e)}), 500
617
+
618
+
619
+ @cpmp_api.route("/negative-events/<event_id>", methods=["PUT"])
620
+ def update_negative_event(event_id):
621
+ """PUT /api/cpmp/negative-events/<id> — Update corrective action status."""
622
+ try:
623
+ from icdev.tools.govcon.negative_event_tracker import update_corrective_action as _update
624
+ data = request.get_json(silent=True) or {}
625
+ ca_status = data.get("corrective_action_status")
626
+ if not ca_status:
627
+ return jsonify({"status": "error", "message": "corrective_action_status required"}), 400
628
+ result = _update(event_id, ca_status)
629
+ if result.get("status") == "error":
630
+ return jsonify(result), 404
631
+ return jsonify(result)
632
+ except Exception as e:
633
+ return jsonify({"status": "error", "message": str(e)}), 500
634
+
635
+
636
+ @cpmp_api.route("/contracts/<contract_id>/negative-events/auto-detect", methods=["POST"])
637
+ def auto_detect_events(contract_id):
638
+ """POST /api/cpmp/contracts/<id>/negative-events/auto-detect — Run auto-detection."""
639
+ try:
640
+ from icdev.tools.govcon.negative_event_tracker import auto_detect_all as _detect
641
+ result = _detect(contract_id)
642
+ return jsonify(result)
643
+ except Exception as e:
644
+ return jsonify({"status": "error", "message": str(e)}), 500
645
+
646
+
647
+ @cpmp_api.route("/contracts/<contract_id>/negative-events/ndaa-thresholds", methods=["GET"])
648
+ def ndaa_thresholds(contract_id):
649
+ """GET /api/cpmp/contracts/<id>/negative-events/ndaa-thresholds — Check NDAA thresholds."""
650
+ try:
651
+ from icdev.tools.govcon.negative_event_tracker import check_ndaa_thresholds
652
+ result = check_ndaa_thresholds(contract_id)
653
+ return jsonify(result)
654
+ except Exception as e:
655
+ return jsonify({"status": "error", "message": str(e)}), 500
656
+
657
+
658
+ # =====================================================================
659
+ # Phase B — Health
660
+ # =====================================================================
661
+
662
+ @cpmp_api.route("/contracts/<contract_id>/health", methods=["GET"])
663
+ def contract_health(contract_id):
664
+ """GET /api/cpmp/contracts/<id>/health — Compute contract health score."""
665
+ try:
666
+ from icdev.tools.govcon.portfolio_manager import compute_contract_health
667
+ result = compute_contract_health(contract_id)
668
+ return jsonify(result)
669
+ except Exception as e:
670
+ return jsonify({"status": "error", "message": str(e)}), 500
671
+
672
+
673
+ # =====================================================================
674
+ # Phase C — CDRL Generation
675
+ # =====================================================================
676
+
677
+ @cpmp_api.route("/contracts/<contract_id>/generate-cdrl/<deliverable_id>", methods=["POST"])
678
+ def generate_cdrl(contract_id, deliverable_id):
679
+ """POST /api/cpmp/contracts/<id>/generate-cdrl/<did> — Generate CDRL."""
680
+ try:
681
+ from icdev.tools.govcon.cdrl_generator import generate_cdrl as _generate
682
+ data = request.get_json(silent=True) or {}
683
+ project_id = data.get("project_id")
684
+ result = _generate(deliverable_id, project_id)
685
+ return jsonify(result)
686
+ except Exception as e:
687
+ return jsonify({"status": "error", "message": str(e)}), 500
688
+
689
+
690
+ @cpmp_api.route("/contracts/<contract_id>/generate-due", methods=["POST"])
691
+ def generate_due_cdrls(contract_id):
692
+ """POST /api/cpmp/contracts/<id>/generate-due — Generate all due CDRLs."""
693
+ try:
694
+ from icdev.tools.govcon.cdrl_generator import generate_all_due as _generate
695
+ data = request.get_json(silent=True) or {}
696
+ days_ahead = data.get("days_ahead")
697
+ result = _generate(contract_id, days_ahead)
698
+ return jsonify(result)
699
+ except Exception as e:
700
+ return jsonify({"status": "error", "message": str(e)}), 500
701
+
702
+
703
+ @cpmp_api.route("/cdrl-generations", methods=["GET"])
704
+ def list_cdrl_generations():
705
+ """GET /api/cpmp/cdrl-generations — List CDRL generation records."""
706
+ try:
707
+ from icdev.tools.govcon.cdrl_generator import list_generations as _list
708
+ contract_id = request.args.get("contract_id")
709
+ deliverable_id = request.args.get("deliverable_id")
710
+ status = request.args.get("status")
711
+ result = _list(contract_id, deliverable_id, status)
712
+ return jsonify(result)
713
+ except Exception as e:
714
+ return jsonify({"status": "error", "message": str(e)}), 500
715
+
716
+
717
+ # =====================================================================
718
+ # Phase C — SAM.gov Contract Awards
719
+ # =====================================================================
720
+
721
+ @cpmp_api.route("/sam/sync-awards", methods=["POST"])
722
+ def sync_sam_awards():
723
+ """POST /api/cpmp/sam/sync-awards — Sync awards from SAM.gov."""
724
+ try:
725
+ from icdev.tools.govcon.sam_contract_sync import sync_awards
726
+ data = request.get_json(silent=True) or {}
727
+ lookback_days = data.get("lookback_days")
728
+ result = sync_awards(lookback_days)
729
+ return jsonify(result)
730
+ except Exception as e:
731
+ return jsonify({"status": "error", "message": str(e)}), 500
732
+
733
+
734
+ @cpmp_api.route("/sam/awards", methods=["GET"])
735
+ def list_sam_awards():
736
+ """GET /api/cpmp/sam/awards — List cached SAM.gov awards."""
737
+ try:
738
+ from icdev.tools.govcon.sam_contract_sync import list_awards
739
+ linked_only = request.args.get("linked_only", "").lower() == "true"
740
+ limit = int(request.args.get("limit", 50))
741
+ result = list_awards(linked_only, limit)
742
+ return jsonify(result)
743
+ except Exception as e:
744
+ return jsonify({"status": "error", "message": str(e)}), 500
745
+
746
+
747
+ @cpmp_api.route("/sam/awards/search", methods=["GET"])
748
+ def search_sam_awards():
749
+ """GET /api/cpmp/sam/awards/search?q=keyword — Search awards."""
750
+ try:
751
+ from icdev.tools.govcon.sam_contract_sync import search_awards
752
+ query = request.args.get("q", "")
753
+ if not query:
754
+ return jsonify({"status": "error", "message": "q parameter required"}), 400
755
+ result = search_awards(query)
756
+ return jsonify(result)
757
+ except Exception as e:
758
+ return jsonify({"status": "error", "message": str(e)}), 500
759
+
760
+
761
+ @cpmp_api.route("/sam/link/<sam_award_id>", methods=["POST"])
762
+ def link_sam_award(sam_award_id):
763
+ """POST /api/cpmp/sam/link/<sam_award_id> — Link SAM award to contract."""
764
+ try:
765
+ from icdev.tools.govcon.sam_contract_sync import link_award_to_contract
766
+ data = request.get_json(silent=True) or {}
767
+ contract_id = data.get("contract_id")
768
+ if not contract_id:
769
+ return jsonify({"status": "error", "message": "contract_id required"}), 400
770
+ result = link_award_to_contract(sam_award_id, contract_id)
771
+ if result.get("status") == "error":
772
+ return jsonify(result), 404
773
+ return jsonify(result)
774
+ except Exception as e:
775
+ return jsonify({"status": "error", "message": str(e)}), 500
776
+
777
+
778
+ # =====================================================================
779
+ # Phase C — COR Portal (Read-Only)
780
+ # =====================================================================
781
+
782
+ def _get_cor_contracts(cor_email):
783
+ """Get contracts where the COR email matches."""
784
+ conn = _get_db()
785
+ rows = conn.execute(
786
+ "SELECT * FROM cpmp_contracts WHERE cor_email = ? ORDER BY created_at DESC",
787
+ (cor_email,),
788
+ ).fetchall()
789
+ conn.close()
790
+ return [dict(r) for r in rows]
791
+
792
+
793
+ # Hidden fields for COR view (from config)
794
+ COR_HIDDEN_FIELDS = {
795
+ "subcontractor_pricing", "internal_cost_details", "internal_notes",
796
+ "corrective_action_details", "billed_value", "ac_cumulative",
797
+ }
798
+
799
+
800
+ def _sanitize_for_cor(data):
801
+ """Remove internal-only fields from data for COR view."""
802
+ if isinstance(data, dict):
803
+ return {k: _sanitize_for_cor(v) for k, v in data.items() if k not in COR_HIDDEN_FIELDS}
804
+ if isinstance(data, list):
805
+ return [_sanitize_for_cor(item) for item in data]
806
+ return data
807
+
808
+
809
+ @cpmp_api.route("/cor/contracts", methods=["GET"])
810
+ @require_role("admin", "pm", "isso", "co", "cor")
811
+ def cor_list_contracts():
812
+ """GET /api/cpmp/cor/contracts — COR: list assigned contracts."""
813
+ try:
814
+ cor_email = g.current_user.get("email", "")
815
+ if not cor_email:
816
+ return jsonify({"status": "error", "message": "Authenticated user has no email"}), 400
817
+ conn = _get_db()
818
+ _cor_access_log(conn, cor_email, "all", "view_contracts")
819
+ conn.commit()
820
+ conn.close()
821
+ contracts = _get_cor_contracts(cor_email)
822
+ return jsonify({"status": "ok", "total": len(contracts), "contracts": _sanitize_for_cor(contracts)})
823
+ except Exception as e:
824
+ return jsonify({"status": "error", "message": str(e)}), 500
825
+
826
+
827
+ @cpmp_api.route("/cor/contracts/<contract_id>", methods=["GET"])
828
+ @require_role("admin", "pm", "isso", "co", "cor")
829
+ def cor_get_contract(contract_id):
830
+ """GET /api/cpmp/cor/contracts/<id> — COR: view contract detail."""
831
+ try:
832
+ cor_email = g.current_user.get("email", "")
833
+ if not cor_email:
834
+ return jsonify({"status": "error", "message": "Authenticated user has no email"}), 400
835
+ # Verify COR is assigned to this contract
836
+ cor_contracts = _get_cor_contracts(cor_email)
837
+ if not any(c.get("id") == contract_id for c in cor_contracts):
838
+ return jsonify({"status": "error", "message": "Access denied: not assigned COR for this contract"}), 403
839
+ from icdev.tools.govcon.contract_manager import get_contract as _get
840
+ result = _get(contract_id)
841
+ if result.get("status") == "error":
842
+ return jsonify(result), 404
843
+ conn = _get_db()
844
+ _cor_access_log(conn, cor_email, contract_id, "view_contract")
845
+ conn.commit()
846
+ conn.close()
847
+ return jsonify(_sanitize_for_cor(result))
848
+ except Exception as e:
849
+ return jsonify({"status": "error", "message": str(e)}), 500
850
+
851
+
852
+ @cpmp_api.route("/cor/contracts/<contract_id>/deliverables", methods=["GET"])
853
+ @require_role("admin", "pm", "isso", "co", "cor")
854
+ def cor_list_deliverables(contract_id):
855
+ """GET /api/cpmp/cor/contracts/<id>/deliverables — COR: view deliverables."""
856
+ try:
857
+ cor_email = g.current_user.get("email", "")
858
+ if not cor_email:
859
+ return jsonify({"status": "error", "message": "Authenticated user has no email"}), 400
860
+ cor_contracts = _get_cor_contracts(cor_email)
861
+ if not any(c.get("id") == contract_id for c in cor_contracts):
862
+ return jsonify({"status": "error", "message": "Access denied: not assigned COR for this contract"}), 403
863
+ from icdev.tools.govcon.contract_manager import list_deliverables as _list
864
+ result = _list(contract_id)
865
+ conn = _get_db()
866
+ _cor_access_log(conn, cor_email, contract_id, "view_deliverables")
867
+ conn.commit()
868
+ conn.close()
869
+ return jsonify(_sanitize_for_cor(result))
870
+ except Exception as e:
871
+ return jsonify({"status": "error", "message": str(e)}), 500
872
+
873
+
874
+ @cpmp_api.route("/cor/contracts/<contract_id>/evm", methods=["GET"])
875
+ @require_role("admin", "pm", "isso", "co", "cor")
876
+ def cor_get_evm(contract_id):
877
+ """GET /api/cpmp/cor/contracts/<id>/evm — COR: view EVM data."""
878
+ try:
879
+ cor_email = g.current_user.get("email", "")
880
+ if not cor_email:
881
+ return jsonify({"status": "error", "message": "Authenticated user has no email"}), 400
882
+ cor_contracts = _get_cor_contracts(cor_email)
883
+ if not any(c.get("id") == contract_id for c in cor_contracts):
884
+ return jsonify({"status": "error", "message": "Access denied: not assigned COR for this contract"}), 403
885
+ from icdev.tools.govcon.evm_engine import aggregate_contract_evm
886
+ result = aggregate_contract_evm(contract_id)
887
+ conn = _get_db()
888
+ _cor_access_log(conn, cor_email, contract_id, "view_evm")
889
+ conn.commit()
890
+ conn.close()
891
+ return jsonify(_sanitize_for_cor(result))
892
+ except Exception as e:
893
+ return jsonify({"status": "error", "message": str(e)}), 500
894
+
895
+
896
+ @cpmp_api.route("/cor/contracts/<contract_id>/cpars", methods=["GET"])
897
+ @require_role("admin", "pm", "isso", "co", "cor")
898
+ def cor_get_cpars(contract_id):
899
+ """GET /api/cpmp/cor/contracts/<id>/cpars — COR: view CPARS ratings."""
900
+ try:
901
+ cor_email = g.current_user.get("email", "")
902
+ if not cor_email:
903
+ return jsonify({"status": "error", "message": "Authenticated user has no email"}), 400
904
+ cor_contracts = _get_cor_contracts(cor_email)
905
+ if not any(c.get("id") == contract_id for c in cor_contracts):
906
+ return jsonify({"status": "error", "message": "Access denied: not assigned COR for this contract"}), 403
907
+ from icdev.tools.govcon.cpars_predictor import list_assessments as _list
908
+ result = _list(contract_id)
909
+ conn = _get_db()
910
+ _cor_access_log(conn, cor_email, contract_id, "view_cpars")
911
+ conn.commit()
912
+ conn.close()
913
+ return jsonify(_sanitize_for_cor(result))
914
+ except Exception as e:
915
+ return jsonify({"status": "error", "message": str(e)}), 500