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,1590 @@
1
+ #!/usr/bin/env python3
2
+ # CUI // SP-CTI
3
+ """Project Scaffolder — generates project directory structures from templates.
4
+
5
+ Implements all project types:
6
+ - scaffold_python_backend -> pyproject.toml, src/, tests/, Dockerfile, .gitignore
7
+ - scaffold_javascript_frontend -> package.json, src/, tests/, Dockerfile, .gitignore
8
+ - scaffold_microservice -> backend + Dockerfile + k8s/
9
+ - scaffold_api -> Flask/FastAPI API template
10
+ - scaffold_cli -> CLI tool template with argparse
11
+ - scaffold_data_pipeline -> ETL pipeline template
12
+
13
+ All templates include CUI markings, README with CUI banners, compliance/ dir.
14
+ CLI: python tools/builder/scaffolder.py --project-path PATH --name "my-app" --type webapp
15
+ """
16
+
17
+ import argparse
18
+ import json
19
+ import os
20
+ import sqlite3
21
+ from pathlib import Path
22
+ from typing import List
23
+ from icdev._paths import get_project_root
24
+
25
+ BASE_DIR = get_project_root()
26
+ DB_PATH = BASE_DIR / "data" / "icdev.db"
27
+
28
+ # Dynamic classification support — use classification_manager when available,
29
+ # fall back to CUI defaults for backward compatibility.
30
+ try:
31
+ from icdev.tools.compliance.classification_manager import (
32
+ get_marking_banner,
33
+ get_code_header,
34
+ get_document_banner,
35
+ )
36
+ _HAS_CLASSIFICATION_MGR = True
37
+ except ImportError:
38
+ _HAS_CLASSIFICATION_MGR = False
39
+
40
+
41
+ def _get_banner(classification="CUI"):
42
+ """Get document banner for the given classification level."""
43
+ if _HAS_CLASSIFICATION_MGR:
44
+ banners = get_document_banner(classification)
45
+ return banners.get("header", _DEFAULT_CUI_BANNER)
46
+ return _DEFAULT_CUI_BANNER
47
+
48
+
49
+ def _get_code_hdr(classification="CUI", language="python"):
50
+ """Get code header for the given classification and language."""
51
+ if _HAS_CLASSIFICATION_MGR:
52
+ return get_code_header(classification, language)
53
+ return _DEFAULT_CUI_CODE_HEADER
54
+
55
+
56
+ def _get_banner_md(classification="CUI"):
57
+ """Get markdown-formatted banner."""
58
+ if _HAS_CLASSIFICATION_MGR:
59
+ banner_text = get_marking_banner(classification)
60
+ return f"> **{banner_text.strip().splitlines()[0] if banner_text else 'CUI // SP-CTI'}**\n> Controlled by: Department of Defense | Distribution D\n> This document contains Controlled Unclassified Information (CUI).\n"
61
+ return _DEFAULT_CUI_BANNER_MD
62
+
63
+
64
+ _DEFAULT_CUI_BANNER = """\
65
+ //////////////////////////////////////////////////////////////////
66
+ CONTROLLED UNCLASSIFIED INFORMATION (CUI) // SP-CTI
67
+ Distribution: Distribution D - Authorized DoD Personnel Only
68
+ //////////////////////////////////////////////////////////////////"""
69
+
70
+ _DEFAULT_CUI_CODE_HEADER = """\
71
+ # CUI // SP-CTI
72
+ # Controlled by: Department of Defense
73
+ # CUI Category: CTI
74
+ # Distribution: D
75
+ # POC: ICDEV System Administrator
76
+ """
77
+
78
+ _DEFAULT_CUI_BANNER_MD = """\
79
+ > **CUI // SP-CTI**
80
+ > Controlled by: Department of Defense | Distribution D
81
+ > This document contains Controlled Unclassified Information (CUI).
82
+ """
83
+
84
+ # Backward-compatible aliases — used throughout the scaffolder
85
+ CUI_BANNER = _DEFAULT_CUI_BANNER
86
+ CUI_CODE_HEADER = _DEFAULT_CUI_CODE_HEADER
87
+ CUI_BANNER_MD = _DEFAULT_CUI_BANNER_MD
88
+
89
+
90
+ def _write_file(path: Path, content: str) -> None:
91
+ """Write content to a file, creating parent dirs as needed."""
92
+ path.parent.mkdir(parents=True, exist_ok=True)
93
+ path.write_text(content, encoding="utf-8")
94
+
95
+
96
+ def _create_gitkeep(directory: Path) -> None:
97
+ """Create a .gitkeep in an empty directory."""
98
+ directory.mkdir(parents=True, exist_ok=True)
99
+ (directory / ".gitkeep").write_text("", encoding="utf-8")
100
+
101
+
102
+ def _common_gitignore() -> str:
103
+ """Return a common .gitignore for Python/JS projects."""
104
+ return """\
105
+ # Python
106
+ __pycache__/
107
+ *.py[cod]
108
+ *$py.class
109
+ *.egg-info/
110
+ dist/
111
+ build/
112
+ .eggs/
113
+ *.egg
114
+ .venv/
115
+ venv/
116
+ env/
117
+ .env
118
+
119
+ # JavaScript
120
+ node_modules/
121
+ npm-debug.log*
122
+ yarn-debug.log*
123
+ yarn-error.log*
124
+
125
+ # IDE
126
+ .vscode/
127
+ .idea/
128
+ *.swp
129
+ *.swo
130
+
131
+ # OS
132
+ .DS_Store
133
+ Thumbs.db
134
+
135
+ # Coverage
136
+ htmlcov/
137
+ .coverage
138
+ coverage.xml
139
+ *.cover
140
+
141
+ # Compiled
142
+ *.so
143
+ *.dylib
144
+
145
+ # Tmp
146
+ .tmp/
147
+ tmp/
148
+ """
149
+
150
+
151
+ def _readme_content(name: str, project_type: str, description: str = "") -> str:
152
+ """Generate a README with CUI banners."""
153
+ desc = description or f"A {project_type} project scaffolded by ICDEV Builder."
154
+ return f"""{CUI_BANNER}
155
+
156
+ # {name}
157
+
158
+ {CUI_BANNER_MD}
159
+
160
+ ## Overview
161
+
162
+ {desc}
163
+
164
+ ## Getting Started
165
+
166
+ ### Prerequisites
167
+
168
+ - Python 3.10+ (for Python projects)
169
+ - Node.js 18+ (for JavaScript projects)
170
+ - Docker (for containerized deployments)
171
+
172
+ ### Installation
173
+
174
+ ```bash
175
+ # Python
176
+ pip install -e .
177
+
178
+ # JavaScript
179
+ npm install
180
+ ```
181
+
182
+ ### Running Tests
183
+
184
+ ```bash
185
+ # Python
186
+ pytest tests/
187
+
188
+ # JavaScript
189
+ npm test
190
+ ```
191
+
192
+ ### Running Locally
193
+
194
+ ```bash
195
+ # Python
196
+ python -m src.main
197
+
198
+ # JavaScript
199
+ npm start
200
+ ```
201
+
202
+ ## Compliance
203
+
204
+ See `compliance/` directory for security and compliance artifacts.
205
+
206
+ ## Classification
207
+
208
+ {CUI_BANNER}
209
+ """
210
+
211
+
212
+ def _compliance_readme(classification: str = "CUI") -> str:
213
+ """Generate a compliance directory README."""
214
+ banner = _get_banner(classification)
215
+ return f"""{banner}
216
+
217
+ # Compliance Artifacts
218
+
219
+ This directory contains compliance documentation and artifacts for this project.
220
+
221
+ ## Contents
222
+
223
+ - `ssp/` - System Security Plan documents
224
+ - `poam/` - Plan of Action and Milestones
225
+ - `stig/` - STIG checklists and findings
226
+ - `sbom/` - Software Bill of Materials
227
+ - `fedramp/` - FedRAMP assessment artifacts
228
+ - `cmmc/` - CMMC assessment artifacts
229
+ - `oscal/` - OSCAL machine-readable artifacts
230
+ - `emass/` - eMASS export files
231
+
232
+ ## Classification
233
+
234
+ All artifacts in this directory are marked per project classification level.
235
+
236
+ {banner}
237
+ """
238
+
239
+
240
+ def scaffold_python_backend(project_path: str, name: str) -> List[str]:
241
+ """Scaffold a Python backend project.
242
+
243
+ Creates:
244
+ - pyproject.toml
245
+ - src/main.py, src/__init__.py
246
+ - tests/conftest.py, tests/features/.gitkeep, tests/steps/.gitkeep
247
+ - Dockerfile
248
+ - .gitignore
249
+ - README.md with CUI banners
250
+ - compliance/ directory
251
+
252
+ Returns:
253
+ List of created file paths.
254
+ """
255
+ root = Path(project_path) / name
256
+ files = []
257
+
258
+ # pyproject.toml
259
+ pyproject = f"""\
260
+ [build-system]
261
+ requires = ["setuptools>=68.0", "wheel"]
262
+ build-backend = "setuptools.backends._legacy:_Backend"
263
+
264
+ [project]
265
+ name = "{name}"
266
+ version = "0.1.0"
267
+ description = "Python backend project - CUI // SP-CTI"
268
+ requires-python = ">=3.10"
269
+ license = {{text = "Proprietary - CUI"}}
270
+
271
+ [project.optional-dependencies]
272
+ dev = ["pytest>=7.0", "behave>=1.2", "flake8>=6.0", "black>=23.0", "isort>=5.0"]
273
+
274
+ [tool.black]
275
+ line-length = 100
276
+
277
+ [tool.isort]
278
+ profile = "black"
279
+ line_length = 100
280
+
281
+ [tool.pytest.ini_options]
282
+ testpaths = ["tests"]
283
+ """
284
+ _write_file(root / "pyproject.toml", pyproject)
285
+ files.append(str(root / "pyproject.toml"))
286
+
287
+ # src/__init__.py
288
+ _write_file(root / "src" / "__init__.py", f'{CUI_CODE_HEADER}\n"""Package init."""\n')
289
+ files.append(str(root / "src" / "__init__.py"))
290
+
291
+ # src/main.py
292
+ main_py = f'''{CUI_CODE_HEADER}
293
+ """Main entry point for {name}."""
294
+
295
+ import logging
296
+ import sys
297
+
298
+ logging.basicConfig(
299
+ level=logging.INFO,
300
+ format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
301
+ )
302
+ logger = logging.getLogger(__name__)
303
+
304
+
305
+ def main() -> int:
306
+ """Application entry point.
307
+
308
+ Returns:
309
+ Exit code (0 for success).
310
+ """
311
+ logger.info("Starting {name}")
312
+ # TODO: Add application logic here
313
+ logger.info("{name} completed successfully")
314
+ return 0
315
+
316
+
317
+ if __name__ == "__main__":
318
+ sys.exit(main())
319
+ '''
320
+ _write_file(root / "src" / "main.py", main_py)
321
+ files.append(str(root / "src" / "main.py"))
322
+
323
+ # tests/conftest.py
324
+ conftest = f'''{CUI_CODE_HEADER}
325
+ """Pytest configuration and shared fixtures."""
326
+
327
+ import pytest
328
+
329
+
330
+ @pytest.fixture
331
+ def sample_data():
332
+ """Provide sample test data."""
333
+ return {{"name": "test", "status": "active"}}
334
+ '''
335
+ _write_file(root / "tests" / "conftest.py", conftest)
336
+ files.append(str(root / "tests" / "conftest.py"))
337
+
338
+ # tests/features/.gitkeep and tests/steps/.gitkeep
339
+ _create_gitkeep(root / "tests" / "features")
340
+ files.append(str(root / "tests" / "features" / ".gitkeep"))
341
+ _create_gitkeep(root / "tests" / "steps")
342
+ files.append(str(root / "tests" / "steps" / ".gitkeep"))
343
+
344
+ # Dockerfile
345
+ dockerfile = """\
346
+ # CUI // SP-CTI
347
+ # STIG-hardened Python container
348
+ FROM python:3.11-slim AS base
349
+
350
+ # Security: run as non-root
351
+ RUN groupadd -r appuser && useradd -r -g appuser -d /app -s /sbin/nologin appuser
352
+
353
+ WORKDIR /app
354
+
355
+ # Install dependencies first for layer caching
356
+ COPY pyproject.toml .
357
+ RUN pip install --no-cache-dir -e .
358
+
359
+ # Copy application
360
+ COPY src/ src/
361
+
362
+ # Security: drop privileges
363
+ USER appuser
364
+
365
+ # Health check
366
+ HEALTHCHECK --interval=30s --timeout=5s --retries=3 \\
367
+ CMD python -c "print('healthy')" || exit 1
368
+
369
+ ENTRYPOINT ["python", "-m", "src.main"]
370
+ """
371
+ _write_file(root / "Dockerfile", dockerfile)
372
+ files.append(str(root / "Dockerfile"))
373
+
374
+ # .gitignore
375
+ _write_file(root / ".gitignore", _common_gitignore())
376
+ files.append(str(root / ".gitignore"))
377
+
378
+ # README.md
379
+ _write_file(root / "README.md", _readme_content(name, "python-backend"))
380
+ files.append(str(root / "README.md"))
381
+
382
+ # compliance/ — includes multi-framework subdirs
383
+ _write_file(root / "compliance" / "README.md", _compliance_readme())
384
+ files.append(str(root / "compliance" / "README.md"))
385
+ for sub in ["ssp", "poam", "stig", "sbom", "fedramp", "cmmc", "oscal", "emass"]:
386
+ _create_gitkeep(root / "compliance" / sub)
387
+ files.append(str(root / "compliance" / sub / ".gitkeep"))
388
+
389
+ print(f"Scaffolded Python backend: {root}")
390
+ return files
391
+
392
+
393
+ def scaffold_javascript_frontend(project_path: str, name: str) -> List[str]:
394
+ """Scaffold a JavaScript frontend project.
395
+
396
+ Creates:
397
+ - package.json
398
+ - src/index.js
399
+ - tests/.gitkeep
400
+ - Dockerfile
401
+ - .gitignore
402
+ - README.md with CUI banners
403
+ - compliance/ directory
404
+
405
+ Returns:
406
+ List of created file paths.
407
+ """
408
+ root = Path(project_path) / name
409
+ files = []
410
+
411
+ # package.json
412
+ package_json = json.dumps({
413
+ "name": name,
414
+ "version": "0.1.0",
415
+ "description": "JavaScript frontend project - CUI // SP-CTI",
416
+ "main": "src/index.js",
417
+ "scripts": {
418
+ "start": "node src/index.js",
419
+ "test": "jest",
420
+ "lint": "eslint src/",
421
+ "format": "prettier --write src/",
422
+ "build": "echo 'Build step placeholder'"
423
+ },
424
+ "devDependencies": {
425
+ "jest": "^29.0.0",
426
+ "eslint": "^8.0.0",
427
+ "prettier": "^3.0.0"
428
+ },
429
+ "license": "UNLICENSED",
430
+ "private": True
431
+ }, indent=2) + "\n"
432
+ _write_file(root / "package.json", package_json)
433
+ files.append(str(root / "package.json"))
434
+
435
+ # src/index.js
436
+ index_js = f"""\
437
+ // CUI // SP-CTI
438
+ // Controlled by: Department of Defense
439
+ // CUI Category: CTI
440
+ // Distribution: D
441
+ // POC: ICDEV System Administrator
442
+
443
+ /**
444
+ * Main entry point for {name}.
445
+ * @module {name}
446
+ */
447
+
448
+ 'use strict';
449
+
450
+ /**
451
+ * Initialize the application.
452
+ */
453
+ function main() {{
454
+ console.log('{name} started');
455
+ // TODO: Add application logic here
456
+ }}
457
+
458
+ main();
459
+
460
+ module.exports = {{ main }};
461
+ """
462
+ _write_file(root / "src" / "index.js", index_js)
463
+ files.append(str(root / "src" / "index.js"))
464
+
465
+ # tests/.gitkeep
466
+ _create_gitkeep(root / "tests")
467
+ files.append(str(root / "tests" / ".gitkeep"))
468
+
469
+ # Dockerfile
470
+ dockerfile = """\
471
+ # CUI // SP-CTI
472
+ # Node.js container
473
+ FROM node:18-alpine AS base
474
+
475
+ # Security: run as non-root
476
+ RUN addgroup -S appgroup && adduser -S appuser -G appgroup
477
+
478
+ WORKDIR /app
479
+
480
+ # Install dependencies
481
+ COPY package.json package-lock.json* ./
482
+ RUN npm ci --only=production && npm cache clean --force
483
+
484
+ # Copy application
485
+ COPY src/ src/
486
+
487
+ # Security: drop privileges
488
+ USER appuser
489
+
490
+ HEALTHCHECK --interval=30s --timeout=5s --retries=3 \\
491
+ CMD node -e "console.log('healthy')" || exit 1
492
+
493
+ ENTRYPOINT ["node", "src/index.js"]
494
+ """
495
+ _write_file(root / "Dockerfile", dockerfile)
496
+ files.append(str(root / "Dockerfile"))
497
+
498
+ # .gitignore
499
+ _write_file(root / ".gitignore", _common_gitignore())
500
+ files.append(str(root / ".gitignore"))
501
+
502
+ # README.md
503
+ _write_file(root / "README.md", _readme_content(name, "javascript-frontend"))
504
+ files.append(str(root / "README.md"))
505
+
506
+ # compliance/
507
+ _write_file(root / "compliance" / "README.md", _compliance_readme())
508
+ files.append(str(root / "compliance" / "README.md"))
509
+ for sub in ["ssp", "poam", "stig", "sbom"]:
510
+ _create_gitkeep(root / "compliance" / sub)
511
+ files.append(str(root / "compliance" / sub / ".gitkeep"))
512
+
513
+ print(f"Scaffolded JavaScript frontend: {root}")
514
+ return files
515
+
516
+
517
+ def scaffold_microservice(project_path: str, name: str) -> List[str]:
518
+ """Scaffold a microservice project.
519
+
520
+ Combines Python backend + Dockerfile + Kubernetes manifests.
521
+
522
+ Returns:
523
+ List of created file paths.
524
+ """
525
+ # Start with Python backend
526
+ files = scaffold_python_backend(project_path, name)
527
+ root = Path(project_path) / name
528
+
529
+ # k8s/deployment.yaml
530
+ deployment_yaml = f"""\
531
+ # CUI // SP-CTI
532
+ apiVersion: apps/v1
533
+ kind: Deployment
534
+ metadata:
535
+ name: {name}
536
+ labels:
537
+ app: {name}
538
+ classification: cui
539
+ spec:
540
+ replicas: 2
541
+ selector:
542
+ matchLabels:
543
+ app: {name}
544
+ template:
545
+ metadata:
546
+ labels:
547
+ app: {name}
548
+ spec:
549
+ securityContext:
550
+ runAsNonRoot: true
551
+ runAsUser: 1000
552
+ fsGroup: 1000
553
+ containers:
554
+ - name: {name}
555
+ image: {name}:latest
556
+ ports:
557
+ - containerPort: 8000
558
+ resources:
559
+ requests:
560
+ cpu: "100m"
561
+ memory: "128Mi"
562
+ limits:
563
+ cpu: "500m"
564
+ memory: "512Mi"
565
+ securityContext:
566
+ allowPrivilegeEscalation: false
567
+ readOnlyRootFilesystem: true
568
+ capabilities:
569
+ drop: ["ALL"]
570
+ livenessProbe:
571
+ httpGet:
572
+ path: /health
573
+ port: 8000
574
+ initialDelaySeconds: 10
575
+ periodSeconds: 30
576
+ readinessProbe:
577
+ httpGet:
578
+ path: /health
579
+ port: 8000
580
+ initialDelaySeconds: 5
581
+ periodSeconds: 10
582
+ """
583
+ _write_file(root / "k8s" / "deployment.yaml", deployment_yaml)
584
+ files.append(str(root / "k8s" / "deployment.yaml"))
585
+
586
+ # k8s/service.yaml
587
+ service_yaml = f"""\
588
+ # CUI // SP-CTI
589
+ apiVersion: v1
590
+ kind: Service
591
+ metadata:
592
+ name: {name}
593
+ labels:
594
+ app: {name}
595
+ spec:
596
+ selector:
597
+ app: {name}
598
+ ports:
599
+ - port: 80
600
+ targetPort: 8000
601
+ protocol: TCP
602
+ type: ClusterIP
603
+ """
604
+ _write_file(root / "k8s" / "service.yaml", service_yaml)
605
+ files.append(str(root / "k8s" / "service.yaml"))
606
+
607
+ # k8s/configmap.yaml
608
+ configmap_yaml = f"""\
609
+ # CUI // SP-CTI
610
+ apiVersion: v1
611
+ kind: ConfigMap
612
+ metadata:
613
+ name: {name}-config
614
+ data:
615
+ LOG_LEVEL: "INFO"
616
+ APP_ENV: "production"
617
+ """
618
+ _write_file(root / "k8s" / "configmap.yaml", configmap_yaml)
619
+ files.append(str(root / "k8s" / "configmap.yaml"))
620
+
621
+ print(f"Scaffolded microservice (with k8s): {root}")
622
+ return files
623
+
624
+
625
+ def scaffold_api(project_path: str, name: str) -> List[str]:
626
+ """Scaffold a Flask/FastAPI API project.
627
+
628
+ Returns:
629
+ List of created file paths.
630
+ """
631
+ root = Path(project_path) / name
632
+ files = []
633
+
634
+ # pyproject.toml
635
+ pyproject = f"""\
636
+ [build-system]
637
+ requires = ["setuptools>=68.0", "wheel"]
638
+ build-backend = "setuptools.backends._legacy:_Backend"
639
+
640
+ [project]
641
+ name = "{name}"
642
+ version = "0.1.0"
643
+ description = "API project - CUI // SP-CTI"
644
+ requires-python = ">=3.10"
645
+ dependencies = ["flask>=3.0", "flask-cors>=4.0"]
646
+
647
+ [project.optional-dependencies]
648
+ dev = ["pytest>=7.0", "behave>=1.2", "flake8>=6.0", "black>=23.0", "isort>=5.0"]
649
+
650
+ [tool.black]
651
+ line-length = 100
652
+
653
+ [tool.isort]
654
+ profile = "black"
655
+
656
+ [tool.pytest.ini_options]
657
+ testpaths = ["tests"]
658
+ """
659
+ _write_file(root / "pyproject.toml", pyproject)
660
+ files.append(str(root / "pyproject.toml"))
661
+
662
+ # src/__init__.py
663
+ _write_file(root / "src" / "__init__.py", f'{CUI_CODE_HEADER}\n"""Package init."""\n')
664
+ files.append(str(root / "src" / "__init__.py"))
665
+
666
+ # src/app.py
667
+ app_py = f'''{CUI_CODE_HEADER}
668
+ """Flask application factory for {name}."""
669
+
670
+ from flask import Flask, jsonify
671
+ from flask_cors import CORS
672
+
673
+
674
+ def create_app(config: dict = None) -> Flask:
675
+ """Create and configure the Flask application.
676
+
677
+ Args:
678
+ config: Optional configuration overrides.
679
+
680
+ Returns:
681
+ Configured Flask app instance.
682
+ """
683
+ app = Flask(__name__)
684
+ CORS(app)
685
+
686
+ if config:
687
+ app.config.update(config)
688
+
689
+ @app.route("/health", methods=["GET"])
690
+ def health():
691
+ """Health check endpoint."""
692
+ return jsonify({{"status": "healthy", "service": "{name}"}})
693
+
694
+ @app.route("/api/v1/status", methods=["GET"])
695
+ def status():
696
+ """API status endpoint."""
697
+ return jsonify({{
698
+ "service": "{name}",
699
+ "version": "0.1.0",
700
+ "status": "operational",
701
+ }})
702
+
703
+ # Register blueprints here
704
+ # from src.routes import my_blueprint
705
+ # app.register_blueprint(my_blueprint)
706
+
707
+ return app
708
+ '''
709
+ _write_file(root / "src" / "app.py", app_py)
710
+ files.append(str(root / "src" / "app.py"))
711
+
712
+ # src/main.py
713
+ main_py = f'''{CUI_CODE_HEADER}
714
+ """Main entry point for {name} API."""
715
+
716
+ from src.app import create_app
717
+
718
+ app = create_app()
719
+
720
+ if __name__ == "__main__":
721
+ app.run(host="0.0.0.0", port=8000, debug=os.environ.get("FLASK_DEBUG", "false").lower() == "true")
722
+ '''
723
+ _write_file(root / "src" / "main.py", main_py)
724
+ files.append(str(root / "src" / "main.py"))
725
+
726
+ # tests/conftest.py
727
+ conftest = f'''{CUI_CODE_HEADER}
728
+ """Pytest configuration and fixtures for API tests."""
729
+
730
+ import pytest
731
+ from src.app import create_app
732
+
733
+
734
+ @pytest.fixture
735
+ def app():
736
+ """Create test application."""
737
+ app = create_app({{"TESTING": True}})
738
+ return app
739
+
740
+
741
+ @pytest.fixture
742
+ def client(app):
743
+ """Create test client."""
744
+ return app.test_client()
745
+ '''
746
+ _write_file(root / "tests" / "conftest.py", conftest)
747
+ files.append(str(root / "tests" / "conftest.py"))
748
+
749
+ _create_gitkeep(root / "tests" / "features")
750
+ files.append(str(root / "tests" / "features" / ".gitkeep"))
751
+ _create_gitkeep(root / "tests" / "steps")
752
+ files.append(str(root / "tests" / "steps" / ".gitkeep"))
753
+
754
+ # Dockerfile
755
+ dockerfile = """\
756
+ # CUI // SP-CTI
757
+ FROM python:3.11-slim AS base
758
+
759
+ RUN groupadd -r appuser && useradd -r -g appuser -d /app -s /sbin/nologin appuser
760
+ WORKDIR /app
761
+
762
+ COPY pyproject.toml .
763
+ RUN pip install --no-cache-dir -e .
764
+
765
+ COPY src/ src/
766
+
767
+ USER appuser
768
+
769
+ EXPOSE 8000
770
+
771
+ HEALTHCHECK --interval=30s --timeout=5s --retries=3 \\
772
+ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')" || exit 1
773
+
774
+ ENTRYPOINT ["python", "-m", "src.main"]
775
+ """
776
+ _write_file(root / "Dockerfile", dockerfile)
777
+ files.append(str(root / "Dockerfile"))
778
+
779
+ _write_file(root / ".gitignore", _common_gitignore())
780
+ files.append(str(root / ".gitignore"))
781
+
782
+ _write_file(root / "README.md", _readme_content(name, "api"))
783
+ files.append(str(root / "README.md"))
784
+
785
+ _write_file(root / "compliance" / "README.md", _compliance_readme())
786
+ files.append(str(root / "compliance" / "README.md"))
787
+ for sub in ["ssp", "poam", "stig", "sbom"]:
788
+ _create_gitkeep(root / "compliance" / sub)
789
+ files.append(str(root / "compliance" / sub / ".gitkeep"))
790
+
791
+ print(f"Scaffolded API project: {root}")
792
+ return files
793
+
794
+
795
+ def scaffold_cli(project_path: str, name: str) -> List[str]:
796
+ """Scaffold a CLI tool project with argparse.
797
+
798
+ Returns:
799
+ List of created file paths.
800
+ """
801
+ root = Path(project_path) / name
802
+ files = []
803
+
804
+ # pyproject.toml
805
+ pyproject = f"""\
806
+ [build-system]
807
+ requires = ["setuptools>=68.0", "wheel"]
808
+ build-backend = "setuptools.backends._legacy:_Backend"
809
+
810
+ [project]
811
+ name = "{name}"
812
+ version = "0.1.0"
813
+ description = "CLI tool - CUI // SP-CTI"
814
+ requires-python = ">=3.10"
815
+
816
+ [project.scripts]
817
+ {name} = "src.cli:main"
818
+
819
+ [project.optional-dependencies]
820
+ dev = ["pytest>=7.0", "flake8>=6.0", "black>=23.0"]
821
+
822
+ [tool.black]
823
+ line-length = 100
824
+
825
+ [tool.pytest.ini_options]
826
+ testpaths = ["tests"]
827
+ """
828
+ _write_file(root / "pyproject.toml", pyproject)
829
+ files.append(str(root / "pyproject.toml"))
830
+
831
+ # src/__init__.py
832
+ _write_file(root / "src" / "__init__.py", f'{CUI_CODE_HEADER}\n"""Package init."""\n')
833
+ files.append(str(root / "src" / "__init__.py"))
834
+
835
+ # src/cli.py
836
+ cli_py = f'''{CUI_CODE_HEADER}
837
+ """Command-line interface for {name}."""
838
+
839
+ import argparse
840
+ import json
841
+ import logging
842
+ import sys
843
+ from typing import List, Optional
844
+
845
+ logging.basicConfig(
846
+ level=logging.INFO,
847
+ format="%(asctime)s [%(levelname)s] %(message)s",
848
+ )
849
+ logger = logging.getLogger(__name__)
850
+
851
+
852
+ def cmd_run(args: argparse.Namespace) -> int:
853
+ """Execute the main command.
854
+
855
+ Args:
856
+ args: Parsed command-line arguments.
857
+
858
+ Returns:
859
+ Exit code (0 for success).
860
+ """
861
+ logger.info(f"Running {name} with input: {{args.input}}")
862
+ # TODO: Implement command logic
863
+ result = {{"status": "success", "input": args.input}}
864
+ if args.output_format == "json":
865
+ print(json.dumps(result, indent=2))
866
+ else:
867
+ print(f"Result: {{result}}")
868
+ return 0
869
+
870
+
871
+ def cmd_version(args: argparse.Namespace) -> int:
872
+ """Print version information."""
873
+ print(f"{name} version 0.1.0")
874
+ return 0
875
+
876
+
877
+ def build_parser() -> argparse.ArgumentParser:
878
+ """Build the argument parser.
879
+
880
+ Returns:
881
+ Configured ArgumentParser.
882
+ """
883
+ parser = argparse.ArgumentParser(
884
+ prog="{name}",
885
+ description="{name} - CUI // SP-CTI",
886
+ )
887
+ parser.add_argument(
888
+ "-v", "--verbose", action="store_true", help="Enable verbose output"
889
+ )
890
+ parser.add_argument(
891
+ "--output-format", choices=["text", "json"], default="text",
892
+ help="Output format (default: text)"
893
+ )
894
+
895
+ sub = parser.add_subparsers(dest="command", help="Available commands")
896
+
897
+ # run command
898
+ p_run = sub.add_parser("run", help="Execute the main operation")
899
+ p_run.add_argument("--input", required=True, help="Input data or file path")
900
+ p_run.add_argument("--dry-run", action="store_true", help="Dry run mode")
901
+
902
+ # version command
903
+ sub.add_parser("version", help="Show version")
904
+
905
+ return parser
906
+
907
+
908
+ def main(argv: Optional[List[str]] = None) -> int:
909
+ """CLI entry point.
910
+
911
+ Args:
912
+ argv: Command-line arguments (defaults to sys.argv).
913
+
914
+ Returns:
915
+ Exit code.
916
+ """
917
+ parser = build_parser()
918
+ args = parser.parse_args(argv)
919
+
920
+ if args.verbose:
921
+ logging.getLogger().setLevel(logging.DEBUG)
922
+
923
+ if not args.command:
924
+ parser.print_help()
925
+ return 1
926
+
927
+ commands = {{
928
+ "run": cmd_run,
929
+ "version": cmd_version,
930
+ }}
931
+ return commands[args.command](args)
932
+
933
+
934
+ if __name__ == "__main__":
935
+ sys.exit(main())
936
+ '''
937
+ _write_file(root / "src" / "cli.py", cli_py)
938
+ files.append(str(root / "src" / "cli.py"))
939
+
940
+ # tests/conftest.py
941
+ conftest = f'''{CUI_CODE_HEADER}
942
+ """Pytest configuration for CLI tests."""
943
+
944
+ import pytest
945
+ '''
946
+ _write_file(root / "tests" / "conftest.py", conftest)
947
+ files.append(str(root / "tests" / "conftest.py"))
948
+ _create_gitkeep(root / "tests" / "features")
949
+ files.append(str(root / "tests" / "features" / ".gitkeep"))
950
+ _create_gitkeep(root / "tests" / "steps")
951
+ files.append(str(root / "tests" / "steps" / ".gitkeep"))
952
+
953
+ _write_file(root / ".gitignore", _common_gitignore())
954
+ files.append(str(root / ".gitignore"))
955
+
956
+ _write_file(root / "README.md", _readme_content(name, "cli"))
957
+ files.append(str(root / "README.md"))
958
+
959
+ _write_file(root / "compliance" / "README.md", _compliance_readme())
960
+ files.append(str(root / "compliance" / "README.md"))
961
+ for sub in ["ssp", "poam", "stig", "sbom"]:
962
+ _create_gitkeep(root / "compliance" / sub)
963
+ files.append(str(root / "compliance" / sub / ".gitkeep"))
964
+
965
+ print(f"Scaffolded CLI project: {root}")
966
+ return files
967
+
968
+
969
+ def scaffold_data_pipeline(project_path: str, name: str) -> List[str]:
970
+ """Scaffold an ETL data pipeline project.
971
+
972
+ Returns:
973
+ List of created file paths.
974
+ """
975
+ root = Path(project_path) / name
976
+ files = []
977
+
978
+ # pyproject.toml
979
+ pyproject = f"""\
980
+ [build-system]
981
+ requires = ["setuptools>=68.0", "wheel"]
982
+ build-backend = "setuptools.backends._legacy:_Backend"
983
+
984
+ [project]
985
+ name = "{name}"
986
+ version = "0.1.0"
987
+ description = "Data pipeline (ETL) - CUI // SP-CTI"
988
+ requires-python = ">=3.10"
989
+
990
+ [project.optional-dependencies]
991
+ dev = ["pytest>=7.0", "flake8>=6.0", "black>=23.0"]
992
+
993
+ [tool.black]
994
+ line-length = 100
995
+
996
+ [tool.pytest.ini_options]
997
+ testpaths = ["tests"]
998
+ """
999
+ _write_file(root / "pyproject.toml", pyproject)
1000
+ files.append(str(root / "pyproject.toml"))
1001
+
1002
+ # src/__init__.py
1003
+ _write_file(root / "src" / "__init__.py", f'{CUI_CODE_HEADER}\n"""Package init."""\n')
1004
+ files.append(str(root / "src" / "__init__.py"))
1005
+
1006
+ # src/pipeline.py
1007
+ pipeline_py = f'''{CUI_CODE_HEADER}
1008
+ """ETL pipeline for {name}.
1009
+
1010
+ Implements Extract-Transform-Load pattern with error handling,
1011
+ logging, and checkpoint support.
1012
+ """
1013
+
1014
+ import json
1015
+ import logging
1016
+ from datetime import datetime, timezone
1017
+ from pathlib import Path
1018
+ from typing import Any, Callable, Dict, List, Optional
1019
+
1020
+ logger = logging.getLogger(__name__)
1021
+
1022
+
1023
+ class PipelineStep:
1024
+ """A single step in the ETL pipeline."""
1025
+
1026
+ def __init__(self, name: str, func: Callable, description: str = "") -> None:
1027
+ self.name = name
1028
+ self.func = func
1029
+ self.description = description
1030
+
1031
+ def run(self, data: Any) -> Any:
1032
+ """Execute this pipeline step.
1033
+
1034
+ Args:
1035
+ data: Input data from the previous step.
1036
+
1037
+ Returns:
1038
+ Transformed data for the next step.
1039
+ """
1040
+ logger.info(f"Running step: {{self.name}}")
1041
+ start = datetime.now(timezone.utc)
1042
+ result = self.func(data)
1043
+ elapsed = (datetime.now(timezone.utc) - start).total_seconds()
1044
+ logger.info(f"Step {{self.name}} completed in {{elapsed:.2f}}s")
1045
+ return result
1046
+
1047
+
1048
+ class Pipeline:
1049
+ """ETL pipeline with ordered steps and error handling."""
1050
+
1051
+ def __init__(self, name: str) -> None:
1052
+ self.name = name
1053
+ self.steps: List[PipelineStep] = []
1054
+ self.checkpoints: Dict[str, Any] = {{}}
1055
+
1056
+ def add_step(self, name: str, func: Callable, description: str = "") -> "Pipeline":
1057
+ """Add a step to the pipeline.
1058
+
1059
+ Args:
1060
+ name: Step name.
1061
+ func: Callable that takes data and returns transformed data.
1062
+ description: Human-readable description.
1063
+
1064
+ Returns:
1065
+ Self for chaining.
1066
+ """
1067
+ self.steps.append(PipelineStep(name, func, description))
1068
+ return self
1069
+
1070
+ def run(self, initial_data: Any = None, resume_from: Optional[str] = None) -> Any:
1071
+ """Execute the full pipeline.
1072
+
1073
+ Args:
1074
+ initial_data: Starting data for the pipeline.
1075
+ resume_from: Optional step name to resume from (uses checkpoint).
1076
+
1077
+ Returns:
1078
+ Final output data.
1079
+ """
1080
+ logger.info(f"Starting pipeline: {{self.name}} ({{len(self.steps)}} steps)")
1081
+ data = initial_data
1082
+ start_idx = 0
1083
+
1084
+ if resume_from:
1085
+ for i, step in enumerate(self.steps):
1086
+ if step.name == resume_from:
1087
+ start_idx = i
1088
+ data = self.checkpoints.get(resume_from, data)
1089
+ logger.info(f"Resuming from step: {{resume_from}}")
1090
+ break
1091
+
1092
+ for step in self.steps[start_idx:]:
1093
+ try:
1094
+ data = step.run(data)
1095
+ self.checkpoints[step.name] = data
1096
+ except Exception as e:
1097
+ logger.error(f"Pipeline failed at step {{step.name}}: {{e}}")
1098
+ raise
1099
+
1100
+ logger.info(f"Pipeline {{self.name}} completed successfully")
1101
+ return data
1102
+
1103
+
1104
+ def extract(source: Any) -> Any:
1105
+ """Extract data from source.
1106
+
1107
+ Args:
1108
+ source: Data source (file path, URL, or raw data).
1109
+
1110
+ Returns:
1111
+ Raw extracted data.
1112
+ """
1113
+ logger.info(f"Extracting data from source")
1114
+ # TODO: Implement extraction logic
1115
+ return source
1116
+
1117
+
1118
+ def transform(data: Any) -> Any:
1119
+ """Transform extracted data.
1120
+
1121
+ Args:
1122
+ data: Raw data to transform.
1123
+
1124
+ Returns:
1125
+ Transformed data.
1126
+ """
1127
+ logger.info(f"Transforming data")
1128
+ # TODO: Implement transformation logic
1129
+ return data
1130
+
1131
+
1132
+ def load(data: Any) -> Any:
1133
+ """Load transformed data to destination.
1134
+
1135
+ Args:
1136
+ data: Transformed data to load.
1137
+
1138
+ Returns:
1139
+ Load result/confirmation.
1140
+ """
1141
+ logger.info(f"Loading data to destination")
1142
+ # TODO: Implement load logic
1143
+ return {{"status": "loaded", "timestamp": datetime.now(timezone.utc).isoformat()}}
1144
+
1145
+
1146
+ def create_default_pipeline() -> Pipeline:
1147
+ """Create the default ETL pipeline.
1148
+
1149
+ Returns:
1150
+ Configured Pipeline instance.
1151
+ """
1152
+ return (
1153
+ Pipeline("{name}")
1154
+ .add_step("extract", extract, "Extract data from source")
1155
+ .add_step("transform", transform, "Transform and clean data")
1156
+ .add_step("load", load, "Load data to destination")
1157
+ )
1158
+ '''
1159
+ _write_file(root / "src" / "pipeline.py", pipeline_py)
1160
+ files.append(str(root / "src" / "pipeline.py"))
1161
+
1162
+ # src/main.py
1163
+ main_py = f'''{CUI_CODE_HEADER}
1164
+ """Main entry point for {name} data pipeline."""
1165
+
1166
+ import argparse
1167
+ import logging
1168
+ import sys
1169
+
1170
+ from src.pipeline import create_default_pipeline
1171
+
1172
+ logging.basicConfig(
1173
+ level=logging.INFO,
1174
+ format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
1175
+ )
1176
+
1177
+
1178
+ def main() -> int:
1179
+ """Run the data pipeline."""
1180
+ parser = argparse.ArgumentParser(description="{name} data pipeline")
1181
+ parser.add_argument("--source", help="Data source path or URL")
1182
+ parser.add_argument("--resume-from", help="Step name to resume from")
1183
+ parser.add_argument("--dry-run", action="store_true", help="Dry run mode")
1184
+ parser.add_argument("--json", action="store_true", dest="json_output", help="JSON output")
1185
+ args = parser.parse_args()
1186
+
1187
+ pipeline = create_default_pipeline()
1188
+ result = pipeline.run(initial_data=args.source, resume_from=args.resume_from)
1189
+ print(f"Pipeline result: {{result}}")
1190
+ return 0
1191
+
1192
+
1193
+ if __name__ == "__main__":
1194
+ sys.exit(main())
1195
+ '''
1196
+ _write_file(root / "src" / "main.py", main_py)
1197
+ files.append(str(root / "src" / "main.py"))
1198
+
1199
+ # tests/conftest.py
1200
+ conftest = f'''{CUI_CODE_HEADER}
1201
+ """Pytest configuration for pipeline tests."""
1202
+
1203
+ import pytest
1204
+ '''
1205
+ _write_file(root / "tests" / "conftest.py", conftest)
1206
+ files.append(str(root / "tests" / "conftest.py"))
1207
+ _create_gitkeep(root / "tests" / "features")
1208
+ files.append(str(root / "tests" / "features" / ".gitkeep"))
1209
+ _create_gitkeep(root / "tests" / "steps")
1210
+ files.append(str(root / "tests" / "steps" / ".gitkeep"))
1211
+
1212
+ # Dockerfile
1213
+ dockerfile = """\
1214
+ # CUI // SP-CTI
1215
+ FROM python:3.11-slim AS base
1216
+
1217
+ RUN groupadd -r appuser && useradd -r -g appuser -d /app -s /sbin/nologin appuser
1218
+ WORKDIR /app
1219
+
1220
+ COPY pyproject.toml .
1221
+ RUN pip install --no-cache-dir -e .
1222
+
1223
+ COPY src/ src/
1224
+
1225
+ USER appuser
1226
+
1227
+ ENTRYPOINT ["python", "-m", "src.main"]
1228
+ """
1229
+ _write_file(root / "Dockerfile", dockerfile)
1230
+ files.append(str(root / "Dockerfile"))
1231
+
1232
+ _write_file(root / ".gitignore", _common_gitignore())
1233
+ files.append(str(root / ".gitignore"))
1234
+
1235
+ _write_file(root / "README.md", _readme_content(name, "data-pipeline"))
1236
+ files.append(str(root / "README.md"))
1237
+
1238
+ _write_file(root / "compliance" / "README.md", _compliance_readme())
1239
+ files.append(str(root / "compliance" / "README.md"))
1240
+ for sub in ["ssp", "poam", "stig", "sbom"]:
1241
+ _create_gitkeep(root / "compliance" / sub)
1242
+ files.append(str(root / "compliance" / sub / ".gitkeep"))
1243
+
1244
+ print(f"Scaffolded data pipeline: {root}")
1245
+ return files
1246
+
1247
+
1248
+ # Dispatch table
1249
+ SCAFFOLDERS = {
1250
+ "python-backend": scaffold_python_backend,
1251
+ "backend": scaffold_python_backend,
1252
+ "javascript-frontend": scaffold_javascript_frontend,
1253
+ "frontend": scaffold_javascript_frontend,
1254
+ "microservice": scaffold_microservice,
1255
+ "api": scaffold_api,
1256
+ "webapp": scaffold_api, # Alias
1257
+ "cli": scaffold_cli,
1258
+ "data-pipeline": scaffold_data_pipeline,
1259
+ "data_pipeline": scaffold_data_pipeline,
1260
+ "etl": scaffold_data_pipeline,
1261
+ }
1262
+
1263
+ # Phase 16: Multi-language scaffolders (Java, Go, Rust, C#, TypeScript)
1264
+ try:
1265
+ import importlib.util
1266
+ _ext_path = Path(__file__).parent / "scaffolder_extended.py"
1267
+ if _ext_path.exists():
1268
+ _spec = importlib.util.spec_from_file_location("scaffolder_extended", _ext_path)
1269
+ _mod = importlib.util.module_from_spec(_spec)
1270
+ _spec.loader.exec_module(_mod)
1271
+ SCAFFOLDERS["java-backend"] = _mod.scaffold_java_backend
1272
+ SCAFFOLDERS["java"] = _mod.scaffold_java_backend
1273
+ SCAFFOLDERS["go-backend"] = _mod.scaffold_go_backend
1274
+ SCAFFOLDERS["go"] = _mod.scaffold_go_backend
1275
+ SCAFFOLDERS["rust-backend"] = _mod.scaffold_rust_backend
1276
+ SCAFFOLDERS["rust"] = _mod.scaffold_rust_backend
1277
+ SCAFFOLDERS["csharp-backend"] = _mod.scaffold_csharp_backend
1278
+ SCAFFOLDERS["csharp"] = _mod.scaffold_csharp_backend
1279
+ SCAFFOLDERS["dotnet"] = _mod.scaffold_csharp_backend
1280
+ SCAFFOLDERS["typescript-backend"] = _mod.scaffold_typescript_backend
1281
+ SCAFFOLDERS["typescript"] = _mod.scaffold_typescript_backend
1282
+ except Exception:
1283
+ pass # Extended scaffolders not available
1284
+
1285
+
1286
+ def _load_dev_profile(scope_id, scope="project", db_path=None):
1287
+ """Load resolved dev profile for scaffolding overrides (Phase 34, D184).
1288
+
1289
+ Returns a dict of resolved profile dimensions, or empty dict if unavailable.
1290
+ """
1291
+ try:
1292
+ from icdev.tools.builder.dev_profile_manager import resolve_profile
1293
+ result = resolve_profile(scope, scope_id, db_path=db_path)
1294
+ if result and "resolved" in result:
1295
+ return result["resolved"]
1296
+ except (ImportError, Exception):
1297
+ pass
1298
+ return {}
1299
+
1300
+
1301
+ def _apply_profile_overrides(content, profile, language="python"):
1302
+ """Apply dev profile overrides to scaffolded file content.
1303
+
1304
+ Replaces hardcoded default values with profile-specified values:
1305
+ - Python version (>=3.10 -> profile value)
1306
+ - Line length (100 -> profile value)
1307
+ - Container base image (python:3.11-slim -> profile value)
1308
+ """
1309
+ if not profile:
1310
+ return content
1311
+
1312
+ style = profile.get("style", {})
1313
+ lang = profile.get("language", {})
1314
+ arch = profile.get("architecture", {})
1315
+
1316
+ # Line length override
1317
+ max_line = style.get("max_line_length")
1318
+ if max_line:
1319
+ content = content.replace("line-length = 100", f"line-length = {max_line}")
1320
+ content = content.replace("line_length = 100", f"line_length = {max_line}")
1321
+
1322
+ # Python version override
1323
+ versions = lang.get("versions", {})
1324
+ py_version = versions.get("python")
1325
+ if py_version and language == "python":
1326
+ content = content.replace('requires-python = ">=3.10"',
1327
+ f'requires-python = "{py_version}"')
1328
+
1329
+ # Container base image override
1330
+ container_bases = arch.get("container_base", {})
1331
+ if language == "python" and container_bases.get("python"):
1332
+ content = content.replace("python:3.11-slim", container_bases["python"])
1333
+ elif language in ("javascript", "typescript") and container_bases.get("typescript"):
1334
+ content = content.replace("node:18-alpine", container_bases["typescript"])
1335
+
1336
+ return content
1337
+
1338
+
1339
+ def _log_audit(project_path: str, name: str, project_type: str, files: List[str]) -> None:
1340
+ """Log scaffolding to audit trail."""
1341
+ try:
1342
+ conn = sqlite3.connect(str(DB_PATH))
1343
+ c = conn.cursor()
1344
+ c.execute(
1345
+ """INSERT INTO audit_trail (project_id, event_type, actor, action, details, affected_files, classification)
1346
+ VALUES (?, ?, ?, ?, ?, ?, ?)""",
1347
+ (
1348
+ None,
1349
+ "project_created",
1350
+ "builder/scaffolder",
1351
+ f"Scaffolded {project_type} project: {name}",
1352
+ json.dumps({"type": project_type, "name": name}),
1353
+ json.dumps(files[:20]), # Limit file list
1354
+ "CUI",
1355
+ ),
1356
+ )
1357
+ conn.commit()
1358
+ conn.close()
1359
+ except Exception as e:
1360
+ print(f"Warning: audit logging failed: {e}")
1361
+
1362
+
1363
+ def _run_agentic_generation(args, base_files):
1364
+ """Run agentic generation pipeline after base scaffold.
1365
+
1366
+ Phase 19: When --agentic is set, this runs:
1367
+ 1. Load or generate fitness scorecard
1368
+ 2. Generate blueprint via app_blueprint.py
1369
+ 3. Generate child app via child_app_generator.py
1370
+
1371
+ The base scaffold provides the language-specific project structure.
1372
+ The agentic pipeline adds GOTCHA framework, agents, memory, CI/CD, etc.
1373
+ """
1374
+ import importlib.util
1375
+
1376
+ Path(args.project_path) / args.name
1377
+
1378
+ # Step 1: Load fitness scorecard
1379
+ scorecard = None
1380
+ if args.fitness_scorecard:
1381
+ scorecard_path = Path(args.fitness_scorecard)
1382
+ if scorecard_path.exists():
1383
+ scorecard = json.load(open(scorecard_path))
1384
+ print(f" Loaded fitness scorecard: {scorecard.get('overall_score', 'N/A')}")
1385
+ else:
1386
+ print(f" Warning: Scorecard not found at {scorecard_path}, using defaults")
1387
+
1388
+ if not scorecard:
1389
+ # Generate default scorecard indicating agentic architecture
1390
+ scorecard = {
1391
+ "component": args.name,
1392
+ "overall_score": 6.5,
1393
+ "scores": {
1394
+ "data_complexity": 5, "decision_complexity": 7,
1395
+ "user_interaction": 6, "integration_density": 7,
1396
+ "compliance_sensitivity": 7, "scale_variability": 5,
1397
+ },
1398
+ "recommendations": {"architecture": "agent"},
1399
+ }
1400
+
1401
+ # Step 2: Parse user decisions
1402
+ user_decisions = {}
1403
+ if args.user_decisions:
1404
+ try:
1405
+ ud_path = Path(args.user_decisions)
1406
+ if ud_path.exists():
1407
+ user_decisions = json.load(open(ud_path))
1408
+ else:
1409
+ user_decisions = json.loads(args.user_decisions)
1410
+ except (json.JSONDecodeError, Exception) as e:
1411
+ print(f" Warning: Could not parse user-decisions: {e}")
1412
+
1413
+ # Step 3: Generate blueprint
1414
+ bp_mod_path = Path(__file__).parent / "app_blueprint.py"
1415
+ if not bp_mod_path.exists():
1416
+ print(" Error: app_blueprint.py not found — cannot run agentic generation")
1417
+ return
1418
+
1419
+ spec = importlib.util.spec_from_file_location("app_blueprint", bp_mod_path)
1420
+ bp_mod = importlib.util.module_from_spec(spec)
1421
+ spec.loader.exec_module(bp_mod)
1422
+
1423
+ blueprint = bp_mod.generate_blueprint(
1424
+ scorecard=scorecard,
1425
+ user_decisions=user_decisions,
1426
+ app_name=args.name,
1427
+ port_offset=getattr(args, "port_offset", 1000),
1428
+ cloud_provider=getattr(args, "cloud_provider", "aws"),
1429
+ cloud_region=getattr(args, "cloud_region", "us-gov-west-1"),
1430
+ govcloud=getattr(args, "govcloud", False),
1431
+ parent_callback_url=getattr(args, "parent_callback_url", None),
1432
+ impact_level=getattr(args, "impact_level", "IL4"),
1433
+ )
1434
+ print(f" Blueprint generated: {blueprint.get('blueprint_id', 'N/A')}")
1435
+ print(f" Capabilities: {sum(1 for v in blueprint.get('capabilities', {}).values() if v)}")
1436
+ print(f" Agents: {len(blueprint.get('agents', []))}")
1437
+
1438
+ # Step 4: Generate child app (overlay onto existing scaffold)
1439
+ gen_mod_path = Path(__file__).parent / "child_app_generator.py"
1440
+ if not gen_mod_path.exists():
1441
+ print(" Error: child_app_generator.py not found")
1442
+ return
1443
+
1444
+ spec2 = importlib.util.spec_from_file_location("child_app_generator", gen_mod_path)
1445
+ gen_mod = importlib.util.module_from_spec(spec2)
1446
+ spec2.loader.exec_module(gen_mod)
1447
+
1448
+ # The child app generator overlays onto the already-scaffolded directory
1449
+ results = gen_mod.generate_child_app(
1450
+ blueprint=blueprint,
1451
+ project_path=args.project_path,
1452
+ name=args.name,
1453
+ icdev_root=BASE_DIR,
1454
+ db_path=DB_PATH,
1455
+ )
1456
+
1457
+ status = results.get("status", "unknown")
1458
+ steps = results.get("steps", {})
1459
+ succeeded = sum(1 for r in steps.values() if r.get("status") == "success")
1460
+ print(f" Agentic generation: {status} ({succeeded}/{len(steps)} steps)")
1461
+
1462
+ if results.get("errors"):
1463
+ for err in results["errors"]:
1464
+ print(f" Error: {err}")
1465
+
1466
+
1467
+ def main():
1468
+ parser = argparse.ArgumentParser(description="Project scaffolding from templates")
1469
+ parser.add_argument("--project-path", required=True, help="Parent directory for the project")
1470
+ parser.add_argument("--name", required=True, help="Project name")
1471
+ parser.add_argument(
1472
+ "--type",
1473
+ required=True,
1474
+ choices=sorted(set(SCAFFOLDERS.keys())),
1475
+ help="Project type to scaffold",
1476
+ )
1477
+
1478
+ # Phase 34: Dev profile override
1479
+ parser.add_argument(
1480
+ "--dev-profile-scope", type=str, default=None,
1481
+ help="Dev profile scope to load (e.g., 'project')")
1482
+ parser.add_argument(
1483
+ "--dev-profile-scope-id", type=str, default=None,
1484
+ help="Dev profile scope ID to resolve (e.g., 'proj-123')")
1485
+
1486
+ # Phase 26: MOSA scaffolding flag
1487
+ parser.add_argument(
1488
+ "--mosa", action="store_true",
1489
+ help="Add MOSA directories: interfaces/, docs/icd/, docs/tsp/, openapi/")
1490
+
1491
+ # Phase 19: Agentic generation flags
1492
+ agentic_group = parser.add_argument_group("agentic generation (Phase 19)")
1493
+ agentic_group.add_argument(
1494
+ "--agentic", action="store_true",
1495
+ help="Generate mini-ICDEV clone with GOTCHA framework, agents, memory, CI/CD")
1496
+ agentic_group.add_argument(
1497
+ "--fitness-scorecard", type=str, default=None,
1498
+ help="Path to fitness scorecard JSON (from agentic_fitness.py)")
1499
+ agentic_group.add_argument(
1500
+ "--user-decisions", type=str, default=None,
1501
+ help="User decisions JSON string or path to JSON file")
1502
+ agentic_group.add_argument(
1503
+ "--port-offset", type=int, default=1000,
1504
+ help="Port offset from ICDEV base ports (default: 1000)")
1505
+ agentic_group.add_argument(
1506
+ "--parent-callback-url", type=str, default=None,
1507
+ help="URL for parent ICDEV A2A callback")
1508
+ agentic_group.add_argument(
1509
+ "--cloud-provider", type=str, default="aws",
1510
+ choices=["aws", "gcp", "azure", "oracle", "ibm"],
1511
+ help="Target cloud provider (default: aws)")
1512
+ agentic_group.add_argument(
1513
+ "--cloud-region", type=str, default="us-gov-west-1",
1514
+ help="Target deployment region (default: us-gov-west-1)")
1515
+ agentic_group.add_argument(
1516
+ "--govcloud", action="store_true",
1517
+ help="Enable GovCloud/Gov-region endpoints")
1518
+ agentic_group.add_argument(
1519
+ "--impact-level", type=str, default="IL4",
1520
+ choices=["IL2", "IL4", "IL5", "IL6"],
1521
+ help="DoD Impact Level (default: IL4)")
1522
+
1523
+ args = parser.parse_args()
1524
+
1525
+ # Phase 34: Load dev profile for overrides
1526
+ dev_profile = {}
1527
+ if args.dev_profile_scope_id:
1528
+ dev_profile = _load_dev_profile(
1529
+ args.dev_profile_scope_id,
1530
+ scope=args.dev_profile_scope or "project",
1531
+ )
1532
+ if dev_profile:
1533
+ print(f" Dev profile loaded: {len(dev_profile)} dimensions")
1534
+
1535
+ # Run base scaffold
1536
+ scaffolder = SCAFFOLDERS[args.type]
1537
+ files = scaffolder(args.project_path, args.name)
1538
+
1539
+ # Phase 34: Apply dev profile overrides to generated files
1540
+ if dev_profile:
1541
+ lang = "python" # Default; detect from project type
1542
+ if args.type in ("javascript-frontend", "typescript-backend", "typescript"):
1543
+ lang = "typescript"
1544
+ elif args.type in ("java-backend", "java"):
1545
+ lang = "java"
1546
+ elif args.type in ("go-backend", "go"):
1547
+ lang = "go"
1548
+
1549
+ for fpath in files:
1550
+ try:
1551
+ p = Path(fpath)
1552
+ if p.exists() and p.suffix in (".toml", ".yaml", ".yml", ".json", ".md", ""):
1553
+ original = p.read_text(encoding="utf-8")
1554
+ updated = _apply_profile_overrides(original, dev_profile, language=lang)
1555
+ if updated != original:
1556
+ p.write_text(updated, encoding="utf-8")
1557
+ except Exception:
1558
+ pass # Non-critical: profile overrides are best-effort
1559
+
1560
+ _log_audit(args.project_path, args.name, args.type, files)
1561
+
1562
+ print(f"\nScaffolded {len(files)} files for '{args.name}' ({args.type})")
1563
+
1564
+ # Phase 26: If --mosa, create MOSA directory structure
1565
+ if getattr(args, 'mosa', False):
1566
+ mosa_dirs = ["interfaces", "docs/icd", "docs/tsp", "openapi"]
1567
+ proj_root = os.path.join(args.project_path, args.name)
1568
+ for d in mosa_dirs:
1569
+ dp = os.path.join(proj_root, d)
1570
+ os.makedirs(dp, exist_ok=True)
1571
+ gitkeep = os.path.join(dp, ".gitkeep")
1572
+ if not os.path.exists(gitkeep):
1573
+ with open(gitkeep, "w") as f:
1574
+ f.write("")
1575
+ files.append(gitkeep)
1576
+ print(f" MOSA directories created: {', '.join(mosa_dirs)}")
1577
+
1578
+ # Phase 19: If --agentic, run the full agentic generation pipeline
1579
+ if args.agentic:
1580
+ print("\n--- Agentic Generation (Phase 19) ---")
1581
+ try:
1582
+ _run_agentic_generation(args, files)
1583
+ except Exception as e:
1584
+ print(f" Agentic generation failed: {e}")
1585
+ import traceback
1586
+ traceback.print_exc()
1587
+
1588
+
1589
+ if __name__ == "__main__":
1590
+ main()