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,950 @@
1
+ #!/usr/bin/env python3
2
+ # CUI // SP-CTI
3
+ """BDD Test Writer — generates Cucumber/Gherkin feature files and step definitions.
4
+
5
+ Implements:
6
+ - generate_feature(project_path, requirement_text) -> .feature file
7
+ - generate_steps(project_path, feature_file, language) -> step definition file
8
+ - Supports Python (behave), Java (Cucumber-JVM), Go (godog), TypeScript (@cucumber/cucumber),
9
+ C# (SpecFlow), and Rust (cucumber-rs)
10
+ - Applies CUI header to generated files
11
+ - Logs audit trail event (test_written)
12
+ - CLI: python tools/builder/test_writer.py --project-path PATH --requirement "User can login" --language python
13
+ """
14
+
15
+ import argparse
16
+ import json
17
+ import re
18
+ import sqlite3
19
+ from pathlib import Path
20
+ from typing import Dict, List, Optional, Tuple
21
+ from icdev._paths import get_project_root
22
+
23
+ BASE_DIR = get_project_root()
24
+ DB_PATH = BASE_DIR / "data" / "icdev.db"
25
+
26
+ # CUI header applied to all generated files
27
+ CUI_HEADER = """\
28
+ # CUI // SP-CTI
29
+ # Controlled by: Department of Defense
30
+ # CUI Category: CTI
31
+ # Distribution: D
32
+ # POC: ICDEV System Administrator
33
+ """
34
+
35
+ CUI_HEADER_GHERKIN = """\
36
+ # CUI // SP-CTI
37
+ # Controlled by: Department of Defense
38
+ # CUI Category: CTI
39
+ # Distribution: D
40
+ # POC: ICDEV System Administrator
41
+ """
42
+
43
+ CUI_HEADER_C_STYLE = """\
44
+ // CUI // SP-CTI
45
+ // Controlled by: Department of Defense
46
+ // CUI Category: CTI
47
+ // Distribution: D
48
+ // POC: ICDEV System Administrator
49
+ """
50
+
51
+ CUI_HEADER_RUST = """\
52
+ // CUI // SP-CTI
53
+ // Controlled by: Department of Defense
54
+ // CUI Category: CTI
55
+ // Distribution: D
56
+ // POC: ICDEV System Administrator
57
+ """
58
+
59
+
60
+ def _slugify(text: str) -> str:
61
+ """Convert text to a filename-safe slug."""
62
+ slug = re.sub(r"[^\w\s-]", "", text.lower().strip())
63
+ slug = re.sub(r"[\s_-]+", "_", slug)
64
+ return slug[:80]
65
+
66
+
67
+ def _extract_actions(requirement: str) -> List[Dict[str, str]]:
68
+ """Parse a requirement into Given/When/Then steps.
69
+
70
+ Uses simple heuristics to decompose a requirement into BDD steps.
71
+ """
72
+ req_lower = requirement.lower().strip()
73
+ steps = []
74
+
75
+ # Common patterns for Given (preconditions)
76
+ given_patterns = [
77
+ (r"(logged in|authenticated|signed in)", "the user is authenticated"),
78
+ (r"(admin|administrator)", "the user has admin privileges"),
79
+ (r"(database|db|data)", "the system has existing data"),
80
+ (r"(api|endpoint|server)", "the API server is running"),
81
+ (r"(page|screen|form)", "the user is on the relevant page"),
82
+ ]
83
+
84
+ # Common patterns for When (actions)
85
+ when_patterns = [
86
+ (r"(create|add|new|register)", "create"),
87
+ (r"(update|edit|modify|change)", "update"),
88
+ (r"(delete|remove|destroy)", "delete"),
89
+ (r"(login|sign in|authenticate)", "login"),
90
+ (r"(search|find|query|filter)", "search"),
91
+ (r"(upload|import)", "upload"),
92
+ (r"(download|export)", "download"),
93
+ (r"(view|list|display|show|see)", "view"),
94
+ (r"(submit|send|post)", "submit"),
95
+ ]
96
+
97
+ # Determine Given
98
+ given_text = "the system is in its default state"
99
+ for pattern, text in given_patterns:
100
+ if re.search(pattern, req_lower):
101
+ given_text = text
102
+ break
103
+
104
+ # Determine When
105
+ action_text = f"the user performs the action: {requirement}"
106
+ action_verb = "perform"
107
+ for pattern, verb in when_patterns:
108
+ if re.search(pattern, req_lower):
109
+ action_verb = verb
110
+ action_text = f"the user {verb}s the requested item"
111
+ break
112
+
113
+ # Determine Then
114
+ then_text = "the action completes successfully"
115
+ if action_verb in ("create", "register"):
116
+ then_text = "the new item is created and visible"
117
+ elif action_verb in ("update", "edit"):
118
+ then_text = "the item is updated with the new values"
119
+ elif action_verb in ("delete", "remove"):
120
+ then_text = "the item is removed from the system"
121
+ elif action_verb in ("login", "authenticate"):
122
+ then_text = "the user is redirected to the dashboard"
123
+ elif action_verb in ("search", "find", "filter"):
124
+ then_text = "the matching results are displayed"
125
+ elif action_verb in ("view", "list", "display"):
126
+ then_text = "the requested data is displayed"
127
+
128
+ steps.append({"type": "Given", "text": given_text})
129
+ steps.append({"type": "When", "text": action_text})
130
+ steps.append({"type": "Then", "text": then_text})
131
+
132
+ return steps
133
+
134
+
135
+ def generate_feature(
136
+ project_path: str,
137
+ requirement_text: str,
138
+ feature_name: Optional[str] = None,
139
+ tags: Optional[List[str]] = None,
140
+ ) -> str:
141
+ """Generate a Gherkin .feature file from a requirement.
142
+
143
+ Args:
144
+ project_path: Root path of the project.
145
+ requirement_text: The requirement to generate tests for.
146
+ feature_name: Optional feature name (auto-generated from requirement if not provided).
147
+ tags: Optional list of Gherkin tags (e.g., ["@smoke", "@auth"]).
148
+
149
+ Returns:
150
+ Path to the generated .feature file.
151
+ """
152
+ project = Path(project_path)
153
+ features_dir = project / "tests" / "features"
154
+ features_dir.mkdir(parents=True, exist_ok=True)
155
+
156
+ # Generate feature name and slug
157
+ if not feature_name:
158
+ feature_name = requirement_text.strip().rstrip(".")
159
+ slug = _slugify(feature_name)
160
+ feature_file = features_dir / f"{slug}.feature"
161
+
162
+ # Extract BDD steps from requirement
163
+ steps = _extract_actions(requirement_text)
164
+
165
+ # Build tag line
166
+ tag_line = ""
167
+ if tags:
168
+ tag_line = " ".join(f"@{t.lstrip('@')}" for t in tags) + "\n"
169
+
170
+ # Build the feature content
171
+ lines = [CUI_HEADER_GHERKIN]
172
+ lines.append(f"{tag_line}Feature: {feature_name}")
173
+ lines.append(" As a user")
174
+ lines.append(f" I want to {requirement_text.lower().strip()}")
175
+ lines.append(" So that the system meets the specified requirement")
176
+ lines.append("")
177
+ lines.append(f" Scenario: {feature_name}")
178
+
179
+ for step in steps:
180
+ lines.append(f" {step['type']} {step['text']}")
181
+
182
+ lines.append("")
183
+ lines.append(f" Scenario: {feature_name} - error handling")
184
+ lines.append(f" Given {steps[0]['text']}")
185
+ lines.append(" When the user provides invalid input")
186
+ lines.append(" Then an appropriate error message is displayed")
187
+ lines.append(" And the system remains in a consistent state")
188
+ lines.append("")
189
+
190
+ # Auto-append security scenarios for API specs (D-EPSEC-6)
191
+ api_keywords = ("api", "endpoint", "rest", "route", "http", "service")
192
+ if any(kw in requirement_text.lower() for kw in api_keywords):
193
+ lines.append(" @security")
194
+ lines.append(f" Scenario: {feature_name} - unauthorized access returns 401")
195
+ lines.append(" Given the API is available")
196
+ lines.append(" When a request is made without authentication credentials")
197
+ lines.append(" Then the response status code is 401")
198
+ lines.append(' And the response contains "Authentication required"')
199
+ lines.append("")
200
+ lines.append(" @security")
201
+ lines.append(f" Scenario: {feature_name} - forbidden access returns 403")
202
+ lines.append(" Given the API is available")
203
+ lines.append(" And the user is authenticated with insufficient permissions")
204
+ lines.append(" When the user attempts to access a restricted resource")
205
+ lines.append(" Then the response status code is 403")
206
+ lines.append(' And the response contains "Access denied"')
207
+ lines.append("")
208
+ lines.append(" @security")
209
+ lines.append(f" Scenario: {feature_name} - invalid input rejected with 400")
210
+ lines.append(" Given the API is available")
211
+ lines.append(" And the user is authenticated")
212
+ lines.append(" When a POST request is made with an empty body")
213
+ lines.append(" Then the response status code is 400")
214
+ lines.append("")
215
+
216
+ content = "\n".join(lines)
217
+ feature_file.write_text(content, encoding="utf-8")
218
+ print(f"Feature file created: {feature_file}")
219
+
220
+ # Log audit trail
221
+ _log_audit(project_path, str(feature_file), "test_written", "feature_file_generated")
222
+
223
+ return str(feature_file)
224
+
225
+
226
+ def _parse_feature_steps(feature_file: str) -> Tuple[Path, List[Tuple[str, str]]]:
227
+ """Parse a .feature file and extract step lines.
228
+
229
+ Args:
230
+ feature_file: Path to the .feature file.
231
+
232
+ Returns:
233
+ Tuple of (feature_path, list of (step_type, step_text) tuples).
234
+ """
235
+ feature_path = Path(feature_file)
236
+ if not feature_path.exists():
237
+ raise FileNotFoundError(f"Feature file not found: {feature_file}")
238
+
239
+ content = feature_path.read_text(encoding="utf-8")
240
+ step_lines = []
241
+ for line in content.splitlines():
242
+ stripped = line.strip()
243
+ for keyword in ("Given ", "When ", "Then ", "And "):
244
+ if stripped.startswith(keyword):
245
+ step_type = keyword.strip()
246
+ step_text = stripped[len(keyword):]
247
+ step_lines.append((step_type, step_text))
248
+ return feature_path, step_lines
249
+
250
+
251
+ def _generate_python_steps(
252
+ feature_path: Path,
253
+ steps_dir: Path,
254
+ step_lines: List[Tuple[str, str]],
255
+ ) -> str:
256
+ """Generate behave (Python) step definitions.
257
+
258
+ Args:
259
+ feature_path: Path to the source .feature file.
260
+ steps_dir: Directory where step files are written.
261
+ step_lines: Parsed (step_type, step_text) tuples.
262
+
263
+ Returns:
264
+ Path to the generated step definitions file.
265
+ """
266
+ step_file_name = feature_path.stem + "_steps.py"
267
+ step_file = steps_dir / step_file_name
268
+
269
+ py_lines = [CUI_HEADER]
270
+ py_lines.append(f'"""Step definitions for {feature_path.name}."""')
271
+ py_lines.append("")
272
+ py_lines.append("from behave import given, when, then")
273
+ py_lines.append("")
274
+ py_lines.append("")
275
+
276
+ seen_steps: set = set()
277
+ for step_type, step_text in step_lines:
278
+ key = (step_type.lower(), step_text)
279
+ if key in seen_steps:
280
+ continue
281
+ seen_steps.add(key)
282
+
283
+ decorator = step_type.lower()
284
+ if decorator == "and":
285
+ decorator = "then"
286
+
287
+ func_name = _slugify(f"{decorator}_{step_text}")
288
+ if not func_name:
289
+ func_name = f"{decorator}_step"
290
+
291
+ escaped_text = step_text.replace('"', '\\"')
292
+
293
+ py_lines.append(f'@{decorator}("{escaped_text}")')
294
+ py_lines.append(f"def {func_name}(context):")
295
+ py_lines.append(f' """Step: {step_type} {step_text}"""')
296
+ py_lines.append(" # TODO: Implement this step")
297
+ py_lines.append(f" raise NotImplementedError('Step not yet implemented: {escaped_text}')")
298
+ py_lines.append("")
299
+ py_lines.append("")
300
+
301
+ step_content = "\n".join(py_lines)
302
+ step_file.write_text(step_content, encoding="utf-8")
303
+ return str(step_file)
304
+
305
+
306
+ def _generate_java_steps(
307
+ feature_path: Path,
308
+ steps_dir: Path,
309
+ step_lines: List[Tuple[str, str]],
310
+ ) -> str:
311
+ """Generate Cucumber-JVM (Java) step definitions.
312
+
313
+ Args:
314
+ feature_path: Path to the source .feature file.
315
+ steps_dir: Directory where step files are written.
316
+ step_lines: Parsed (step_type, step_text) tuples.
317
+
318
+ Returns:
319
+ Path to the generated step definitions file.
320
+ """
321
+ # Derive class name from feature file stem
322
+ raw_name = feature_path.stem.replace("_", " ").title().replace(" ", "")
323
+ class_name = raw_name + "Steps"
324
+
325
+ step_file_name = class_name + ".java"
326
+ step_file = steps_dir / step_file_name
327
+
328
+ lines = [CUI_HEADER_C_STYLE]
329
+ lines.append("package com.icdev.steps;")
330
+ lines.append("")
331
+ lines.append("import io.cucumber.java.en.Given;")
332
+ lines.append("import io.cucumber.java.en.When;")
333
+ lines.append("import io.cucumber.java.en.Then;")
334
+ lines.append("import static org.junit.jupiter.api.Assertions.*;")
335
+ lines.append("")
336
+ lines.append("/**")
337
+ lines.append(f" * Step definitions for {feature_path.name}.")
338
+ lines.append(" * Generated by ICDEV Builder - test_writer.py")
339
+ lines.append(" */")
340
+ lines.append(f"public class {class_name} {{")
341
+ lines.append("")
342
+
343
+ seen_steps: set = set()
344
+ for step_type, step_text in step_lines:
345
+ key = (step_type.lower(), step_text)
346
+ if key in seen_steps:
347
+ continue
348
+ seen_steps.add(key)
349
+
350
+ annotation = step_type.capitalize()
351
+ if annotation == "And":
352
+ annotation = "Then"
353
+
354
+ method_name = _slugify(f"{step_type.lower()}_{step_text}")
355
+ if not method_name:
356
+ method_name = f"{step_type.lower()}_step"
357
+
358
+ escaped_text = step_text.replace('"', '\\"')
359
+
360
+ lines.append(f' @{annotation}("{escaped_text}")')
361
+ lines.append(f" public void {method_name}() {{")
362
+ lines.append(f' // TODO: Implement step - {step_type} {step_text}')
363
+ lines.append(" throw new io.cucumber.java.PendingException();")
364
+ lines.append(" }")
365
+ lines.append("")
366
+
367
+ lines.append("}")
368
+ lines.append("")
369
+
370
+ step_content = "\n".join(lines)
371
+ step_file.write_text(step_content, encoding="utf-8")
372
+ return str(step_file)
373
+
374
+
375
+ def _generate_go_steps(
376
+ feature_path: Path,
377
+ steps_dir: Path,
378
+ step_lines: List[Tuple[str, str]],
379
+ ) -> str:
380
+ """Generate godog (Go) step definitions.
381
+
382
+ Args:
383
+ feature_path: Path to the source .feature file.
384
+ steps_dir: Directory where step files are written.
385
+ step_lines: Parsed (step_type, step_text) tuples.
386
+
387
+ Returns:
388
+ Path to the generated step definitions file.
389
+ """
390
+ feature_name = _slugify(feature_path.stem)
391
+ step_file_name = feature_path.stem + "_steps.go"
392
+ step_file = steps_dir / step_file_name
393
+
394
+ lines = [CUI_HEADER_C_STYLE]
395
+ lines.append("package steps")
396
+ lines.append("")
397
+ lines.append('import (')
398
+ lines.append(' "github.com/cucumber/godog"')
399
+ lines.append(')')
400
+ lines.append("")
401
+
402
+ # Collect unique step functions
403
+ seen_steps: set = set()
404
+ func_registrations = []
405
+
406
+ for step_type, step_text in step_lines:
407
+ key = (step_type.lower(), step_text)
408
+ if key in seen_steps:
409
+ continue
410
+ seen_steps.add(key)
411
+
412
+ func_name = _slugify(f"{step_type.lower()}_{step_text}")
413
+ if not func_name:
414
+ func_name = f"{step_type.lower()}_step"
415
+
416
+ # Escape backtick in regex
417
+ escaped_text = step_text.replace("`", "` + \"`\" + `")
418
+
419
+ func_registrations.append((escaped_text, func_name))
420
+
421
+ lines.append(f"func {func_name}() error {{")
422
+ lines.append(f" // TODO: Implement step - {step_type} {step_text}")
423
+ lines.append(" return godog.ErrPending")
424
+ lines.append("}")
425
+ lines.append("")
426
+
427
+ # Generate the initialization function
428
+ lines.append(f"func {feature_name}Steps(ctx *godog.ScenarioContext) {{")
429
+ for escaped_text, func_name in func_registrations:
430
+ lines.append(f' ctx.Step(`^{escaped_text}$`, {func_name})')
431
+ lines.append("}")
432
+ lines.append("")
433
+
434
+ step_content = "\n".join(lines)
435
+ step_file.write_text(step_content, encoding="utf-8")
436
+ return str(step_file)
437
+
438
+
439
+ def _generate_typescript_steps(
440
+ feature_path: Path,
441
+ steps_dir: Path,
442
+ step_lines: List[Tuple[str, str]],
443
+ ) -> str:
444
+ """Generate @cucumber/cucumber (TypeScript) step definitions.
445
+
446
+ Args:
447
+ feature_path: Path to the source .feature file.
448
+ steps_dir: Directory where step files are written.
449
+ step_lines: Parsed (step_type, step_text) tuples.
450
+
451
+ Returns:
452
+ Path to the generated step definitions file.
453
+ """
454
+ step_file_name = feature_path.stem + "_steps.ts"
455
+ step_file = steps_dir / step_file_name
456
+
457
+ lines = [CUI_HEADER_C_STYLE]
458
+ lines.append("import { Given, When, Then } from '@cucumber/cucumber';")
459
+ lines.append("import { strict as assert } from 'assert';")
460
+ lines.append("")
461
+
462
+ seen_steps: set = set()
463
+ for step_type, step_text in step_lines:
464
+ key = (step_type.lower(), step_text)
465
+ if key in seen_steps:
466
+ continue
467
+ seen_steps.add(key)
468
+
469
+ decorator = step_type.capitalize()
470
+ if decorator == "And":
471
+ decorator = "Then"
472
+
473
+ escaped_text = step_text.replace("'", "\\'")
474
+
475
+ lines.append(f"// Step: {step_type} {step_text}")
476
+ lines.append(f"{decorator}('{escaped_text}', async function () {{")
477
+ lines.append(" // TODO: Implement step")
478
+ lines.append(" return 'pending';")
479
+ lines.append("});")
480
+ lines.append("")
481
+
482
+ step_content = "\n".join(lines)
483
+ step_file.write_text(step_content, encoding="utf-8")
484
+ return str(step_file)
485
+
486
+
487
+ def _generate_csharp_steps(
488
+ feature_path: Path,
489
+ steps_dir: Path,
490
+ step_lines: List[Tuple[str, str]],
491
+ ) -> str:
492
+ """Generate SpecFlow (C#) step definitions.
493
+
494
+ Args:
495
+ feature_path: Path to the source .feature file.
496
+ steps_dir: Directory where step files are written.
497
+ step_lines: Parsed (step_type, step_text) tuples.
498
+
499
+ Returns:
500
+ Path to the generated step definitions file.
501
+ """
502
+ raw_name = feature_path.stem.replace("_", " ").title().replace(" ", "")
503
+ class_name = raw_name + "Steps"
504
+
505
+ step_file_name = class_name + ".cs"
506
+ step_file = steps_dir / step_file_name
507
+
508
+ lines = [CUI_HEADER_C_STYLE]
509
+ lines.append("using TechTalk.SpecFlow;")
510
+ lines.append("using Xunit;")
511
+ lines.append("")
512
+ lines.append("namespace ICDev.Steps")
513
+ lines.append("{")
514
+ lines.append(" [Binding]")
515
+ lines.append(f" public class {class_name}")
516
+ lines.append(" {")
517
+
518
+ seen_steps: set = set()
519
+ for step_type, step_text in step_lines:
520
+ key = (step_type.lower(), step_text)
521
+ if key in seen_steps:
522
+ continue
523
+ seen_steps.add(key)
524
+
525
+ attribute = step_type.capitalize()
526
+ if attribute == "And":
527
+ attribute = "Then"
528
+
529
+ method_name = _slugify(f"{step_type.lower()}_{step_text}")
530
+ if not method_name:
531
+ method_name = f"{step_type.lower()}_step"
532
+ # PascalCase for C# method names
533
+ method_name = method_name.replace("_", " ").title().replace(" ", "")
534
+
535
+ escaped_text = step_text.replace('"', '\\"')
536
+
537
+ lines.append(f' [{attribute}(@"{escaped_text}")]')
538
+ lines.append(f" public void {method_name}()")
539
+ lines.append(" {")
540
+ lines.append(f" // TODO: Implement step - {step_type} {step_text}")
541
+ lines.append(" throw new PendingStepException();")
542
+ lines.append(" }")
543
+ lines.append("")
544
+
545
+ lines.append(" }")
546
+ lines.append("}")
547
+ lines.append("")
548
+
549
+ step_content = "\n".join(lines)
550
+ step_file.write_text(step_content, encoding="utf-8")
551
+ return str(step_file)
552
+
553
+
554
+ def _generate_rust_steps(
555
+ feature_path: Path,
556
+ steps_dir: Path,
557
+ step_lines: List[Tuple[str, str]],
558
+ ) -> str:
559
+ """Generate cucumber-rs (Rust) step definitions.
560
+
561
+ Args:
562
+ feature_path: Path to the source .feature file.
563
+ steps_dir: Directory where step files are written.
564
+ step_lines: Parsed (step_type, step_text) tuples.
565
+
566
+ Returns:
567
+ Path to the generated step definitions file.
568
+ """
569
+ raw_name = feature_path.stem.replace("_", " ").title().replace(" ", "")
570
+ world_name = raw_name + "World"
571
+
572
+ step_file_name = feature_path.stem + "_steps.rs"
573
+ step_file = steps_dir / step_file_name
574
+
575
+ lines = [CUI_HEADER_RUST]
576
+ lines.append("use cucumber::{given, when, then, World};")
577
+ lines.append("")
578
+ lines.append("#[derive(Debug, Default, World)]")
579
+ lines.append(f"pub struct {world_name};")
580
+ lines.append("")
581
+
582
+ seen_steps: set = set()
583
+ for step_type, step_text in step_lines:
584
+ key = (step_type.lower(), step_text)
585
+ if key in seen_steps:
586
+ continue
587
+ seen_steps.add(key)
588
+
589
+ macro_name = step_type.lower()
590
+ if macro_name == "and":
591
+ macro_name = "then"
592
+
593
+ func_name = _slugify(f"{macro_name}_{step_text}")
594
+ if not func_name:
595
+ func_name = f"{macro_name}_step"
596
+
597
+ escaped_text = step_text.replace('"', '\\"')
598
+
599
+ lines.append(f'#[{macro_name}("{escaped_text}")]')
600
+ lines.append(f"async fn {func_name}(world: &mut {world_name}) {{")
601
+ lines.append(f' todo!("Implement step: {step_type} {step_text}");')
602
+ lines.append("}")
603
+ lines.append("")
604
+
605
+ step_content = "\n".join(lines)
606
+ step_file.write_text(step_content, encoding="utf-8")
607
+ return str(step_file)
608
+
609
+
610
+ # ---------------------------------------------------------------------------
611
+ # Agentic test generation (Phase 19)
612
+ # ---------------------------------------------------------------------------
613
+ AGENTIC_TEMPLATE_DIR = BASE_DIR / "tools" / "builder" / "agentic_test_templates"
614
+
615
+ # Agent-specific test parameters for template customization
616
+ AGENT_TEST_PARAMS = {
617
+ "orchestrator": {"port": 8443, "skills": ["task-dispatch", "workflow-manage"]},
618
+ "architect": {"port": 8444, "skills": ["system-design", "atlas-workflow"]},
619
+ "builder": {"port": 8445, "skills": ["code-generate", "tdd-cycle", "scaffold"]},
620
+ "compliance": {"port": 8446, "skills": ["ssp-generate", "stig-check", "sbom-generate"]},
621
+ "security": {"port": 8447, "skills": ["sast-scan", "dep-audit", "secret-detect"]},
622
+ "infrastructure": {"port": 8448, "skills": ["terraform-plan", "k8s-deploy", "pipeline-gen"]},
623
+ "knowledge": {"port": 8449, "skills": ["pattern-detect", "self-heal", "recommend"]},
624
+ "monitor": {"port": 8450, "skills": ["log-analyze", "health-check", "alert"]},
625
+ "mbse": {"port": 8451, "skills": ["import-xmi", "import-reqif", "sync-model"]},
626
+ "modernization": {"port": 8452, "skills": ["analyze-legacy", "seven-r-assess", "migrate"]},
627
+ }
628
+
629
+
630
+ def generate_agentic_tests(
631
+ project_path: str,
632
+ agent_names: Optional[List[str]] = None,
633
+ include_bdd: bool = True,
634
+ include_pytest: bool = True,
635
+ ) -> List[str]:
636
+ """Generate agentic test files from templates for a project.
637
+
638
+ Copies and customizes agentic test templates into the target project's
639
+ test directory. Templates are sourced from the agentic_test_templates
640
+ directory and parameterized with project-specific agent configuration.
641
+
642
+ Args:
643
+ project_path: Root path of the target project.
644
+ agent_names: Optional list of agent names to generate tests for.
645
+ If None, generates for all configured agents.
646
+ include_bdd: Whether to include BDD feature file templates.
647
+ include_pytest: Whether to include pytest test templates.
648
+
649
+ Returns:
650
+ List of paths to generated test files.
651
+ """
652
+ project = Path(project_path)
653
+ agentic_test_dir = project / "tests" / "agentic"
654
+ agentic_test_dir.mkdir(parents=True, exist_ok=True)
655
+
656
+ if not AGENTIC_TEMPLATE_DIR.exists():
657
+ print(f"Warning: Agentic template directory not found: {AGENTIC_TEMPLATE_DIR}")
658
+ return []
659
+
660
+ generated_files = []
661
+ agents = agent_names or list(AGENT_TEST_PARAMS.keys())
662
+
663
+ # Copy and customize BDD feature templates
664
+ if include_bdd:
665
+ for template_file in AGENTIC_TEMPLATE_DIR.glob("*.feature"):
666
+ dest = agentic_test_dir / template_file.name
667
+ content = template_file.read_text(encoding="utf-8")
668
+
669
+ # Parameterize agent_count placeholder
670
+ content = content.replace("{agent_count}", str(len(agents)))
671
+
672
+ dest.write_text(content, encoding="utf-8")
673
+ generated_files.append(str(dest))
674
+ print(f"Agentic BDD template: {dest}")
675
+
676
+ # Copy and customize pytest templates
677
+ if include_pytest:
678
+ for template_file in AGENTIC_TEMPLATE_DIR.glob("test_*.py"):
679
+ dest = agentic_test_dir / template_file.name
680
+ content = template_file.read_text(encoding="utf-8")
681
+ dest.write_text(content, encoding="utf-8")
682
+ generated_files.append(str(dest))
683
+ print(f"Agentic pytest template: {dest}")
684
+
685
+ # Generate per-agent skill test feature file
686
+ if include_bdd and agents:
687
+ skill_feature = _generate_agent_skill_feature(agentic_test_dir, agents)
688
+ generated_files.append(skill_feature)
689
+
690
+ # Generate per-agent health test pytest file
691
+ if include_pytest and agents:
692
+ health_test = _generate_agent_health_pytest(agentic_test_dir, agents)
693
+ generated_files.append(health_test)
694
+
695
+ # Log audit trail
696
+ _log_audit(project_path, json.dumps(generated_files), "test_written", "agentic_tests_generated")
697
+
698
+ print(f"\nGenerated {len(generated_files)} agentic test files in {agentic_test_dir}")
699
+ return generated_files
700
+
701
+
702
+ def _generate_agent_skill_feature(test_dir: Path, agents: List[str]) -> str:
703
+ """Generate a BDD feature file testing skills for specified agents.
704
+
705
+ Args:
706
+ test_dir: Directory to write the feature file.
707
+ agents: List of agent names to include.
708
+
709
+ Returns:
710
+ Path to the generated feature file.
711
+ """
712
+ lines = [CUI_HEADER_GHERKIN]
713
+ lines.append("Feature: Project Agent Skill Verification")
714
+ lines.append(" Verify each agent's skills execute correctly for this project")
715
+ lines.append("")
716
+ lines.append(" Scenario Outline: Execute agent skill")
717
+ lines.append(' Given agent "<agent>" is running on port <port>')
718
+ lines.append(' And skill "<skill>" is registered')
719
+ lines.append(' When I invoke skill "<skill>" with valid parameters')
720
+ lines.append(" Then the skill should return a successful result")
721
+ lines.append(" And the execution should be logged in audit trail")
722
+ lines.append("")
723
+ lines.append(" Examples:")
724
+ lines.append(" | agent | port | skill |")
725
+
726
+ for agent_name in agents:
727
+ params = AGENT_TEST_PARAMS.get(agent_name, {"port": 8080, "skills": ["unknown"]})
728
+ for skill in params["skills"]:
729
+ padded_agent = agent_name.ljust(12)
730
+ padded_port = str(params["port"]).ljust(5)
731
+ padded_skill = skill.ljust(14)
732
+ lines.append(f" | {padded_agent} | {padded_port} | {padded_skill} |")
733
+
734
+ lines.append("")
735
+ content = "\n".join(lines)
736
+
737
+ feature_file = test_dir / "test_project_agent_skills.feature"
738
+ feature_file.write_text(content, encoding="utf-8")
739
+ print(f"Agentic skill feature: {feature_file}")
740
+ return str(feature_file)
741
+
742
+
743
+ def _generate_agent_health_pytest(test_dir: Path, agents: List[str]) -> str:
744
+ """Generate a pytest file testing health endpoints for specified agents.
745
+
746
+ Args:
747
+ test_dir: Directory to write the test file.
748
+ agents: List of agent names to include.
749
+
750
+ Returns:
751
+ Path to the generated test file.
752
+ """
753
+ lines = [CUI_HEADER]
754
+ lines.append('"""Project-specific agent health tests — auto-generated by test_writer."""')
755
+ lines.append("")
756
+ lines.append("import pytest")
757
+ lines.append("from unittest.mock import patch, MagicMock")
758
+ lines.append("")
759
+ lines.append("")
760
+ lines.append("# Agent endpoints for this project")
761
+ lines.append("PROJECT_AGENTS = {")
762
+
763
+ for agent_name in agents:
764
+ params = AGENT_TEST_PARAMS.get(agent_name, {"port": 8080})
765
+ lines.append(f' "{agent_name}": {{"port": {params["port"]}, "endpoint": "https://localhost:{params["port"]}/health"}},')
766
+
767
+ lines.append("}")
768
+ lines.append("")
769
+ lines.append("")
770
+ lines.append("class TestProjectAgentHealth:")
771
+ lines.append(' """Health checks for project-specific agent configuration."""')
772
+ lines.append("")
773
+ lines.append(" @pytest.mark.parametrize(\"agent_name,config\", PROJECT_AGENTS.items())")
774
+ lines.append(" def test_agent_port_configured(self, agent_name, config):")
775
+ lines.append(' """Each agent should have a valid port."""')
776
+ lines.append(" assert 1024 <= config[\"port\"] <= 65535, f\"Agent {agent_name} port out of range\"")
777
+ lines.append("")
778
+ lines.append(" @pytest.mark.parametrize(\"agent_name,config\", PROJECT_AGENTS.items())")
779
+ lines.append(" def test_agent_https_endpoint(self, agent_name, config):")
780
+ lines.append(' """Each agent health endpoint should use HTTPS."""')
781
+ lines.append(" assert config[\"endpoint\"].startswith(\"https://\"), f\"Agent {agent_name} not using HTTPS\"")
782
+ lines.append("")
783
+ lines.append(" def test_no_duplicate_ports(self):")
784
+ lines.append(' """All agent ports should be unique."""')
785
+ lines.append(" ports = [c[\"port\"] for c in PROJECT_AGENTS.values()]")
786
+ lines.append(" assert len(ports) == len(set(ports)), \"Duplicate agent ports detected\"")
787
+ lines.append("")
788
+
789
+ content = "\n".join(lines)
790
+
791
+ test_file = test_dir / "test_project_agent_health.py"
792
+ test_file.write_text(content, encoding="utf-8")
793
+ print(f"Agentic health pytest: {test_file}")
794
+ return str(test_file)
795
+
796
+
797
+ # Step definition generator dispatch table
798
+ STEP_GENERATORS = {
799
+ "python": _generate_python_steps,
800
+ "java": _generate_java_steps,
801
+ "go": _generate_go_steps,
802
+ "typescript": _generate_typescript_steps,
803
+ "csharp": _generate_csharp_steps,
804
+ "rust": _generate_rust_steps,
805
+ }
806
+
807
+
808
+ def generate_steps(
809
+ project_path: str,
810
+ feature_file: str,
811
+ language: str = "python",
812
+ ) -> str:
813
+ """Generate step definitions from a .feature file in the specified language.
814
+
815
+ Args:
816
+ project_path: Root path of the project.
817
+ feature_file: Path to the .feature file to generate steps for.
818
+ language: Target language (python, java, go, typescript, csharp, rust).
819
+
820
+ Returns:
821
+ Path to the generated step definitions file.
822
+ """
823
+ project = Path(project_path)
824
+ steps_dir = project / "tests" / "steps"
825
+ steps_dir.mkdir(parents=True, exist_ok=True)
826
+
827
+ feature_path, step_lines = _parse_feature_steps(feature_file)
828
+
829
+ generator = STEP_GENERATORS.get(language)
830
+ if not generator:
831
+ raise ValueError(
832
+ f"Unsupported language: {language}. "
833
+ f"Supported: {', '.join(STEP_GENERATORS.keys())}"
834
+ )
835
+
836
+ step_file = generator(feature_path, steps_dir, step_lines)
837
+ print(f"Step definitions created ({language}): {step_file}")
838
+
839
+ # Log audit trail
840
+ _log_audit(project_path, step_file, "test_written", f"step_definitions_generated_{language}")
841
+
842
+ return step_file
843
+
844
+
845
+ def _log_audit(project_path: str, file_path: str, event_type: str, action: str) -> None:
846
+ """Log an audit trail event for test generation."""
847
+ try:
848
+ conn = sqlite3.connect(str(DB_PATH))
849
+ c = conn.cursor()
850
+ c.execute(
851
+ """INSERT INTO audit_trail (project_id, event_type, actor, action, affected_files, classification)
852
+ VALUES (?, ?, ?, ?, ?, ?)""",
853
+ (
854
+ None, # Project ID could be looked up from path
855
+ event_type,
856
+ "builder/test_writer",
857
+ action,
858
+ json.dumps([file_path]),
859
+ "CUI",
860
+ ),
861
+ )
862
+ conn.commit()
863
+ conn.close()
864
+ except Exception as e:
865
+ # Don't fail the main operation if audit logging fails
866
+ print(f"Warning: audit logging failed: {e}")
867
+
868
+
869
+ def main():
870
+ parser = argparse.ArgumentParser(
871
+ description="Generate BDD tests in Cucumber/Gherkin format"
872
+ )
873
+ parser.add_argument(
874
+ "--project-path", required=True, help="Root path of the project"
875
+ )
876
+ parser.add_argument(
877
+ "--requirement", required=False, help="Requirement text to generate tests for"
878
+ )
879
+ parser.add_argument(
880
+ "--feature-name", help="Feature name (auto-generated from requirement if not provided)"
881
+ )
882
+ parser.add_argument(
883
+ "--tags", nargs="*", help="Gherkin tags (e.g., @smoke @auth)"
884
+ )
885
+ parser.add_argument(
886
+ "--steps-only", action="store_true",
887
+ help="Only generate step definitions for an existing feature file"
888
+ )
889
+ parser.add_argument(
890
+ "--feature-file", help="Path to existing .feature file (with --steps-only)"
891
+ )
892
+ parser.add_argument(
893
+ "--language", default="python",
894
+ choices=["python", "java", "go", "typescript", "csharp", "rust"],
895
+ help="Target language for step definitions (default: python)",
896
+ )
897
+ parser.add_argument(
898
+ "--agentic", action="store_true",
899
+ help="Generate agentic test suite from templates (Phase 19)",
900
+ )
901
+ parser.add_argument(
902
+ "--agents", nargs="*",
903
+ help="Agent names to generate tests for (with --agentic). Default: all agents.",
904
+ )
905
+ parser.add_argument(
906
+ "--no-bdd", action="store_true",
907
+ help="Skip BDD feature file generation (with --agentic)",
908
+ )
909
+ parser.add_argument(
910
+ "--no-pytest", action="store_true",
911
+ help="Skip pytest file generation (with --agentic)",
912
+ )
913
+ parser.add_argument("--json", action="store_true", dest="json_output", help="JSON output")
914
+ args = parser.parse_args()
915
+
916
+ if args.agentic:
917
+ # Generate agentic test suite from templates (Phase 19)
918
+ files = generate_agentic_tests(
919
+ project_path=args.project_path,
920
+ agent_names=args.agents,
921
+ include_bdd=not args.no_bdd,
922
+ include_pytest=not args.no_pytest,
923
+ )
924
+ print(f"\nGenerated {len(files)} agentic test files:")
925
+ for f in files:
926
+ print(f" {f}")
927
+ elif args.steps_only:
928
+ if not args.feature_file:
929
+ parser.error("--feature-file is required with --steps-only")
930
+ step_file = generate_steps(args.project_path, args.feature_file, language=args.language)
931
+ print(f"\nStep definitions ({args.language}): {step_file}")
932
+ else:
933
+ if not args.requirement:
934
+ parser.error("--requirement is required (or use --agentic for agentic tests)")
935
+ # Generate feature file (language-agnostic Gherkin)
936
+ feature_file = generate_feature(
937
+ project_path=args.project_path,
938
+ requirement_text=args.requirement,
939
+ feature_name=args.feature_name,
940
+ tags=args.tags,
941
+ )
942
+ # Generate step definitions in target language
943
+ step_file = generate_steps(args.project_path, feature_file, language=args.language)
944
+ print("\nGenerated files:")
945
+ print(f" Feature: {feature_file}")
946
+ print(f" Steps ({args.language}): {step_file}")
947
+
948
+
949
+ if __name__ == "__main__":
950
+ main()