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,1583 @@
1
+ #!/usr/bin/env python3
2
+ # CUI // SP-CTI
3
+ # Controlled by: Department of Defense
4
+ # CUI Category: CTI
5
+ # Distribution: D
6
+ # POC: ICDEV System Administrator
7
+ """App Blueprint Engine - generates deployment blueprint from fitness scorecard.
8
+
9
+ Consumes an agentic fitness scorecard (JSON output from tools/builder/agentic_fitness.py)
10
+ and user decisions to produce a comprehensive blueprint JSON that drives all downstream
11
+ child app generators.
12
+
13
+ Architecture Decision D23: Blueprint-driven generation -- single config drives all
14
+ generators; no hardcoded decisions.
15
+
16
+ CLI: python tools/builder/app_blueprint.py \
17
+ --fitness-scorecard /path/to/scorecard.json \
18
+ --user-decisions '{"ato_required": true}' \
19
+ --app-name "my-child-app" \
20
+ --json
21
+ """
22
+
23
+ import argparse
24
+ import hashlib
25
+ import json
26
+ import logging
27
+ import sys
28
+ import uuid
29
+ from datetime import datetime
30
+ from pathlib import Path
31
+ from typing import Any, Dict, List, Optional
32
+ from icdev._paths import get_project_root
33
+
34
+ BASE_DIR = get_project_root()
35
+ DB_PATH = BASE_DIR / "data" / "icdev.db"
36
+ CAPABILITY_REGISTRY_PATH = BASE_DIR / "context" / "agentic" / "capability_registry.yaml"
37
+ CSP_REGISTRY_PATH = BASE_DIR / "context" / "agentic" / "csp_mcp_registry.yaml"
38
+
39
+ logger = logging.getLogger("icdev.app_blueprint")
40
+
41
+ try:
42
+ import yaml
43
+ except ImportError:
44
+ yaml = None
45
+
46
+ try:
47
+ from icdev.tools.audit.audit_logger import log_event as audit_log_event
48
+ except ImportError:
49
+ def audit_log_event(**kwargs):
50
+ logger.debug("audit_logger unavailable — skipping audit event")
51
+
52
+
53
+ # ============================================================
54
+ # DEFAULT REGISTRIES — fallback when YAML files not available
55
+ # ============================================================
56
+
57
+ DEFAULT_CAPABILITY_REGISTRY: Dict[str, Any] = {
58
+ "capabilities": {
59
+ "core": {
60
+ "description": "Core agent framework (orchestration, A2A, audit)",
61
+ "always_on": True,
62
+ "condition": None,
63
+ },
64
+ "compliance": {
65
+ "description": "ATO artifacts, 9-framework compliance engine",
66
+ "always_on": False,
67
+ "condition": "compliance_sensitivity >= 6 OR user_decisions.ato_required",
68
+ },
69
+ "security": {
70
+ "description": "SAST, dependency audit, secret detection, container scan",
71
+ "always_on": False,
72
+ "condition": "overall_score >= 5 OR user_decisions.security_required",
73
+ },
74
+ "mbse": {
75
+ "description": "Model-Based Systems Engineering integration",
76
+ "always_on": False,
77
+ "condition": "user_decisions.mbse_enabled",
78
+ },
79
+ "cicd": {
80
+ "description": "CI/CD pipeline integration (GitHub + GitLab)",
81
+ "always_on": True,
82
+ "condition": None,
83
+ },
84
+ "testing": {
85
+ "description": "Testing framework (unit, BDD, E2E, gates)",
86
+ "always_on": True,
87
+ "condition": None,
88
+ },
89
+ "dashboard": {
90
+ "description": "Flask web dashboard for monitoring and status",
91
+ "always_on": False,
92
+ "condition": "user_interaction >= 4",
93
+ },
94
+ "knowledge": {
95
+ "description": "Self-healing patterns, ML, recommendations",
96
+ "always_on": True,
97
+ "condition": None,
98
+ },
99
+ "modernization": {
100
+ "description": "Legacy app modernization (excluded from child apps)",
101
+ "always_on": False,
102
+ "condition": "never",
103
+ },
104
+ "infra": {
105
+ "description": "Terraform, Ansible, K8s, pipeline generation",
106
+ "always_on": False,
107
+ "condition": "capabilities.cicd",
108
+ },
109
+ "db": {
110
+ "description": "Database initialization and management",
111
+ "always_on": True,
112
+ "condition": None,
113
+ },
114
+ "project": {
115
+ "description": "Project lifecycle management",
116
+ "always_on": True,
117
+ "condition": None,
118
+ },
119
+ "memory": {
120
+ "description": "Memory system (markdown + SQLite + embeddings)",
121
+ "always_on": True,
122
+ "condition": None,
123
+ },
124
+ # --- D-CHILD-1: Enterprise-grade child app capabilities ---
125
+ "ricoas": {
126
+ "description": "Requirements intake, gap detection, SAFe decomposition, boundary analysis",
127
+ "always_on": False,
128
+ "condition": "compliance_sensitivity >= 7 OR user_decisions.ricoas_enabled",
129
+ },
130
+ "supply_chain": {
131
+ "description": "Dependency graph, SBOM aggregation, ISA lifecycle, CVE triage",
132
+ "always_on": False,
133
+ "condition": "capabilities.ricoas",
134
+ },
135
+ "simulation": {
136
+ "description": "Digital Program Twin, Monte Carlo, COA generation",
137
+ "always_on": False,
138
+ "condition": "capabilities.ricoas",
139
+ },
140
+ "devsecops_zta": {
141
+ "description": "DevSecOps profile, ZTA maturity, service mesh, policy-as-code",
142
+ "always_on": False,
143
+ "condition": "compliance_sensitivity >= 6 OR user_decisions.devsecops_enabled",
144
+ },
145
+ "ai_security": {
146
+ "description": "ATLAS, OWASP Agentic, prompt injection, AI telemetry",
147
+ "always_on": False,
148
+ "condition": "overall_score >= 5 OR user_decisions.ai_security_required",
149
+ },
150
+ "ai_governance": {
151
+ "description": "AI Transparency, Accountability, model/system cards",
152
+ "always_on": False,
153
+ "condition": "user_decisions.ai_governance_enabled",
154
+ },
155
+ "observability": {
156
+ "description": "Distributed tracing, provenance, AgentSHAP, XAI",
157
+ "always_on": False,
158
+ "condition": "overall_score >= 4",
159
+ },
160
+ "code_intelligence": {
161
+ "description": "AST metrics, smell detection, maintainability scoring",
162
+ "always_on": False,
163
+ "condition": "overall_score >= 5 OR user_decisions.code_intelligence_enabled",
164
+ },
165
+ "govcon": {
166
+ "description": "GovProposal, CPMP, GovCon Intelligence (parent-only, D-CHILD-3)",
167
+ "always_on": False,
168
+ "condition": "never",
169
+ },
170
+ },
171
+ }
172
+
173
+ DEFAULT_CSP_REGISTRY: Dict[str, Any] = {
174
+ "providers": {
175
+ "aws": {
176
+ "display_name": "Amazon Web Services",
177
+ "govcloud_regions": ["us-gov-west-1", "us-gov-east-1"],
178
+ "commercial_regions": ["us-east-1", "us-west-2", "eu-west-1"],
179
+ "mcp_servers": {
180
+ "core": {
181
+ "name": "aws-core",
182
+ "description": "S3, SQS, SNS, CloudWatch",
183
+ "always_on": True,
184
+ },
185
+ "bedrock": {
186
+ "name": "aws-bedrock",
187
+ "description": "Amazon Bedrock LLM inference",
188
+ "always_on": True,
189
+ },
190
+ "secrets": {
191
+ "name": "aws-secrets-manager",
192
+ "description": "AWS Secrets Manager",
193
+ "always_on": True,
194
+ },
195
+ "compliance": {
196
+ "name": "aws-config",
197
+ "description": "AWS Config for compliance monitoring",
198
+ "requires_capability": "compliance",
199
+ },
200
+ "security": {
201
+ "name": "aws-security-hub",
202
+ "description": "AWS Security Hub findings",
203
+ "requires_capability": "security",
204
+ },
205
+ "container": {
206
+ "name": "aws-ecr",
207
+ "description": "Elastic Container Registry",
208
+ "requires_capability": "cicd",
209
+ },
210
+ "monitoring": {
211
+ "name": "aws-cloudwatch",
212
+ "description": "CloudWatch metrics and logs",
213
+ "requires_capability": "knowledge",
214
+ },
215
+ },
216
+ "knowledge_bases": [
217
+ {"id": "kb-govcloud-patterns", "name": "GovCloud Architecture Patterns"},
218
+ {"id": "kb-nist-controls", "name": "NIST 800-53 Control Implementations"},
219
+ ],
220
+ },
221
+ "gcp": {
222
+ "display_name": "Google Cloud Platform",
223
+ "govcloud_regions": [],
224
+ "commercial_regions": ["us-central1", "us-east1", "europe-west1"],
225
+ "mcp_servers": {
226
+ "core": {
227
+ "name": "gcp-core",
228
+ "description": "GCS, Pub/Sub, Cloud Logging",
229
+ "always_on": True,
230
+ },
231
+ "ai": {
232
+ "name": "gcp-vertex-ai",
233
+ "description": "Vertex AI LLM inference",
234
+ "always_on": True,
235
+ },
236
+ "secrets": {
237
+ "name": "gcp-secret-manager",
238
+ "description": "GCP Secret Manager",
239
+ "always_on": True,
240
+ },
241
+ "security": {
242
+ "name": "gcp-security-command-center",
243
+ "description": "Security Command Center",
244
+ "requires_capability": "security",
245
+ },
246
+ "container": {
247
+ "name": "gcp-artifact-registry",
248
+ "description": "Artifact Registry",
249
+ "requires_capability": "cicd",
250
+ },
251
+ },
252
+ "knowledge_bases": [
253
+ {"id": "kb-gcp-patterns", "name": "GCP Architecture Patterns"},
254
+ ],
255
+ },
256
+ "azure": {
257
+ "display_name": "Microsoft Azure",
258
+ "govcloud_regions": ["usgovvirginia", "usgovarizona"],
259
+ "commercial_regions": ["eastus", "westus2", "westeurope"],
260
+ "mcp_servers": {
261
+ "core": {
262
+ "name": "azure-core",
263
+ "description": "Blob Storage, Service Bus, Monitor",
264
+ "always_on": True,
265
+ },
266
+ "ai": {
267
+ "name": "azure-openai",
268
+ "description": "Azure OpenAI Service",
269
+ "always_on": True,
270
+ },
271
+ "secrets": {
272
+ "name": "azure-key-vault",
273
+ "description": "Azure Key Vault",
274
+ "always_on": True,
275
+ },
276
+ "compliance": {
277
+ "name": "azure-policy",
278
+ "description": "Azure Policy for compliance",
279
+ "requires_capability": "compliance",
280
+ },
281
+ "security": {
282
+ "name": "azure-defender",
283
+ "description": "Microsoft Defender for Cloud",
284
+ "requires_capability": "security",
285
+ },
286
+ "container": {
287
+ "name": "azure-acr",
288
+ "description": "Azure Container Registry",
289
+ "requires_capability": "cicd",
290
+ },
291
+ },
292
+ "knowledge_bases": [
293
+ {"id": "kb-azure-patterns", "name": "Azure Gov Architecture Patterns"},
294
+ ],
295
+ },
296
+ "oracle": {
297
+ "display_name": "Oracle Cloud Infrastructure",
298
+ "govcloud_regions": ["us-langley-1", "us-luke-1"],
299
+ "commercial_regions": ["us-ashburn-1", "us-phoenix-1"],
300
+ "mcp_servers": {
301
+ "core": {
302
+ "name": "oci-core",
303
+ "description": "Object Storage, Streaming, Logging",
304
+ "always_on": True,
305
+ },
306
+ "ai": {
307
+ "name": "oci-generative-ai",
308
+ "description": "OCI Generative AI Service",
309
+ "always_on": True,
310
+ },
311
+ "secrets": {
312
+ "name": "oci-vault",
313
+ "description": "OCI Vault",
314
+ "always_on": True,
315
+ },
316
+ "security": {
317
+ "name": "oci-cloud-guard",
318
+ "description": "OCI Cloud Guard",
319
+ "requires_capability": "security",
320
+ },
321
+ },
322
+ "knowledge_bases": [
323
+ {"id": "kb-oci-patterns", "name": "OCI Gov Architecture Patterns"},
324
+ ],
325
+ },
326
+ "ibm": {
327
+ "display_name": "IBM Cloud for Government (IC4G)",
328
+ "govcloud_regions": ["us-south", "us-east"],
329
+ "commercial_regions": ["us-south", "us-east", "eu-de", "eu-gb"],
330
+ "mcp_servers": {
331
+ "core": {
332
+ "name": "ibm-cloud-core",
333
+ "description": "IBM Cloud Object Storage, Event Streams, Logging",
334
+ "always_on": True,
335
+ },
336
+ "ai": {
337
+ "name": "ibm-watsonx-ai",
338
+ "description": "IBM watsonx.ai (Granite, Llama)",
339
+ "always_on": True,
340
+ },
341
+ "secrets": {
342
+ "name": "ibm-key-protect",
343
+ "description": "IBM Key Protect",
344
+ "always_on": True,
345
+ },
346
+ "container": {
347
+ "name": "ibm-iks",
348
+ "description": "IBM Kubernetes Service / Red Hat OpenShift",
349
+ "requires_capability": "cicd",
350
+ },
351
+ "security": {
352
+ "name": "ibm-security-compliance",
353
+ "description": "IBM Security and Compliance Center",
354
+ "requires_capability": "security",
355
+ },
356
+ },
357
+ "knowledge_bases": [
358
+ {"id": "kb-ibm-patterns", "name": "IBM IC4G Architecture Patterns"},
359
+ ],
360
+ },
361
+ },
362
+ }
363
+
364
+
365
+ # ============================================================
366
+ # CORE / CONDITIONAL AGENT DEFINITIONS
367
+ # ============================================================
368
+
369
+ CORE_AGENTS: List[Dict[str, Any]] = [
370
+ {
371
+ "name": "orchestrator",
372
+ "base_port": 8443,
373
+ "role": "Task routing, workflow management",
374
+ },
375
+ {
376
+ "name": "architect",
377
+ "base_port": 8444,
378
+ "role": "ATLAS A/T phases, system design",
379
+ },
380
+ {
381
+ "name": "builder",
382
+ "base_port": 8445,
383
+ "role": "TDD code gen (RED->GREEN->REFACTOR)",
384
+ },
385
+ {
386
+ "name": "knowledge",
387
+ "base_port": 8449,
388
+ "role": "Self-healing patterns, recommendations",
389
+ },
390
+ {
391
+ "name": "monitor",
392
+ "base_port": 8450,
393
+ "role": "Log analysis, metrics, alerts, health checks",
394
+ },
395
+ ]
396
+
397
+ CONDITIONAL_AGENTS: List[Dict[str, Any]] = [
398
+ {
399
+ "name": "compliance",
400
+ "base_port": 8446,
401
+ "role": "ATO artifacts, 9-framework compliance",
402
+ "requires": "compliance",
403
+ },
404
+ {
405
+ "name": "security",
406
+ "base_port": 8447,
407
+ "role": "SAST, dep audit, secret detection",
408
+ "requires": "security",
409
+ },
410
+ # D-CHILD-1: Enterprise child app agents
411
+ {
412
+ "name": "requirements_analyst",
413
+ "base_port": 8453,
414
+ "role": "Conversational intake, gap detection, SAFe decomposition",
415
+ "requires": "ricoas",
416
+ },
417
+ {
418
+ "name": "supply_chain",
419
+ "base_port": 8454,
420
+ "role": "Dependency graph, SBOM aggregation, ISA lifecycle, CVE triage",
421
+ "requires": "supply_chain",
422
+ },
423
+ {
424
+ "name": "simulation",
425
+ "base_port": 8455,
426
+ "role": "Digital Program Twin, Monte Carlo, COA generation",
427
+ "requires": "simulation",
428
+ },
429
+ {
430
+ "name": "devsecops_zta",
431
+ "base_port": 8457,
432
+ "role": "DevSecOps pipeline security, Zero Trust, policy-as-code",
433
+ "requires": "devsecops_zta",
434
+ },
435
+ ]
436
+
437
+ # ============================================================
438
+ # ESSENTIAL GOALS (21 goals for enterprise child apps — D-CHILD-1)
439
+ # ============================================================
440
+
441
+ ESSENTIAL_GOALS: List[str] = [
442
+ # Core (always included)
443
+ "build_app",
444
+ "tdd_workflow",
445
+ "compliance_workflow",
446
+ "security_scan",
447
+ "deploy_workflow",
448
+ "monitoring",
449
+ "self_healing",
450
+ "agent_management",
451
+ # D-CHILD-1: Enterprise-grade additions
452
+ "integration_testing",
453
+ "maintenance_audit",
454
+ "requirements_intake",
455
+ "boundary_supply_chain",
456
+ "simulation_engine",
457
+ "devsecops_workflow",
458
+ "zero_trust_architecture",
459
+ "mosa_workflow",
460
+ "observability_traceability_xai",
461
+ "ai_transparency",
462
+ "ai_accountability",
463
+ "owasp_agentic_security",
464
+ "code_intelligence",
465
+ ]
466
+
467
+ # ============================================================
468
+ # CAPABILITY -> SOURCE DIRECTORY MAPPING
469
+ # ============================================================
470
+
471
+ CAPABILITY_SOURCES: Dict[str, List[str]] = {
472
+ "core": ["tools/audit"], # Audit trail always included
473
+ "multi_agent": ["tools/agent", "tools/a2a"], # ICDEV A2A infra (only when needed)
474
+ "memory": ["tools/memory"],
475
+ "knowledge": ["tools/knowledge", "tools/monitor"],
476
+ "compliance": ["tools/compliance"],
477
+ "security": ["tools/security"],
478
+ "ai_security": ["tools/security"], # D-CHILD-7: shares dir with security
479
+ "maintenance": ["tools/maintenance"],
480
+ "mbse": ["tools/mbse"],
481
+ "cicd": ["tools/ci"],
482
+ "testing": ["tools/testing"],
483
+ "dashboard": [], # Full dashboard copied by child_app_generator (D-CHILD-4)
484
+ "infrastructure": ["tools/infra", "k8s", "docker"], # D-CHILD-8: fixed key + k8s/docker
485
+ "db": ["tools/db"],
486
+ "project": ["tools/project"],
487
+ "llm": ["tools/llm"], # D-CHILD-9: LLM router is fundamental infra
488
+ "compat": ["tools/compat"], # D-CHILD-9: platform compatibility
489
+ "cli": ["tools/cli"], # D-CHILD-9: CLI output formatter
490
+ # D-CHILD-1: Enterprise capability sources
491
+ "ricoas": ["tools/requirements"],
492
+ "supply_chain": ["tools/supply_chain"],
493
+ "simulation": ["tools/simulation"],
494
+ "devsecops_zta": ["tools/devsecops"],
495
+ "observability": ["tools/observability"],
496
+ "code_intelligence": ["tools/analysis"],
497
+ }
498
+
499
+ # Adaptations applied per source directory
500
+ DIRECTORY_ADAPTATIONS: Dict[str, List[str]] = {
501
+ "tools/agent": ["port_remap", "db_rename", "app_name_replace"],
502
+ "tools/a2a": ["port_remap", "tls_cert_path"],
503
+ "tools/audit": ["db_rename", "classification_update"],
504
+ "tools/memory": ["db_rename", "app_name_replace"],
505
+ "tools/knowledge": ["db_rename"],
506
+ "tools/monitor": ["endpoint_remap", "app_name_replace"],
507
+ "tools/compliance": ["db_rename", "classification_update", "impact_level_update"],
508
+ "tools/security": ["app_name_replace"],
509
+ "tools/mbse": ["db_rename"],
510
+ "tools/ci": ["bot_identifier_replace", "app_name_replace"],
511
+ "tools/testing": ["app_name_replace"],
512
+ "tools/dashboard": ["port_remap", "db_rename", "app_name_replace"],
513
+ "tools/infra": ["region_replace", "app_name_replace"],
514
+ "tools/maintenance": ["db_rename", "app_name_replace"],
515
+ "tools/db": ["db_rename"],
516
+ "tools/project": ["db_rename", "app_name_replace"],
517
+ # D-CHILD-1: Enterprise capability adaptations
518
+ "tools/requirements": ["db_rename", "app_name_replace"],
519
+ "tools/supply_chain": ["db_rename", "app_name_replace"],
520
+ "tools/simulation": ["db_rename", "app_name_replace"],
521
+ "tools/devsecops": ["db_rename", "app_name_replace"],
522
+ "tools/observability": ["db_rename", "app_name_replace"],
523
+ "tools/analysis": ["db_rename", "app_name_replace"],
524
+ # D-CHILD-9: Always-on infrastructure
525
+ "tools/llm": ["app_name_replace"],
526
+ "tools/compat": [],
527
+ "tools/cli": [],
528
+ "k8s": ["app_name_replace", "port_remap"],
529
+ "docker": ["app_name_replace"],
530
+ }
531
+
532
+
533
+ # ============================================================
534
+ # HELPER FUNCTIONS
535
+ # ============================================================
536
+
537
+ def _load_yaml(path: Path, default: Dict[str, Any]) -> Dict[str, Any]:
538
+ """Load YAML configuration with fallback to hardcoded defaults.
539
+
540
+ Args:
541
+ path: Path to the YAML file.
542
+ default: Default dict to return if YAML unavailable.
543
+
544
+ Returns:
545
+ Parsed YAML content or default dict.
546
+ """
547
+ if yaml is None:
548
+ logger.debug("PyYAML not installed — using defaults for %s", path.name)
549
+ return default.copy()
550
+
551
+ if not path.exists():
552
+ logger.debug("YAML file not found: %s — using defaults", path)
553
+ return default.copy()
554
+
555
+ try:
556
+ with open(path, encoding="utf-8") as f:
557
+ data = yaml.safe_load(f)
558
+ if not data or not isinstance(data, dict):
559
+ logger.warning("Empty or invalid YAML in %s — using defaults", path)
560
+ return default.copy()
561
+ logger.info("Loaded configuration from %s", path)
562
+ return data
563
+ except Exception as e:
564
+ logger.warning("Failed to load %s: %s — using defaults", path, e)
565
+ return default.copy()
566
+
567
+
568
+ def _compute_blueprint_hash(blueprint: Dict[str, Any]) -> str:
569
+ """Compute SHA-256 hash of the blueprint for integrity verification.
570
+
571
+ Excludes the hash field itself and timestamps from the computation
572
+ to ensure deterministic hashing.
573
+
574
+ Args:
575
+ blueprint: Blueprint dict (blueprint_hash field is excluded).
576
+
577
+ Returns:
578
+ Hex-encoded SHA-256 hash string.
579
+ """
580
+ hashable = {k: v for k, v in blueprint.items()
581
+ if k not in ("blueprint_hash", "generated_at")}
582
+ serialized = json.dumps(hashable, sort_keys=True, default=str)
583
+ return hashlib.sha256(serialized.encode("utf-8")).hexdigest()
584
+
585
+
586
+ def _safe_get_score(scorecard: Dict[str, Any], dimension: str, default: int = 0) -> int:
587
+ """Safely extract a dimension score from the fitness scorecard.
588
+
589
+ Args:
590
+ scorecard: Fitness scorecard dict.
591
+ dimension: Name of the scoring dimension.
592
+ default: Default value if dimension not found.
593
+
594
+ Returns:
595
+ Integer score value.
596
+ """
597
+ scores = scorecard.get("scores", {})
598
+ value = scores.get(dimension, default)
599
+ try:
600
+ return int(value)
601
+ except (TypeError, ValueError):
602
+ logger.warning("Non-integer score for %s: %s — using default %d",
603
+ dimension, value, default)
604
+ return default
605
+
606
+
607
+ # ============================================================
608
+ # CORE FUNCTIONS
609
+ # ============================================================
610
+
611
+ def resolve_capabilities(
612
+ scorecard: Dict[str, Any],
613
+ user_decisions: Dict[str, Any],
614
+ ) -> Dict[str, bool]:
615
+ """Resolve which capabilities are enabled for the child app.
616
+
617
+ Reads context/agentic/capability_registry.yaml (or uses defaults)
618
+ and maps scorecard dimensions + user decisions to a capability map.
619
+
620
+ Rules:
621
+ - core: Always on
622
+ - multi_agent: When overall_score >= 4 (hybrid/agentic range)
623
+ - compliance: When compliance_sensitivity >= 6 OR user_decisions.ato_required
624
+ - security: When overall_score >= 5 OR user_decisions.security_required
625
+ - mbse: When user_decisions.mbse_enabled
626
+ - cicd: Always on
627
+ - testing: Always on
628
+ - dashboard: When user_interaction >= 4
629
+ - knowledge: Always on
630
+ - modernization: Never (excluded from child apps)
631
+ - infra: On when cicd is on
632
+ - db: Always on
633
+ - project: Always on
634
+ - memory: Always on
635
+ - ricoas: When compliance_sensitivity >= 7 OR user_decisions.ricoas_enabled
636
+ - supply_chain: Auto-follows ricoas
637
+ - simulation: Auto-follows ricoas
638
+ - devsecops_zta: When compliance_sensitivity >= 6 OR user_decisions.devsecops_enabled
639
+ - ai_security: When overall_score >= 5 OR user_decisions.ai_security_required
640
+ - ai_governance: When user_decisions.ai_governance_enabled
641
+ - observability: When overall_score >= 4
642
+ - code_intelligence: When overall_score >= 5 OR user_decisions.code_intelligence_enabled
643
+ - govcon: Never (parent-only, D-CHILD-3)
644
+
645
+ Args:
646
+ scorecard: Fitness scorecard from agentic_fitness.py.
647
+ user_decisions: User-provided decision overrides.
648
+
649
+ Returns:
650
+ Dict mapping capability name to boolean enabled status.
651
+ """
652
+ registry = _load_yaml(CAPABILITY_REGISTRY_PATH, DEFAULT_CAPABILITY_REGISTRY)
653
+ caps_registry = registry.get("capabilities", DEFAULT_CAPABILITY_REGISTRY["capabilities"])
654
+
655
+ overall_score = scorecard.get("overall_score", 0.0)
656
+ compliance_score = _safe_get_score(scorecard, "compliance_sensitivity")
657
+ interaction_score = _safe_get_score(scorecard, "user_interaction")
658
+
659
+ capabilities: Dict[str, bool] = {}
660
+
661
+ for cap_name, cap_def in caps_registry.items():
662
+ if cap_def.get("always_on", False):
663
+ capabilities[cap_name] = True
664
+ continue
665
+
666
+ condition = cap_def.get("condition", "")
667
+
668
+ if condition == "never":
669
+ capabilities[cap_name] = False
670
+ continue
671
+
672
+ # Evaluate conditions based on scorecard and user decisions
673
+ enabled = False
674
+
675
+ if cap_name == "compliance":
676
+ enabled = (
677
+ compliance_score >= 6
678
+ or user_decisions.get("ato_required", False)
679
+ )
680
+ elif cap_name == "security":
681
+ enabled = (
682
+ overall_score >= 5
683
+ or user_decisions.get("security_required", False)
684
+ )
685
+ elif cap_name == "mbse":
686
+ enabled = user_decisions.get("mbse_enabled", False)
687
+ elif cap_name == "dashboard":
688
+ enabled = interaction_score >= 4
689
+ elif cap_name == "multi_agent":
690
+ # Multi-agent infra when overall score indicates hybrid/agentic
691
+ enabled = overall_score >= 4
692
+ elif cap_name == "infra":
693
+ # Infra is on whenever cicd is on (cicd is always on)
694
+ enabled = True
695
+ elif cap_name == "modernization":
696
+ enabled = False
697
+ # D-CHILD-1: Enterprise capability resolution
698
+ elif cap_name == "ricoas":
699
+ enabled = (
700
+ compliance_score >= 7
701
+ or user_decisions.get("ricoas_enabled", False)
702
+ )
703
+ elif cap_name == "supply_chain":
704
+ # Auto-follows RICOAS
705
+ enabled = capabilities.get("ricoas", False)
706
+ elif cap_name == "simulation":
707
+ # Auto-follows RICOAS
708
+ enabled = capabilities.get("ricoas", False)
709
+ elif cap_name == "devsecops_zta":
710
+ enabled = (
711
+ compliance_score >= 6
712
+ or user_decisions.get("devsecops_enabled", False)
713
+ )
714
+ elif cap_name == "ai_security":
715
+ enabled = (
716
+ overall_score >= 5
717
+ or user_decisions.get("ai_security_required", False)
718
+ )
719
+ elif cap_name == "ai_governance":
720
+ enabled = user_decisions.get("ai_governance_enabled", False)
721
+ elif cap_name == "observability":
722
+ enabled = overall_score >= 4
723
+ elif cap_name == "code_intelligence":
724
+ enabled = (
725
+ overall_score >= 5
726
+ or user_decisions.get("code_intelligence_enabled", False)
727
+ )
728
+ else:
729
+ # Unknown capabilities default to off unless always_on
730
+ enabled = False
731
+
732
+ capabilities[cap_name] = enabled
733
+
734
+ # Apply explicit user overrides — user can force capabilities on/off
735
+ explicit_overrides = user_decisions.get("capabilities_override", {})
736
+ for cap_name, override_value in explicit_overrides.items():
737
+ if cap_name in capabilities:
738
+ previous = capabilities[cap_name]
739
+ capabilities[cap_name] = bool(override_value)
740
+ if previous != capabilities[cap_name]:
741
+ logger.info("User override: %s %s -> %s",
742
+ cap_name, previous, capabilities[cap_name])
743
+
744
+ # Parent-only capabilities — NEVER enabled in child apps regardless of overrides
745
+ capabilities["modernization"] = False
746
+ capabilities["govcon"] = False # D-CHILD-3: GovProposal/CPMP/GovCon parent-only
747
+
748
+ logger.info("Resolved capabilities: %s",
749
+ {k: v for k, v in capabilities.items() if v})
750
+ return capabilities
751
+
752
+
753
+ def build_agent_roster(
754
+ capabilities: Dict[str, bool],
755
+ port_offset: int = 1000,
756
+ ) -> List[Dict[str, Any]]:
757
+ """Build the list of agent specifications for the child app.
758
+
759
+ 5 core agents are always included. Conditional agents are added
760
+ based on enabled capabilities.
761
+
762
+ Each agent spec includes: name, port, role, health_endpoint, agent_card_path.
763
+
764
+ Args:
765
+ capabilities: Resolved capability map from resolve_capabilities().
766
+ port_offset: Port offset from ICDEV base ports (default 1000).
767
+
768
+ Returns:
769
+ List of agent specification dicts.
770
+ """
771
+ roster: List[Dict[str, Any]] = []
772
+
773
+ # Always include core agents
774
+ for agent_def in CORE_AGENTS:
775
+ port = agent_def["base_port"] + port_offset
776
+ roster.append({
777
+ "name": agent_def["name"],
778
+ "port": port,
779
+ "role": agent_def["role"],
780
+ "health_endpoint": f"https://localhost:{port}/health",
781
+ "agent_card_path": "/.well-known/agent.json",
782
+ "core": True,
783
+ })
784
+
785
+ # Conditionally include domain agents
786
+ for agent_def in CONDITIONAL_AGENTS:
787
+ required_cap = agent_def.get("requires", "")
788
+ if capabilities.get(required_cap, False):
789
+ port = agent_def["base_port"] + port_offset
790
+ roster.append({
791
+ "name": agent_def["name"],
792
+ "port": port,
793
+ "role": agent_def["role"],
794
+ "health_endpoint": f"https://localhost:{port}/health",
795
+ "agent_card_path": "/.well-known/agent.json",
796
+ "core": False,
797
+ })
798
+ logger.debug("Added conditional agent: %s (port %d)", agent_def["name"], port)
799
+ else:
800
+ logger.debug("Skipped agent %s — capability '%s' not enabled",
801
+ agent_def["name"], required_cap)
802
+
803
+ logger.info("Agent roster: %d agents (%d core, %d conditional)",
804
+ len(roster),
805
+ sum(1 for a in roster if a.get("core")),
806
+ sum(1 for a in roster if not a.get("core")))
807
+ return roster
808
+
809
+
810
+ def build_file_manifest(blueprint: Dict[str, Any]) -> List[Dict[str, Any]]:
811
+ """Build the file manifest describing what to copy and adapt for the child app.
812
+
813
+ Does NOT scan the filesystem -- records directory patterns and adaptation
814
+ rules for the child_app_generator (Phase 3) to handle actual file copying.
815
+
816
+ Each manifest entry contains:
817
+ - source: Relative source directory or file pattern in ICDEV
818
+ - dest: Relative destination in child app
819
+ - adaptations: List of adaptation types to apply
820
+
821
+ Args:
822
+ blueprint: Partial blueprint dict with capabilities resolved.
823
+
824
+ Returns:
825
+ List of manifest entry dicts.
826
+ """
827
+ capabilities = blueprint.get("capabilities", {})
828
+ blueprint.get("app_name", "child-app")
829
+ manifest: List[Dict[str, Any]] = []
830
+
831
+ # Always-included directories
832
+ always_include = [
833
+ "core", "memory", "knowledge", "db", "project",
834
+ "infrastructure", "llm", "compat", "cli", # D-CHILD-8/9: fundamental infra
835
+ ]
836
+
837
+ # Conditionally included based on capabilities
838
+ conditional = ["multi_agent", "compliance", "security", "ai_security",
839
+ "mbse", "cicd", "testing", "dashboard", "maintenance",
840
+ # D-CHILD-1: Enterprise capabilities
841
+ "ricoas", "supply_chain", "simulation", "devsecops_zta",
842
+ "observability", "code_intelligence"]
843
+
844
+ included_caps = always_include.copy()
845
+ for cap in conditional:
846
+ if capabilities.get(cap, False):
847
+ included_caps.append(cap)
848
+
849
+ for cap_name in included_caps:
850
+ source_dirs = CAPABILITY_SOURCES.get(cap_name, [])
851
+ for source_dir in source_dirs:
852
+ adaptations = DIRECTORY_ADAPTATIONS.get(source_dir, ["app_name_replace"])
853
+ manifest.append({
854
+ "source": source_dir,
855
+ "dest": source_dir,
856
+ "capability": cap_name,
857
+ "adaptations": adaptations,
858
+ })
859
+
860
+ # Always include top-level config files
861
+ config_files = [
862
+ {
863
+ "source": "args/project_defaults.yaml",
864
+ "dest": "args/project_defaults.yaml",
865
+ "capability": "core",
866
+ "adaptations": ["app_name_replace", "port_remap"],
867
+ },
868
+ {
869
+ "source": "args/agent_config.yaml",
870
+ "dest": "args/agent_config.yaml",
871
+ "capability": "core",
872
+ "adaptations": ["port_remap", "agent_filter"],
873
+ },
874
+ {
875
+ "source": "args/monitoring_config.yaml",
876
+ "dest": "args/monitoring_config.yaml",
877
+ "capability": "knowledge",
878
+ "adaptations": ["endpoint_remap", "app_name_replace"],
879
+ },
880
+ ]
881
+
882
+ # Conditionally include compliance/security config files
883
+ if capabilities.get("compliance", False):
884
+ config_files.extend([
885
+ {
886
+ "source": "args/cui_markings.yaml",
887
+ "dest": "args/cui_markings.yaml",
888
+ "capability": "compliance",
889
+ "adaptations": ["classification_update"],
890
+ },
891
+ {
892
+ "source": "args/security_gates.yaml",
893
+ "dest": "args/security_gates.yaml",
894
+ "capability": "compliance",
895
+ "adaptations": ["threshold_adjust"],
896
+ },
897
+ ])
898
+
899
+ manifest.extend(config_files)
900
+
901
+ # Goals directory — include essential goals that map to enabled capabilities
902
+ goals_to_include = _resolve_goals_for_capabilities(capabilities)
903
+ for goal_name in goals_to_include:
904
+ manifest.append({
905
+ "source": f"goals/{goal_name}.md",
906
+ "dest": f"goals/{goal_name}.md",
907
+ "capability": "core",
908
+ "adaptations": ["app_name_replace"],
909
+ })
910
+
911
+ # Always include goals/manifest.md
912
+ manifest.append({
913
+ "source": "goals/manifest.md",
914
+ "dest": "goals/manifest.md",
915
+ "capability": "core",
916
+ "adaptations": ["goal_filter", "app_name_replace"],
917
+ })
918
+
919
+ # Context files
920
+ manifest.append({
921
+ "source": "context/",
922
+ "dest": "context/",
923
+ "capability": "core",
924
+ "adaptations": ["selective_copy"],
925
+ })
926
+
927
+ # Hard prompts
928
+ manifest.append({
929
+ "source": "hardprompts/",
930
+ "dest": "hardprompts/",
931
+ "capability": "core",
932
+ "adaptations": ["selective_copy"],
933
+ })
934
+
935
+ logger.info("File manifest: %d entries for %d capabilities",
936
+ len(manifest), len(included_caps))
937
+ return manifest
938
+
939
+
940
+ def _resolve_goals_for_capabilities(
941
+ capabilities: Dict[str, bool],
942
+ ) -> List[str]:
943
+ """Determine which essential goals to include based on capabilities.
944
+
945
+ Args:
946
+ capabilities: Resolved capability map.
947
+
948
+ Returns:
949
+ List of goal file names (without extension).
950
+ """
951
+ # Mapping from goal to required capability (None = always include)
952
+ goal_capability_map: Dict[str, Optional[str]] = {
953
+ "build_app": None,
954
+ "tdd_workflow": None,
955
+ "compliance_workflow": "compliance",
956
+ "security_scan": "security",
957
+ "deploy_workflow": "cicd",
958
+ "monitoring": None,
959
+ "self_healing": None,
960
+ "agent_management": None,
961
+ # D-CHILD-1: Enterprise-grade goal mappings
962
+ "integration_testing": "testing",
963
+ "maintenance_audit": None, # Always useful
964
+ "requirements_intake": "ricoas",
965
+ "boundary_supply_chain": "supply_chain",
966
+ "simulation_engine": "simulation",
967
+ "devsecops_workflow": "devsecops_zta",
968
+ "zero_trust_architecture": "devsecops_zta",
969
+ "mosa_workflow": "compliance",
970
+ "observability_traceability_xai": "observability",
971
+ "ai_transparency": "ai_security",
972
+ "ai_accountability": "ai_security",
973
+ "owasp_agentic_security": "ai_security",
974
+ "code_intelligence": "code_intelligence",
975
+ }
976
+
977
+ goals: List[str] = []
978
+ for goal_name, required_cap in goal_capability_map.items():
979
+ if required_cap is None or capabilities.get(required_cap, False):
980
+ goals.append(goal_name)
981
+
982
+ return goals
983
+
984
+
985
+ def resolve_csp_mcp_servers(
986
+ cloud_config: Dict[str, Any],
987
+ capabilities: Dict[str, bool],
988
+ ) -> List[Dict[str, Any]]:
989
+ """Resolve which CSP MCP servers to include based on cloud provider and capabilities.
990
+
991
+ Reads context/agentic/csp_mcp_registry.yaml (or uses defaults) and selects
992
+ servers based on the target cloud provider and enabled capabilities.
993
+
994
+ Args:
995
+ cloud_config: Cloud provider configuration from the blueprint.
996
+ capabilities: Resolved capability map.
997
+
998
+ Returns:
999
+ List of MCP server config dicts for .mcp.json generation.
1000
+ """
1001
+ registry = _load_yaml(CSP_REGISTRY_PATH, DEFAULT_CSP_REGISTRY)
1002
+ providers = registry.get("providers", DEFAULT_CSP_REGISTRY["providers"])
1003
+
1004
+ provider_name = cloud_config.get("provider", "aws")
1005
+ provider_def = providers.get(provider_name)
1006
+
1007
+ if not provider_def:
1008
+ logger.warning("Unknown cloud provider '%s' — falling back to aws", provider_name)
1009
+ provider_def = providers.get("aws", {})
1010
+ provider_name = "aws"
1011
+
1012
+ mcp_servers_def = provider_def.get("mcp_servers", {})
1013
+ capability_mapping = registry.get("capability_mapping", {})
1014
+ selected_servers: List[Dict[str, Any]] = []
1015
+ included_categories: set = set()
1016
+
1017
+ # Determine which server categories to include based on capabilities
1018
+ # Always include "core" and "docs" categories
1019
+ included_categories.add("core")
1020
+ included_categories.add("docs")
1021
+
1022
+ for cap_name, cap_enabled in capabilities.items():
1023
+ if not cap_enabled:
1024
+ continue
1025
+ cap_map = capability_mapping.get(cap_name, {})
1026
+ provider_categories = cap_map.get(provider_name, [])
1027
+ for cat in provider_categories:
1028
+ included_categories.add(cat)
1029
+
1030
+ # Iterate through server categories and collect matching servers
1031
+ for category, server_list in mcp_servers_def.items():
1032
+ if category not in included_categories:
1033
+ continue
1034
+ # Each category maps to a list of server defs
1035
+ if not isinstance(server_list, list):
1036
+ server_list = [server_list]
1037
+ for server_def in server_list:
1038
+ if isinstance(server_def, dict):
1039
+ server_name = server_def.get("name", category)
1040
+ description = server_def.get("description", "")
1041
+ else:
1042
+ server_name = str(server_def)
1043
+ description = ""
1044
+ selected_servers.append({
1045
+ "name": server_name,
1046
+ "description": description,
1047
+ "provider": provider_name,
1048
+ "category": category,
1049
+ })
1050
+
1051
+ logger.info("CSP MCP servers for %s: %d selected from %d categories",
1052
+ provider_name,
1053
+ len(selected_servers),
1054
+ len(included_categories))
1055
+ return selected_servers
1056
+
1057
+
1058
+ # ============================================================
1059
+ # MAIN ORCHESTRATOR
1060
+ # ============================================================
1061
+
1062
+ def generate_blueprint(
1063
+ scorecard: Dict[str, Any],
1064
+ user_decisions: Dict[str, Any],
1065
+ app_name: str,
1066
+ port_offset: int = 1000,
1067
+ cloud_provider: str = "aws",
1068
+ cloud_region: str = "us-gov-west-1",
1069
+ govcloud: bool = False,
1070
+ parent_callback_url: Optional[str] = None,
1071
+ impact_level: str = "IL4",
1072
+ ) -> Dict[str, Any]:
1073
+ """Generate a complete deployment blueprint from fitness scorecard and user decisions.
1074
+
1075
+ This is the main entry point that orchestrates all sub-functions to produce
1076
+ a comprehensive blueprint JSON for downstream child app generators.
1077
+
1078
+ Args:
1079
+ scorecard: Fitness scorecard from agentic_fitness.py (JSON dict).
1080
+ user_decisions: User-provided decisions and overrides.
1081
+ app_name: Name for the child application.
1082
+ port_offset: Port offset from ICDEV base ports (default 1000).
1083
+ cloud_provider: Target cloud provider (aws, gcp, azure, oracle, ibm).
1084
+ cloud_region: Target deployment region.
1085
+ govcloud: Whether to use GovCloud partition.
1086
+ parent_callback_url: Optional URL for parent ICDEV callback.
1087
+ impact_level: DoD Impact Level (IL2, IL4, IL5, IL6).
1088
+
1089
+ Returns:
1090
+ Complete blueprint dict ready for serialization and downstream consumption.
1091
+ """
1092
+ blueprint_id = str(uuid.uuid4())
1093
+ logger.info("Generating blueprint %s for app '%s'", blueprint_id, app_name)
1094
+
1095
+ # Step 1: Resolve capabilities from scorecard + user decisions
1096
+ capabilities = resolve_capabilities(scorecard, user_decisions)
1097
+
1098
+ # Step 2: Build cloud provider configuration
1099
+ csp_registry = _load_yaml(CSP_REGISTRY_PATH, DEFAULT_CSP_REGISTRY)
1100
+ provider_data = csp_registry.get("providers", {}).get(cloud_provider, {})
1101
+ knowledge_bases = provider_data.get("knowledge_bases", [])
1102
+
1103
+ cloud_config = {
1104
+ "provider": cloud_provider,
1105
+ "region": cloud_region,
1106
+ "govcloud": govcloud,
1107
+ "knowledge_bases": knowledge_bases,
1108
+ "mcp_servers": [], # Populated below
1109
+ }
1110
+
1111
+ # Step 3: Resolve CSP MCP servers
1112
+ csp_servers = resolve_csp_mcp_servers(cloud_config, capabilities)
1113
+ cloud_config["mcp_servers"] = [s["name"] for s in csp_servers]
1114
+
1115
+ # Step 4: Build agent roster
1116
+ agents = build_agent_roster(capabilities, port_offset)
1117
+
1118
+ # Step 5: Determine classification from impact level
1119
+ demo_mode = user_decisions.get("demo_mode", False)
1120
+ classification_map = {
1121
+ "IL2": "PUBLIC",
1122
+ "IL4": "CUI",
1123
+ "IL5": "CUI",
1124
+ "IL6": "SECRET",
1125
+ }
1126
+ if demo_mode:
1127
+ # Demo apps are always PUBLIC/IL2 to avoid classification violations
1128
+ classification = "PUBLIC"
1129
+ impact_level = "IL2"
1130
+ logger.info("Demo mode: forcing classification=PUBLIC, impact_level=IL2")
1131
+ else:
1132
+ classification = classification_map.get(impact_level, "CUI")
1133
+
1134
+ # Step 6: Build DB, memory, and CI/CD configs
1135
+ db_config = {
1136
+ "engine": "sqlite",
1137
+ "name": f"{app_name}.db",
1138
+ "path": f"data/{app_name}.db",
1139
+ "initial_tables": "minimal",
1140
+ "migration_supported": True,
1141
+ }
1142
+
1143
+ memory_config = {
1144
+ "memory_md": True,
1145
+ "daily_logs": True,
1146
+ "sqlite_db": True,
1147
+ "semantic_search": True,
1148
+ "embeddings": True,
1149
+ }
1150
+
1151
+ cicd_config = {
1152
+ "github": True,
1153
+ "gitlab": True,
1154
+ "webhooks": True,
1155
+ "polling": True,
1156
+ "slash_commands": True,
1157
+ "bot_identifier": f"[{app_name.upper()}-BOT]",
1158
+ }
1159
+
1160
+ # Step 7: Resolve goals
1161
+ goals_config = _resolve_goals_for_capabilities(capabilities)
1162
+
1163
+ # Step 8: Build parent callback config
1164
+ parent_callback = {
1165
+ "enabled": parent_callback_url is not None,
1166
+ "url": parent_callback_url or "",
1167
+ "auth": "bearer_token" if parent_callback_url else "none",
1168
+ }
1169
+
1170
+ # Step 9: ATLAS config — fitness step is disabled in child apps
1171
+ atlas_config = {
1172
+ "fitness_step": False,
1173
+ "model_phase": capabilities.get("mbse", False),
1174
+ "phases": ["architect", "trace", "link", "assemble", "stress_test"],
1175
+ }
1176
+ if atlas_config["model_phase"]:
1177
+ atlas_config["phases"].insert(0, "model")
1178
+
1179
+ # Step 10: Grandchild prevention — prevents recursive child app generation
1180
+ grandchild_prevention = {
1181
+ "enabled": True,
1182
+ "config_flag": True,
1183
+ "scaffolder_strip": True,
1184
+ "claude_md_doc": True,
1185
+ "description": (
1186
+ "Child apps MUST NOT generate their own child apps. "
1187
+ "The agentic fitness assessor and app blueprint engine are "
1188
+ "stripped from child app scaffolds. CLAUDE.md documents this restriction."
1189
+ ),
1190
+ }
1191
+
1192
+ # Assemble the blueprint (without hash — hash computed after assembly)
1193
+ blueprint: Dict[str, Any] = {
1194
+ "blueprint_id": blueprint_id,
1195
+ "app_name": app_name,
1196
+ "classification": classification,
1197
+ "impact_level": impact_level,
1198
+ "fitness_scorecard": {
1199
+ "component": scorecard.get("component", "unknown"),
1200
+ "overall_score": scorecard.get("overall_score", 0.0),
1201
+ "scores": scorecard.get("scores", {}),
1202
+ "architecture": scorecard.get("recommendations", {}).get(
1203
+ "architecture", "traditional"
1204
+ ),
1205
+ },
1206
+ "capabilities": capabilities,
1207
+ "agents": agents,
1208
+ "cloud_provider": cloud_config,
1209
+ "csp_mcp_servers": csp_servers,
1210
+ "db_config": db_config,
1211
+ "memory_config": memory_config,
1212
+ "cicd_config": cicd_config,
1213
+ "goals_config": goals_config,
1214
+ "parent_callback": parent_callback,
1215
+ "atlas_config": atlas_config,
1216
+ "grandchild_prevention": grandchild_prevention,
1217
+ "file_manifest": [], # Populated below
1218
+ "generated_at": datetime.now(tz=__import__('datetime').timezone.utc).isoformat(),
1219
+ "demo_mode": demo_mode,
1220
+ "generated_by": "icdev/app_blueprint",
1221
+ "blueprint_hash": "", # Computed below
1222
+ }
1223
+
1224
+ # Step 11: Build file manifest (needs partial blueprint for capability reference)
1225
+ blueprint["file_manifest"] = build_file_manifest(blueprint)
1226
+
1227
+ # Step 12: Compute integrity hash
1228
+ blueprint["blueprint_hash"] = _compute_blueprint_hash(blueprint)
1229
+
1230
+ # Step 13: Audit trail
1231
+ _log_blueprint_audit(blueprint)
1232
+
1233
+ logger.info(
1234
+ "Blueprint %s generated: %d capabilities, %d agents, %d manifest entries, hash=%s",
1235
+ blueprint_id,
1236
+ sum(1 for v in capabilities.values() if v),
1237
+ len(agents),
1238
+ len(blueprint["file_manifest"]),
1239
+ blueprint["blueprint_hash"][:16] + "...",
1240
+ )
1241
+
1242
+ return blueprint
1243
+
1244
+
1245
+ def _log_blueprint_audit(blueprint: Dict[str, Any]) -> None:
1246
+ """Log blueprint generation to audit trail.
1247
+
1248
+ Args:
1249
+ blueprint: Generated blueprint dict.
1250
+ """
1251
+ try:
1252
+ audit_log_event(
1253
+ event_type="blueprint.generated",
1254
+ actor="builder/app_blueprint",
1255
+ action=f"Generated blueprint for '{blueprint.get('app_name', 'unknown')}'",
1256
+ project_id=blueprint.get("blueprint_id", ""),
1257
+ details=json.dumps({
1258
+ "blueprint_id": blueprint.get("blueprint_id"),
1259
+ "app_name": blueprint.get("app_name"),
1260
+ "impact_level": blueprint.get("impact_level"),
1261
+ "capabilities_enabled": sum(
1262
+ 1 for v in blueprint.get("capabilities", {}).values() if v
1263
+ ),
1264
+ "agent_count": len(blueprint.get("agents", [])),
1265
+ "manifest_entries": len(blueprint.get("file_manifest", [])),
1266
+ "cloud_provider": blueprint.get("cloud_provider", {}).get("provider"),
1267
+ "blueprint_hash": blueprint.get("blueprint_hash", "")[:32],
1268
+ }),
1269
+ )
1270
+ except Exception as e:
1271
+ logger.debug("Audit log failed: %s", e)
1272
+
1273
+
1274
+ def _persist_blueprint(blueprint: Dict[str, Any]) -> bool:
1275
+ """Persist blueprint to the ICDEV database.
1276
+
1277
+ Args:
1278
+ blueprint: Generated blueprint dict.
1279
+
1280
+ Returns:
1281
+ True if persisted successfully, False otherwise.
1282
+ """
1283
+ if not DB_PATH.exists():
1284
+ logger.debug("Database not found at %s — skipping persistence", DB_PATH)
1285
+ return False
1286
+
1287
+ try:
1288
+ import sqlite3
1289
+ conn = sqlite3.connect(str(DB_PATH))
1290
+ conn.execute(
1291
+ """INSERT OR REPLACE INTO app_blueprints
1292
+ (id, app_name, classification, impact_level, capabilities,
1293
+ agents, cloud_provider, blueprint_hash, generated_at, full_blueprint)
1294
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
1295
+ (
1296
+ blueprint.get("blueprint_id"),
1297
+ blueprint.get("app_name"),
1298
+ blueprint.get("classification"),
1299
+ blueprint.get("impact_level"),
1300
+ json.dumps(blueprint.get("capabilities", {})),
1301
+ json.dumps(blueprint.get("agents", [])),
1302
+ blueprint.get("cloud_provider", {}).get("provider", "aws"),
1303
+ blueprint.get("blueprint_hash", ""),
1304
+ blueprint.get("generated_at", ""),
1305
+ json.dumps(blueprint, default=str),
1306
+ ),
1307
+ )
1308
+ conn.commit()
1309
+ conn.close()
1310
+ logger.info("Blueprint %s persisted to database", blueprint.get("blueprint_id"))
1311
+ return True
1312
+ except Exception as e:
1313
+ logger.warning("Blueprint DB persistence failed: %s", e)
1314
+ return False
1315
+
1316
+
1317
+ def _load_scorecard_file(path: str) -> Dict[str, Any]:
1318
+ """Load a fitness scorecard from a JSON file.
1319
+
1320
+ Args:
1321
+ path: Path to the scorecard JSON file.
1322
+
1323
+ Returns:
1324
+ Parsed scorecard dict.
1325
+
1326
+ Raises:
1327
+ FileNotFoundError: If the file does not exist.
1328
+ json.JSONDecodeError: If the file is not valid JSON.
1329
+ """
1330
+ scorecard_path = Path(path)
1331
+ if not scorecard_path.exists():
1332
+ raise FileNotFoundError(f"Fitness scorecard not found: {path}")
1333
+
1334
+ with open(scorecard_path, encoding="utf-8") as f:
1335
+ data = json.load(f)
1336
+
1337
+ if not isinstance(data, dict):
1338
+ raise ValueError(f"Scorecard must be a JSON object, got {type(data).__name__}")
1339
+
1340
+ # Validate minimal required fields
1341
+ if "scores" not in data and "overall_score" not in data:
1342
+ logger.warning("Scorecard missing 'scores' and 'overall_score' fields")
1343
+
1344
+ return data
1345
+
1346
+
1347
+ def _parse_user_decisions(raw: str) -> Dict[str, Any]:
1348
+ """Parse user decisions from a JSON string or file path.
1349
+
1350
+ Args:
1351
+ raw: JSON string or path to a JSON file.
1352
+
1353
+ Returns:
1354
+ Parsed user decisions dict.
1355
+
1356
+ Raises:
1357
+ ValueError: If the input cannot be parsed as JSON.
1358
+ """
1359
+ # Try as file path first
1360
+ path = Path(raw)
1361
+ if path.exists() and path.is_file():
1362
+ try:
1363
+ with open(path, encoding="utf-8") as f:
1364
+ data = json.load(f)
1365
+ if isinstance(data, dict):
1366
+ return data
1367
+ except (json.JSONDecodeError, OSError):
1368
+ pass # Fall through to try as raw JSON string
1369
+
1370
+ # Try as raw JSON string
1371
+ try:
1372
+ data = json.loads(raw)
1373
+ if isinstance(data, dict):
1374
+ return data
1375
+ raise ValueError(f"User decisions must be a JSON object, got {type(data).__name__}")
1376
+ except json.JSONDecodeError as e:
1377
+ raise ValueError(f"Failed to parse user decisions as JSON: {e}") from e
1378
+
1379
+
1380
+ # ============================================================
1381
+ # CLI ENTRY POINT
1382
+ # ============================================================
1383
+
1384
+ def main():
1385
+ """CLI entry point for the App Blueprint Engine."""
1386
+ logging.basicConfig(
1387
+ level=logging.INFO,
1388
+ format="%(asctime)s [%(name)s] %(levelname)s: %(message)s",
1389
+ )
1390
+
1391
+ parser = argparse.ArgumentParser(
1392
+ description="App Blueprint Engine - generate deployment blueprint from fitness scorecard",
1393
+ )
1394
+ parser.add_argument(
1395
+ "--fitness-scorecard",
1396
+ required=True,
1397
+ help="Path to fitness scorecard JSON file (output of agentic_fitness.py)",
1398
+ )
1399
+ parser.add_argument(
1400
+ "--user-decisions",
1401
+ required=True,
1402
+ help='User decisions as JSON string or path to JSON file '
1403
+ '(e.g., \'{"ato_required": true, "mbse_enabled": false}\')',
1404
+ )
1405
+ parser.add_argument(
1406
+ "--app-name",
1407
+ required=True,
1408
+ help="Name for the child application",
1409
+ )
1410
+ parser.add_argument(
1411
+ "--port-offset",
1412
+ type=int,
1413
+ default=1000,
1414
+ help="Port offset from ICDEV base ports (default: 1000)",
1415
+ )
1416
+ parser.add_argument(
1417
+ "--cloud-provider",
1418
+ choices=["aws", "gcp", "azure", "oracle", "ibm"],
1419
+ default="aws",
1420
+ help="Target cloud service provider (default: aws)",
1421
+ )
1422
+ parser.add_argument(
1423
+ "--cloud-region",
1424
+ default="us-gov-west-1",
1425
+ help="Target deployment region (default: us-gov-west-1)",
1426
+ )
1427
+ parser.add_argument(
1428
+ "--govcloud",
1429
+ action="store_true",
1430
+ help="Use GovCloud partition",
1431
+ )
1432
+ parser.add_argument(
1433
+ "--parent-callback-url",
1434
+ default=None,
1435
+ help="URL for parent ICDEV callback (optional)",
1436
+ )
1437
+ parser.add_argument(
1438
+ "--impact-level",
1439
+ choices=["IL2", "IL4", "IL5", "IL6"],
1440
+ default="IL4",
1441
+ help="DoD Impact Level (default: IL4)",
1442
+ )
1443
+ parser.add_argument(
1444
+ "--json",
1445
+ action="store_true",
1446
+ dest="json_output",
1447
+ help="Output blueprint as JSON",
1448
+ )
1449
+ parser.add_argument(
1450
+ "--output",
1451
+ default=None,
1452
+ help="Write blueprint JSON to file path",
1453
+ )
1454
+ parser.add_argument(
1455
+ "--persist",
1456
+ action="store_true",
1457
+ help="Persist blueprint to ICDEV database",
1458
+ )
1459
+ parser.add_argument(
1460
+ "--verbose", "-v",
1461
+ action="store_true",
1462
+ help="Enable debug logging",
1463
+ )
1464
+ parser.add_argument(
1465
+ "--demo",
1466
+ action="store_true",
1467
+ help="Mark child app as DEMONSTRATION ONLY (PUBLIC classification, IL2, banners)",
1468
+ )
1469
+
1470
+ args = parser.parse_args()
1471
+
1472
+ if args.verbose:
1473
+ logging.getLogger().setLevel(logging.DEBUG)
1474
+
1475
+ # Load inputs
1476
+ try:
1477
+ scorecard = _load_scorecard_file(args.fitness_scorecard)
1478
+ except (FileNotFoundError, json.JSONDecodeError, ValueError) as e:
1479
+ logger.error("Failed to load fitness scorecard: %s", e)
1480
+ sys.exit(1)
1481
+
1482
+ try:
1483
+ user_decisions = _parse_user_decisions(args.user_decisions)
1484
+ except ValueError as e:
1485
+ logger.error("Failed to parse user decisions: %s", e)
1486
+ sys.exit(1)
1487
+
1488
+ # Merge --demo flag into user_decisions so generate_blueprint sees it
1489
+ if args.demo:
1490
+ user_decisions["demo_mode"] = True
1491
+
1492
+ # Generate blueprint
1493
+ blueprint = generate_blueprint(
1494
+ scorecard=scorecard,
1495
+ user_decisions=user_decisions,
1496
+ app_name=args.app_name,
1497
+ port_offset=args.port_offset,
1498
+ cloud_provider=args.cloud_provider,
1499
+ cloud_region=args.cloud_region,
1500
+ govcloud=args.govcloud,
1501
+ parent_callback_url=args.parent_callback_url,
1502
+ impact_level=args.impact_level,
1503
+ )
1504
+
1505
+ # Persist to DB if requested
1506
+ if args.persist:
1507
+ success = _persist_blueprint(blueprint)
1508
+ if not success:
1509
+ logger.warning("Blueprint persistence requested but failed")
1510
+
1511
+ # Output
1512
+ if args.json_output or args.output:
1513
+ output_json = json.dumps(blueprint, indent=2, default=str)
1514
+
1515
+ if args.output:
1516
+ output_path = Path(args.output)
1517
+ output_path.parent.mkdir(parents=True, exist_ok=True)
1518
+ output_path.write_text(output_json, encoding="utf-8")
1519
+ logger.info("Blueprint written to %s", args.output)
1520
+
1521
+ if args.json_output:
1522
+ print(output_json)
1523
+ else:
1524
+ # Human-readable summary
1525
+ _print_blueprint_summary(blueprint)
1526
+
1527
+
1528
+ def _print_blueprint_summary(blueprint: Dict[str, Any]) -> None:
1529
+ """Print a human-readable summary of the blueprint.
1530
+
1531
+ Args:
1532
+ blueprint: Generated blueprint dict.
1533
+ """
1534
+ caps = blueprint.get("capabilities", {})
1535
+ agents = blueprint.get("agents", [])
1536
+ manifest = blueprint.get("file_manifest", [])
1537
+ cloud = blueprint.get("cloud_provider", {})
1538
+ scorecard = blueprint.get("fitness_scorecard", {})
1539
+
1540
+ print(f"\n{'='*70}")
1541
+ print(f" APP BLUEPRINT: {blueprint.get('app_name', 'unknown')}")
1542
+ print(f"{'='*70}")
1543
+ print(f" Blueprint ID: {blueprint.get('blueprint_id', 'N/A')}")
1544
+ print(f" Classification: {blueprint.get('classification', 'N/A')}")
1545
+ print(f" Impact Level: {blueprint.get('impact_level', 'N/A')}")
1546
+ print(f" Architecture: {scorecard.get('architecture', 'N/A').upper()}")
1547
+ print(f" Overall Score: {scorecard.get('overall_score', 0.0):.2f} / 10.0")
1548
+ print(f" Hash: {blueprint.get('blueprint_hash', 'N/A')[:32]}...")
1549
+ print(f"{'='*70}")
1550
+
1551
+ print(f"\n Capabilities ({sum(1 for v in caps.values() if v)} enabled):")
1552
+ for cap_name, enabled in sorted(caps.items()):
1553
+ status = "[ON] " if enabled else "[OFF]"
1554
+ print(f" {status} {cap_name}")
1555
+
1556
+ print(f"\n Agents ({len(agents)}):")
1557
+ for agent in agents:
1558
+ core_tag = " (core)" if agent.get("core") else ""
1559
+ print(f" - {agent['name']:<15s} port {agent['port']}{core_tag}")
1560
+
1561
+ print("\n Cloud Provider:")
1562
+ print(f" Provider: {cloud.get('provider', 'N/A')}")
1563
+ print(f" Region: {cloud.get('region', 'N/A')}")
1564
+ print(f" GovCloud: {cloud.get('govcloud', False)}")
1565
+ mcp_names = cloud.get("mcp_servers", [])
1566
+ if mcp_names:
1567
+ print(f" MCP Servers: {', '.join(mcp_names)}")
1568
+
1569
+ print(f"\n Goals ({len(blueprint.get('goals_config', []))}):")
1570
+ for goal in blueprint.get("goals_config", []):
1571
+ print(f" - {goal}")
1572
+
1573
+ print(f"\n File Manifest: {len(manifest)} entries")
1574
+ print(f" Grandchild Prevention: "
1575
+ f"{'ENABLED' if blueprint.get('grandchild_prevention', {}).get('enabled') else 'DISABLED'}")
1576
+ print(f" Parent Callback: "
1577
+ f"{'ENABLED' if blueprint.get('parent_callback', {}).get('enabled') else 'DISABLED'}")
1578
+ print(f"\n Generated: {blueprint.get('generated_at', 'N/A')}")
1579
+ print(f"{'='*70}\n")
1580
+
1581
+
1582
+ if __name__ == "__main__":
1583
+ main()