icdev 0.0.3__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 (1214) hide show
  1. args/agent_config.yaml +113 -0
  2. args/audit_regimes/cisa_sbd.json +381 -0
  3. args/audit_regimes/cmmc_l2.json +906 -0
  4. args/audit_regimes/dod_cssp.json +393 -0
  5. args/audit_regimes/dodi_5000_87.json +297 -0
  6. args/audit_regimes/fedramp_moderate.json +650 -0
  7. args/audit_regimes/ieee_1012.json +373 -0
  8. args/audit_regimes/nist_800_171.json +624 -0
  9. args/audit_regimes/nist_800_53.json +907 -0
  10. args/cloudforge_blueprints/aws_commercial.yaml +29 -0
  11. args/cloudforge_blueprints/aws_govcloud_il4.yaml +34 -0
  12. args/cloudforge_blueprints/aws_govcloud_il5.yaml +38 -0
  13. args/cloudforge_blueprints/azure_commercial.yaml +28 -0
  14. args/cloudforge_blueprints/azure_gov_il4.yaml +32 -0
  15. args/cloudforge_blueprints/azure_gov_il5.yaml +36 -0
  16. args/cloudforge_blueprints/gcp_commercial.yaml +28 -0
  17. args/cloudforge_blueprints/oci_commercial.yaml +28 -0
  18. args/cloudforge_config.yaml +231 -0
  19. args/cloudforge_runbook_templates/backup_verify.yaml +98 -0
  20. args/cloudforge_runbook_templates/dr_failover.yaml +107 -0
  21. args/cloudforge_runbook_templates/health_check.yaml +97 -0
  22. args/cloudforge_runbook_templates/incident_response.yaml +101 -0
  23. args/cloudforge_runbook_templates/migration_cutover.yaml +105 -0
  24. args/cloudforge_runbook_templates/patch_rollout.yaml +92 -0
  25. args/cloudforge_runbook_templates/zone_provision.yaml +93 -0
  26. args/code_pattern_config.yaml +151 -0
  27. args/code_quality_config.yaml +47 -0
  28. args/compliance_config.yaml +17 -0
  29. args/control_inheritance.yaml +177 -0
  30. args/csp_mcp_config.yaml +41 -0
  31. args/cui_markings.yaml +35 -0
  32. args/databridge_config.yaml +232 -0
  33. args/db_config.yaml +116 -0
  34. args/decision_tables/agent_trust_decision.yaml +143 -0
  35. args/decision_tables/ato_boundary_impact.yaml +132 -0
  36. args/decision_tables/deployment_approval.yaml +152 -0
  37. args/degradation_matrix.yaml +163 -0
  38. args/devsecops_config.yaml +286 -0
  39. args/endpoint_security_config.yaml +207 -0
  40. args/exit_criteria.yaml +102 -0
  41. args/feature_flags.yaml +235 -0
  42. args/file_access_tiers.yaml +88 -0
  43. args/forge_studio/blueprint_config.yaml +27 -0
  44. args/forge_studio/component_catalog.json +411 -0
  45. args/forge_studio/workflow_templates.yaml +103 -0
  46. args/govcon_config.yaml +41 -0
  47. args/harness_config.yaml +67 -0
  48. args/innovation_config.yaml +321 -0
  49. args/knowledge_graph_config.yaml +113 -0
  50. args/llm_config.yaml +222 -0
  51. args/marketplace_config.yaml +260 -0
  52. args/monitoring_config.yaml +127 -0
  53. args/mosa_config.yaml +190 -0
  54. args/observability_tracing_config.yaml +170 -0
  55. args/owasp_agentic_config.yaml +171 -0
  56. args/pipeline_gates.yaml +197 -0
  57. args/project_defaults.yaml +235 -0
  58. args/prompt_chains.yaml +163 -0
  59. args/rag_config.yaml +167 -0
  60. args/research_config.yaml +89 -0
  61. args/resilience_config.yaml +197 -0
  62. args/ricoas_config.yaml +191 -0
  63. args/security_gates.yaml +763 -0
  64. args/storage_config.yaml +63 -0
  65. args/writeguard_config.yaml +131 -0
  66. args/zta_config.yaml +247 -0
  67. context/__init__.py +6 -0
  68. context/agent/__init__.py +6 -0
  69. context/agent/response_schemas/__init__.py +6 -0
  70. context/agent/response_schemas/debate_position.json +46 -0
  71. context/agent/response_schemas/fitness_scorecard.json +74 -0
  72. context/agent/response_schemas/review_decision.json +39 -0
  73. context/agent/response_schemas/task_decomposition.json +82 -0
  74. context/agent/response_schemas/veto_decision.json +40 -0
  75. context/agentic/__init__.py +6 -0
  76. context/agentic/architecture_patterns.md +269 -0
  77. context/agentic/capability_registry.yaml +223 -0
  78. context/agentic/csp_integration.md +30 -0
  79. context/agentic/csp_mcp_registry.yaml +280 -0
  80. context/agentic/fitness_rubric.md +56 -0
  81. context/agentic/governance_baseline.md +205 -0
  82. context/ci/__init__.py +6 -0
  83. context/ci/worktree_templates.json +44 -0
  84. context/cloud/__init__.py +6 -0
  85. context/cloud/csp_service_registry.json +739 -0
  86. context/compliance/__init__.py +6 -0
  87. context/compliance/ai_rmf_crosswalk.yaml +226 -0
  88. context/compliance/atlas_mitigations.json +293 -0
  89. context/compliance/atlas_techniques.json +833 -0
  90. context/compliance/cisa_sbd_requirements.json +477 -0
  91. context/compliance/cjis_security_policy.json +522 -0
  92. context/compliance/cmmc_practices.json +2494 -0
  93. context/compliance/cmmc_report_template.md +142 -0
  94. context/compliance/cnssi_1253_overlay.json +109 -0
  95. context/compliance/control_crosswalk.json +1914 -0
  96. context/compliance/control_families/__init__.py +6 -0
  97. context/compliance/csp_certifications.json +251 -0
  98. context/compliance/cssp_report_template.md +193 -0
  99. context/compliance/cui_templates/__init__.py +6 -0
  100. context/compliance/cui_templates/banner_block.txt +4 -0
  101. context/compliance/cui_templates/code_header.txt +8 -0
  102. context/compliance/cui_templates/document_template.md +35 -0
  103. context/compliance/data_type_framework_map.json +321 -0
  104. context/compliance/data_type_registry.json +147 -0
  105. context/compliance/dod_cssp_8530.json +463 -0
  106. context/compliance/eu_ai_act_annex_iii.json +108 -0
  107. context/compliance/export_templates/__init__.py +6 -0
  108. context/compliance/export_templates/emass_controls.csv.j2 +4 -0
  109. context/compliance/export_templates/evidence_package.md.j2 +39 -0
  110. context/compliance/export_templates/executive_summary.md.j2 +55 -0
  111. context/compliance/export_templates/poam_tracking.csv.j2 +4 -0
  112. context/compliance/fedramp_20x_ksi_schemas.json +133 -0
  113. context/compliance/fedramp_high_baseline.json +4370 -0
  114. context/compliance/fedramp_moderate_baseline.json +2183 -0
  115. context/compliance/fedramp_report_template.md +181 -0
  116. context/compliance/fips_200_areas.json +362 -0
  117. context/compliance/gao_ai_accountability.json +262 -0
  118. context/compliance/hipaa_security_rule.json +720 -0
  119. context/compliance/hitrust_csf_v11.json +930 -0
  120. context/compliance/impact_level_profiles.json +251 -0
  121. context/compliance/incident_response_template.md +1110 -0
  122. context/compliance/iso27001_2022_controls.json +750 -0
  123. context/compliance/iso27001_nist_bridge.json +382 -0
  124. context/compliance/iso42001_controls.json +254 -0
  125. context/compliance/ivv_checklist_template.md +80 -0
  126. context/compliance/ivv_report_template.md +116 -0
  127. context/compliance/ivv_requirements.json +372 -0
  128. context/compliance/mosa_crosswalk.json +327 -0
  129. context/compliance/mosa_framework.json +250 -0
  130. context/compliance/narrative_templates/AC.md.j2 +101 -0
  131. context/compliance/narrative_templates/AU.md.j2 +106 -0
  132. context/compliance/narrative_templates/IA.md.j2 +104 -0
  133. context/compliance/narrative_templates/SC.md.j2 +102 -0
  134. context/compliance/narrative_templates/SI.md.j2 +111 -0
  135. context/compliance/narrative_templates/__init__.py +6 -0
  136. context/compliance/narrative_templates/default.md.j2 +50 -0
  137. context/compliance/narrative_templates/executive_summary.j2 +27 -0
  138. context/compliance/narrative_templates/poam_milestone.j2 +19 -0
  139. context/compliance/narrative_templates/ssp_section.j2 +11 -0
  140. context/compliance/nist_800_171_controls.json +1552 -0
  141. context/compliance/nist_800_207_crosswalk.json +399 -0
  142. context/compliance/nist_800_207_zta.json +258 -0
  143. context/compliance/nist_800_53.json +324 -0
  144. context/compliance/nist_ai_600_1_genai.json +326 -0
  145. context/compliance/nist_ai_rmf.json +206 -0
  146. context/compliance/nist_sp_800_60_types.json +1667 -0
  147. context/compliance/omb_m25_21_high_impact_ai.json +248 -0
  148. context/compliance/omb_m26_04_unbiased_ai.json +262 -0
  149. context/compliance/owasp_agentic_asi.json +133 -0
  150. context/compliance/owasp_agentic_threats.json +285 -0
  151. context/compliance/owasp_llm_top10.json +274 -0
  152. context/compliance/pci_dss_v4.json +510 -0
  153. context/compliance/poam_template.md +117 -0
  154. context/compliance/safeai_controls.json +512 -0
  155. context/compliance/sbd_report_template.md +77 -0
  156. context/compliance/siem_config_templates/__init__.py +6 -0
  157. context/compliance/siem_config_templates/filebeat.yml +213 -0
  158. context/compliance/siem_config_templates/log_sources.json +208 -0
  159. context/compliance/soc2_trust_criteria.json +661 -0
  160. context/compliance/ssp_template.md +432 -0
  161. context/compliance/stig_templates/__init__.py +6 -0
  162. context/compliance/stig_templates/webapp_stig.json +139 -0
  163. context/compliance/xai_requirements.json +108 -0
  164. context/dashboard/__init__.py +6 -0
  165. context/dashboard/nlq_examples.json +50 -0
  166. context/dashboard/schema_descriptions.json +23 -0
  167. context/icdev_methodology.md +100 -0
  168. context/integration/__init__.py +6 -0
  169. context/integration/approval_workflows.json +32 -0
  170. context/integration/gitlab_field_mappings.json +33 -0
  171. context/integration/jira_field_mappings.json +32 -0
  172. context/integration/reqif_export_schema.json +23 -0
  173. context/integration/servicenow_field_mappings.json +22 -0
  174. context/languages/__init__.py +6 -0
  175. context/languages/framework_patterns.json +205 -0
  176. context/languages/language_registry.json +279 -0
  177. context/llm/__init__.py +6 -0
  178. context/llm/example_provider.py +89 -0
  179. context/marketplace/assets/writeguard-core.yaml +100 -0
  180. context/marketplace/assets/writeguard-govcon.yaml +45 -0
  181. context/marketplace/assets/writeguard-style-guides.yaml +44 -0
  182. context/mbse/__init__.py +6 -0
  183. context/mbse/des_report_template.md +162 -0
  184. context/mbse/des_requirements.json +411 -0
  185. context/mbse/digital_thread_patterns.json +403 -0
  186. context/mbse/reqif_schema.json +280 -0
  187. context/mbse/sysml_element_types.json +432 -0
  188. context/oscal/NIST_SP-800-53_rev5_catalog.json +254987 -0
  189. context/oscal/README.md +43 -0
  190. context/patterns/__init__.py +6 -0
  191. context/profiles/__init__.py +6 -0
  192. context/profiles/dod_baseline_v1.yaml +145 -0
  193. context/profiles/fedramp_baseline_v1.yaml +143 -0
  194. context/profiles/financial_baseline_v1.yaml +142 -0
  195. context/profiles/healthcare_baseline_v1.yaml +135 -0
  196. context/profiles/law_enforcement_v1.yaml +129 -0
  197. context/profiles/startup_v1.yaml +134 -0
  198. context/rag/source_mappings.json +42 -0
  199. context/requirements/__init__.py +6 -0
  200. context/requirements/ambiguity_patterns.json +97 -0
  201. context/requirements/boundary_impact_rules.json +123 -0
  202. context/requirements/default_constitutions.json +67 -0
  203. context/requirements/document_extraction_rules.json +58 -0
  204. context/requirements/gap_patterns.json +108 -0
  205. context/requirements/readiness_rubric.json +78 -0
  206. context/requirements/red_alternative_patterns.json +210 -0
  207. context/requirements/safe_templates.json +72 -0
  208. context/requirements/spec_quality_checklist.json +122 -0
  209. context/research/regulatory_registry.json +114 -0
  210. context/research/verticals/cybersecurity.json +127 -0
  211. context/research/verticals/defense.json +104 -0
  212. context/research/verticals/fintech.json +125 -0
  213. context/research/verticals/healthcare.json +118 -0
  214. context/research/verticals/logistics.json +117 -0
  215. context/research/verticals/trading.json +145 -0
  216. context/simulation/__init__.py +6 -0
  217. context/simulation/architecture_patterns.json +36 -0
  218. context/simulation/coa_templates.json +38 -0
  219. context/simulation/cost_models.json +23 -0
  220. context/simulation/risk_categories.json +46 -0
  221. context/supply_chain/__init__.py +6 -0
  222. context/supply_chain/isa_templates.json +129 -0
  223. context/supply_chain/nist_800_161_controls.json +247 -0
  224. context/supply_chain/scrm_risk_matrix.json +147 -0
  225. context/templates/__init__.py +6 -0
  226. context/templates/ansible/__init__.py +6 -0
  227. context/templates/ansible/playbooks/__init__.py +6 -0
  228. context/templates/ansible/roles/__init__.py +6 -0
  229. context/templates/gitlab_ci/__init__.py +6 -0
  230. context/templates/grafana/__init__.py +6 -0
  231. context/templates/kubernetes/__init__.py +6 -0
  232. context/templates/project/__init__.py +6 -0
  233. context/templates/project/api/__init__.py +6 -0
  234. context/templates/project/cli/__init__.py +6 -0
  235. context/templates/project/data_pipeline/__init__.py +6 -0
  236. context/templates/project/iac/__init__.py +6 -0
  237. context/templates/project/javascript_frontend/__init__.py +6 -0
  238. context/templates/project/javascript_frontend/src/__init__.py +6 -0
  239. context/templates/project/javascript_frontend/tests/__init__.py +6 -0
  240. context/templates/project/microservice/__init__.py +6 -0
  241. context/templates/project/python_backend/__init__.py +6 -0
  242. context/templates/project/python_backend/src/__init__.py +6 -0
  243. context/templates/project/python_backend/tests/__init__.py +6 -0
  244. context/templates/project/python_backend/tests/features/__init__.py +6 -0
  245. context/templates/project/python_backend/tests/steps/__init__.py +6 -0
  246. context/templates/terraform/__init__.py +6 -0
  247. context/templates/terraform/govcloud_base/__init__.py +6 -0
  248. context/templates/terraform/modules/__init__.py +6 -0
  249. context/tone/__init__.py +6 -0
  250. context/writing/grammar_rules/common_errors.json +306 -0
  251. context/writing/grammar_rules/govcon_vocabulary.json +113 -0
  252. context/writing/style_guides/academic.yaml +43 -0
  253. context/writing/style_guides/business.yaml +42 -0
  254. context/writing/style_guides/government.yaml +59 -0
  255. context/writing/style_guides/proposal.yaml +58 -0
  256. context/writing/style_guides/technical.yaml +43 -0
  257. docs/adr/README.md +66 -0
  258. docs/adr/connector-forge-decisions.md +318 -0
  259. docs/adr/core-decisions.md +289 -0
  260. docs/adr/db-decisions.md +94 -0
  261. docs/adr/harness-decisions.md +122 -0
  262. docs/adr/innovation-decisions.md +262 -0
  263. docs/adr/marketplace-decisions.md +109 -0
  264. docs/adr/sbd-decisions.md +109 -0
  265. docs/adr/scale-engine-decisions.md +108 -0
  266. docs/adr/writeguard-decisions.md +136 -0
  267. docs/architecture/bounded-contexts.md +1032 -0
  268. docs/features/phase-65-writeguard.md +139 -0
  269. docs/features/phase-66-marketplace-commerce.md +79 -0
  270. docs/features/phase-67-knowledge-ingestion-rag-autodraft.md +97 -0
  271. docs/features/phase-68-enhanced-autodraft-pipeline.md +109 -0
  272. docs/features/phase-69-proposalai-marketplace-module.md +131 -0
  273. docs/features/phase-70-databridge.md +214 -0
  274. docs/features/phase-71-databridge-messaging.md +102 -0
  275. docs/implementation-plan-architecture-evolution.md +614 -0
  276. docs/marketplace/CONTRIBUTING.md +124 -0
  277. docs/marketplace/module_manifest_schema.yaml +83 -0
  278. docs/research/ai-architecture-patterns-2024-2026.md +1236 -0
  279. docs/research/app-builder-platform-analysis.md +582 -0
  280. docs/research/architecture-patterns-c4-ddd-agentic.md +871 -0
  281. docs/research/flowable-boat-competitive-analysis.md +426 -0
  282. docs/research/modern-dev-practices-2024-2026.md +1615 -0
  283. docs/research/secure-by-design-cloudyrion-adaptation.md +270 -0
  284. goals/agent_management.md +144 -0
  285. goals/ai_accountability.md +90 -0
  286. goals/ai_narratives.md +79 -0
  287. goals/ai_transparency.md +76 -0
  288. goals/ato_simulator.md +78 -0
  289. goals/audit_engine.md +177 -0
  290. goals/bite_sized_plans.md +225 -0
  291. goals/boundary_supply_chain.md +206 -0
  292. goals/brainstorming_gate.md +186 -0
  293. goals/build_app.md +604 -0
  294. goals/cato_live_evidence.md +77 -0
  295. goals/cloudforge.md +106 -0
  296. goals/code_intelligence.md +197 -0
  297. goals/compliance_workflow.md +858 -0
  298. goals/connector_forge.md +133 -0
  299. goals/databridge.md +128 -0
  300. goals/deploy_workflow.md +390 -0
  301. goals/developer_scorecard.md +78 -0
  302. goals/devsecops_workflow.md +408 -0
  303. goals/firmware_sbom.md +79 -0
  304. goals/forge_hub.md +78 -0
  305. goals/golden_path.md +77 -0
  306. goals/harness_engineering.md +91 -0
  307. goals/integration_testing.md +189 -0
  308. goals/knowledge_graph.md +128 -0
  309. goals/maintenance_audit.md +196 -0
  310. goals/manifest.md +50 -0
  311. goals/monitoring.md +126 -0
  312. goals/mosa_workflow.md +463 -0
  313. goals/multi_agent_orchestration.md +68 -0
  314. goals/observability_traceability_xai.md +154 -0
  315. goals/owasp_agentic_security.md +395 -0
  316. goals/pr_intelligence.md +78 -0
  317. goals/requirements_intake.md +213 -0
  318. goals/secure_by_design.md +135 -0
  319. goals/security_scan.md +381 -0
  320. goals/self_healing.md +120 -0
  321. goals/simulation_engine.md +111 -0
  322. goals/subagent_review.md +205 -0
  323. goals/systematic_debugging.md +257 -0
  324. goals/tdd_workflow.md +403 -0
  325. goals/template_exchange.md +77 -0
  326. goals/thread_heatmap.md +77 -0
  327. goals/threat_modeler.md +77 -0
  328. goals/verification_iron_law.md +192 -0
  329. goals/vsm_dashboard.md +76 -0
  330. goals/writeguard.md +89 -0
  331. goals/zero_trust_architecture.md +403 -0
  332. hardprompts/__init__.py +6 -0
  333. hardprompts/agent/__init__.py +6 -0
  334. hardprompts/agent/agentic_architect.md +100 -0
  335. hardprompts/agent/debate_prompt.md +32 -0
  336. hardprompts/agent/fitness_evaluation.md +48 -0
  337. hardprompts/agent/governance_review.md +214 -0
  338. hardprompts/agent/reviewer_prompt.md +34 -0
  339. hardprompts/agent/skill_design.md +172 -0
  340. hardprompts/agent/task_decomposition.md +275 -0
  341. hardprompts/agent/veto_check_prompt.md +33 -0
  342. hardprompts/architect/__init__.py +6 -0
  343. hardprompts/architect/api_design.md +283 -0
  344. hardprompts/architect/data_model.md +277 -0
  345. hardprompts/architect/system_design.md +180 -0
  346. hardprompts/builder/__init__.py +6 -0
  347. hardprompts/builder/code_generation.md +59 -0
  348. hardprompts/builder/refactor.md +58 -0
  349. hardprompts/builder/scaffold_project.md +69 -0
  350. hardprompts/builder/test_generation.md +87 -0
  351. hardprompts/ci/__init__.py +6 -0
  352. hardprompts/ci/worktree_setup.md +35 -0
  353. hardprompts/compliance/__init__.py +6 -0
  354. hardprompts/compliance/cmmc_assessment.md +63 -0
  355. hardprompts/compliance/cssp_assessment.md +75 -0
  356. hardprompts/compliance/cui_marking.md +86 -0
  357. hardprompts/compliance/fedramp_assessment.md +55 -0
  358. hardprompts/compliance/ivv_assessment.md +96 -0
  359. hardprompts/compliance/poam_generation.md +57 -0
  360. hardprompts/compliance/sbd_assessment.md +101 -0
  361. hardprompts/compliance/security_categorization.md +74 -0
  362. hardprompts/compliance/ssp_generation.md +56 -0
  363. hardprompts/compliance/stig_evaluation.md +63 -0
  364. hardprompts/dashboard/__init__.py +6 -0
  365. hardprompts/dashboard/nlq_system_prompt.md +26 -0
  366. hardprompts/infra/__init__.py +6 -0
  367. hardprompts/infra/k8s_manifests.md +118 -0
  368. hardprompts/infra/pipeline_generation.md +160 -0
  369. hardprompts/infra/terraform_generation.md +92 -0
  370. hardprompts/integration/__init__.py +6 -0
  371. hardprompts/integration/approval_review.md +17 -0
  372. hardprompts/integration/jira_mapping.md +25 -0
  373. hardprompts/integration/servicenow_mapping.md +14 -0
  374. hardprompts/knowledge/__init__.py +6 -0
  375. hardprompts/knowledge/pattern_detection.md +73 -0
  376. hardprompts/knowledge/recommendation_engine.md +90 -0
  377. hardprompts/knowledge/root_cause_analysis.md +91 -0
  378. hardprompts/maintenance/__init__.py +6 -0
  379. hardprompts/maintenance/maintenance_assessment.md +82 -0
  380. hardprompts/mbse/__init__.py +6 -0
  381. hardprompts/mbse/digital_thread.md +67 -0
  382. hardprompts/mbse/model_import.md +62 -0
  383. hardprompts/mbse/model_to_code.md +65 -0
  384. hardprompts/modernization/__init__.py +6 -0
  385. hardprompts/modernization/legacy_analysis.md +93 -0
  386. hardprompts/modernization/migration_planning.md +150 -0
  387. hardprompts/modernization/seven_r_assessment.md +107 -0
  388. hardprompts/proposal_draft.md +53 -0
  389. hardprompts/rag_citation.md +12 -0
  390. hardprompts/rag_rerank.md +31 -0
  391. hardprompts/requirements/__init__.py +6 -0
  392. hardprompts/requirements/bdd_generation.md +35 -0
  393. hardprompts/requirements/clarification_prioritization.md +29 -0
  394. hardprompts/requirements/decomposition.md +60 -0
  395. hardprompts/requirements/document_extraction.md +45 -0
  396. hardprompts/requirements/gap_detection.md +70 -0
  397. hardprompts/requirements/intake_conversation.md +101 -0
  398. hardprompts/requirements/readiness_assessment.md +39 -0
  399. hardprompts/requirements/spec_quality.md +33 -0
  400. hardprompts/requirements/traceability_analysis.md +23 -0
  401. hardprompts/security/__init__.py +6 -0
  402. hardprompts/security/endpoint_security.md +78 -0
  403. hardprompts/security/threat_model.md +70 -0
  404. hardprompts/security/vulnerability_assessment.md +81 -0
  405. hardprompts/simulation/__init__.py +6 -0
  406. hardprompts/simulation/architecture_impact.md +27 -0
  407. hardprompts/simulation/coa_alternative.md +27 -0
  408. hardprompts/simulation/coa_generation.md +25 -0
  409. hardprompts/simulation/compliance_impact.md +28 -0
  410. hardprompts/simulation/cost_estimation.md +33 -0
  411. hardprompts/simulation/risk_assessment.md +28 -0
  412. hardprompts/translation/code_translation.md +68 -0
  413. hardprompts/translation/dependency_suggestion.md +44 -0
  414. hardprompts/translation/test_translation.md +64 -0
  415. hardprompts/translation/translation_repair.md +59 -0
  416. icdev-0.0.3.dist-info/METADATA +909 -0
  417. icdev-0.0.3.dist-info/RECORD +1214 -0
  418. icdev-0.0.3.dist-info/WHEEL +5 -0
  419. icdev-0.0.3.dist-info/entry_points.txt +9 -0
  420. icdev-0.0.3.dist-info/licenses/LICENSE +201 -0
  421. icdev-0.0.3.dist-info/licenses/NOTICE +11 -0
  422. icdev-0.0.3.dist-info/top_level.txt +7 -0
  423. memory/MEMORY.md +52 -0
  424. memory/logs/2026-02-14.md +17 -0
  425. memory/logs/2026-03-03.md +2 -0
  426. memory/logs/__init__.py +1 -0
  427. tools/a2a/icdev_callback_client.py +210 -0
  428. tools/agent/cards/architect_card.json +29 -0
  429. tools/agent/cards/builder_card.json +34 -0
  430. tools/agent/cards/compliance_card.json +29 -0
  431. tools/agent/cards/connector_forge_card.json +49 -0
  432. tools/agent/cards/devsecops_zta_card.json +24 -0
  433. tools/agent/cards/knowledge_card.json +29 -0
  434. tools/agent/cards/monitor_card.json +29 -0
  435. tools/agent/cards/orchestrator_card.json +29 -0
  436. tools/agent/cards/requirements_analyst_card.json +24 -0
  437. tools/agent/cards/security_card.json +29 -0
  438. tools/agent/cards/simulation_card.json +24 -0
  439. tools/agent/cards/supply_chain_card.json +24 -0
  440. tools/analysis/__init__.py +1 -0
  441. tools/analysis/code_analyzer.py +770 -0
  442. tools/analysis/runtime_feedback.py +379 -0
  443. tools/analytics/__init__.py +2 -0
  444. tools/analytics/scorecard.py +538 -0
  445. tools/analytics/vsm_engine.py +612 -0
  446. tools/architecture/__init__.py +2 -0
  447. tools/architecture/adr_extractor.py +393 -0
  448. tools/audit/__init__.py +1 -0
  449. tools/audit/audit_logger.py +199 -0
  450. tools/audit/audit_query.py +153 -0
  451. tools/audit/decision_recorder.py +73 -0
  452. tools/audit_engine/__init__.py +12 -0
  453. tools/audit_engine/ai_advisor.py +906 -0
  454. tools/audit_engine/cli.py +286 -0
  455. tools/audit_engine/comparator.py +305 -0
  456. tools/audit_engine/eject_scaffolder.py +399 -0
  457. tools/audit_engine/engine.py +614 -0
  458. tools/audit_engine/git_fetcher.py +341 -0
  459. tools/audit_engine/regime_loader.py +200 -0
  460. tools/audit_engine/regime_updater.py +325 -0
  461. tools/audit_engine/report_card.py +289 -0
  462. tools/audit_engine/scanner.py +684 -0
  463. tools/audit_engine/self_heal.py +1042 -0
  464. tools/ci/__init__.py +2 -0
  465. tools/ci/connectors/__init__.py +2 -0
  466. tools/ci/connectors/base_connector.py +80 -0
  467. tools/ci/connectors/connector_registry.py +188 -0
  468. tools/ci/connectors/mattermost_connector.py +159 -0
  469. tools/ci/connectors/slack_connector.py +197 -0
  470. tools/ci/core/__init__.py +2 -0
  471. tools/ci/core/air_gap_detector.py +115 -0
  472. tools/ci/core/comment_handler.py +192 -0
  473. tools/ci/core/conversation_manager.py +480 -0
  474. tools/ci/core/event_envelope.py +500 -0
  475. tools/ci/core/event_router.py +444 -0
  476. tools/ci/core/failure_parser.py +397 -0
  477. tools/ci/core/recovery_engine.py +527 -0
  478. tools/ci/gate_enforcer.py +361 -0
  479. tools/ci/modules/__init__.py +2 -0
  480. tools/ci/modules/agent.py +271 -0
  481. tools/ci/modules/git_ops.py +175 -0
  482. tools/ci/modules/state.py +117 -0
  483. tools/ci/modules/vcs.py +303 -0
  484. tools/ci/modules/workflow_ops.py +295 -0
  485. tools/ci/modules/worktree.py +337 -0
  486. tools/ci/pipeline_config_generator.py +558 -0
  487. tools/ci/pr_intelligence.py +485 -0
  488. tools/ci/triggers/__init__.py +2 -0
  489. tools/ci/triggers/gitlab_task_monitor.py +327 -0
  490. tools/ci/triggers/poll_trigger.py +237 -0
  491. tools/ci/triggers/webhook_server.py +356 -0
  492. tools/ci/workflows/__init__.py +2 -0
  493. tools/ci/workflows/icdev_build.py +140 -0
  494. tools/ci/workflows/icdev_comply.py +284 -0
  495. tools/ci/workflows/icdev_document.py +152 -0
  496. tools/ci/workflows/icdev_e2e.py +188 -0
  497. tools/ci/workflows/icdev_patch.py +186 -0
  498. tools/ci/workflows/icdev_plan.py +202 -0
  499. tools/ci/workflows/icdev_plan_build.py +41 -0
  500. tools/ci/workflows/icdev_plan_build_test.py +46 -0
  501. tools/ci/workflows/icdev_plan_build_test_review.py +47 -0
  502. tools/ci/workflows/icdev_review.py +126 -0
  503. tools/ci/workflows/icdev_sdlc.py +261 -0
  504. tools/ci/workflows/icdev_test.py +240 -0
  505. tools/cli/__init__.py +1 -0
  506. tools/cli/output_formatter.py +756 -0
  507. tools/cloudforge/__init__.py +12 -0
  508. tools/cloudforge/airgap/__init__.py +2 -0
  509. tools/cloudforge/airgap/il_classifier.py +70 -0
  510. tools/cloudforge/airgap/offline_validator.py +42 -0
  511. tools/cloudforge/airgap/shift_emulator.py +155 -0
  512. tools/cloudforge/airgap/sneakernet.py +91 -0
  513. tools/cloudforge/cd_hub/__init__.py +2 -0
  514. tools/cloudforge/cd_hub/canary_deployer.py +88 -0
  515. tools/cloudforge/cd_hub/gitops_renderer.py +123 -0
  516. tools/cloudforge/cd_hub/hub_controller.py +143 -0
  517. tools/cloudforge/cd_hub/pipeline_bridge.py +30 -0
  518. tools/cloudforge/cd_hub/rollback_engine.py +29 -0
  519. tools/cloudforge/cd_hub/spoke_agent.py +51 -0
  520. tools/cloudforge/compliance/__init__.py +2 -0
  521. tools/cloudforge/compliance/ato_accelerator.py +272 -0
  522. tools/cloudforge/compliance/control_inheritor.py +127 -0
  523. tools/cloudforge/compliance/evidence_generator.py +129 -0
  524. tools/cloudforge/compliance/poam_bridge.py +41 -0
  525. tools/cloudforge/compliance/ssp_bridge.py +52 -0
  526. tools/cloudforge/compliance/stig_bridge.py +41 -0
  527. tools/cloudforge/container_forge/__init__.py +2 -0
  528. tools/cloudforge/container_forge/bigbang_renderer.py +85 -0
  529. tools/cloudforge/container_forge/hardener.py +169 -0
  530. tools/cloudforge/container_forge/image_scanner_bridge.py +33 -0
  531. tools/cloudforge/container_forge/runtime_policy.py +87 -0
  532. tools/cloudforge/container_forge/sbom_bridge.py +42 -0
  533. tools/cloudforge/finops/__init__.py +2 -0
  534. tools/cloudforge/finops/anomaly_detector.py +78 -0
  535. tools/cloudforge/finops/budget_tracker.py +96 -0
  536. tools/cloudforge/finops/chargeback.py +69 -0
  537. tools/cloudforge/finops/cost_collector.py +141 -0
  538. tools/cloudforge/finops/optimizer.py +55 -0
  539. tools/cloudforge/hybrid/__init__.py +2 -0
  540. tools/cloudforge/hybrid/connection_manager.py +141 -0
  541. tools/cloudforge/hybrid/dns_federator.py +56 -0
  542. tools/cloudforge/hybrid/health_monitor.py +108 -0
  543. tools/cloudforge/hybrid/identity_federator.py +53 -0
  544. tools/cloudforge/hybrid/network_bridge.py +68 -0
  545. tools/cloudforge/hybrid/topology_manager.py +147 -0
  546. tools/cloudforge/hybrid/workload_abstractor.py +92 -0
  547. tools/cloudforge/iac/__init__.py +2 -0
  548. tools/cloudforge/iac/drift_detector.py +154 -0
  549. tools/cloudforge/iac/module_library.py +265 -0
  550. tools/cloudforge/iac/opentofu_adapter.py +89 -0
  551. tools/cloudforge/iac/pulumi_renderer.py +292 -0
  552. tools/cloudforge/iac/state_backend.py +146 -0
  553. tools/cloudforge/iac/terraform_renderer.py +626 -0
  554. tools/cloudforge/landing_zone/__init__.py +2 -0
  555. tools/cloudforge/landing_zone/blueprint_loader.py +98 -0
  556. tools/cloudforge/landing_zone/blueprint_validator.py +113 -0
  557. tools/cloudforge/landing_zone/zone_provisioner.py +306 -0
  558. tools/cloudforge/landing_zone/zone_state.py +143 -0
  559. tools/cloudforge/mbse_thread/__init__.py +2 -0
  560. tools/cloudforge/mbse_thread/ato_thread_weaver.py +111 -0
  561. tools/cloudforge/mbse_thread/control_tracer.py +68 -0
  562. tools/cloudforge/mbse_thread/system_boundary.py +83 -0
  563. tools/cloudforge/metastore/__init__.py +2 -0
  564. tools/cloudforge/metastore/dependency_graph.py +202 -0
  565. tools/cloudforge/metastore/discovery.py +192 -0
  566. tools/cloudforge/metastore/registry.py +185 -0
  567. tools/cloudforge/metastore/rto_tracker.py +92 -0
  568. tools/cloudforge/metastore/runbook_linker.py +82 -0
  569. tools/cloudforge/migration/__init__.py +2 -0
  570. tools/cloudforge/migration/assessor.py +187 -0
  571. tools/cloudforge/migration/cutover_orchestrator.py +117 -0
  572. tools/cloudforge/migration/databridge_bridge.py +92 -0
  573. tools/cloudforge/migration/planner.py +98 -0
  574. tools/cloudforge/migration/risk_scorer.py +97 -0
  575. tools/cloudforge/migration/validation_runner.py +45 -0
  576. tools/cloudforge/migration/workload_inventory.py +107 -0
  577. tools/cloudforge/provider.py +319 -0
  578. tools/cloudforge/providers/__init__.py +2 -0
  579. tools/cloudforge/providers/aws_commercial.py +92 -0
  580. tools/cloudforge/providers/aws_govcloud.py +229 -0
  581. tools/cloudforge/providers/aws_secret.py +83 -0
  582. tools/cloudforge/providers/azure_commercial.py +80 -0
  583. tools/cloudforge/providers/azure_gov.py +91 -0
  584. tools/cloudforge/providers/azure_secret.py +71 -0
  585. tools/cloudforge/providers/gcp.py +102 -0
  586. tools/cloudforge/providers/oci.py +102 -0
  587. tools/cloudforge/registry.py +140 -0
  588. tools/cloudforge/runbooks/__init__.py +2 -0
  589. tools/cloudforge/runbooks/ai_generator.py +119 -0
  590. tools/cloudforge/runbooks/dag_validator.py +219 -0
  591. tools/cloudforge/runbooks/engine.py +470 -0
  592. tools/cloudforge/runbooks/models.py +99 -0
  593. tools/cloudforge/runbooks/snippet_library.py +158 -0
  594. tools/cloudforge/runbooks/template_loader.py +122 -0
  595. tools/cloudforge/runbooks/visualization.py +108 -0
  596. tools/cloudforge/siem/__init__.py +2 -0
  597. tools/cloudforge/siem/alert_rules.py +86 -0
  598. tools/cloudforge/siem/correlation_engine.py +61 -0
  599. tools/cloudforge/siem/log_aggregator.py +113 -0
  600. tools/cloudforge/siem/siem_dashboard_data.py +28 -0
  601. tools/cloudforge/supply_chain/__init__.py +2 -0
  602. tools/cloudforge/supply_chain/bridge.py +33 -0
  603. tools/cloudforge/supply_chain/iac_dependency_scanner.py +36 -0
  604. tools/cloudforge/supply_chain/provider_trust_scorer.py +54 -0
  605. tools/compat/__init__.py +21 -0
  606. tools/compat/cli_harmonizer.py +251 -0
  607. tools/compat/datetime_utils.py +18 -0
  608. tools/compat/db_utils.py +190 -0
  609. tools/compat/platform_utils.py +123 -0
  610. tools/compliance/__init__.py +1 -0
  611. tools/compliance/accountability_manager.py +391 -0
  612. tools/compliance/ai_accountability_audit.py +287 -0
  613. tools/compliance/ai_impact_assessor.py +267 -0
  614. tools/compliance/ai_incident_response.py +295 -0
  615. tools/compliance/ai_inventory_manager.py +233 -0
  616. tools/compliance/ai_reassessment_scheduler.py +250 -0
  617. tools/compliance/ai_transparency_audit.py +247 -0
  618. tools/compliance/atlas_assessor.py +276 -0
  619. tools/compliance/atlas_report_generator.py +1199 -0
  620. tools/compliance/base_assessor.py +591 -0
  621. tools/compliance/cato_live_engine.py +607 -0
  622. tools/compliance/cato_monitor.py +1371 -0
  623. tools/compliance/cato_scheduler.py +698 -0
  624. tools/compliance/cjis_assessor.py +76 -0
  625. tools/compliance/classification_manager.py +1340 -0
  626. tools/compliance/cmmc_assessor.py +1478 -0
  627. tools/compliance/cmmc_report_generator.py +1087 -0
  628. tools/compliance/compliance_detector.py +452 -0
  629. tools/compliance/compliance_exporter.py +418 -0
  630. tools/compliance/compliance_status.py +810 -0
  631. tools/compliance/control_mapper.py +488 -0
  632. tools/compliance/crosswalk_engine.py +1208 -0
  633. tools/compliance/cssp_assessor.py +1032 -0
  634. tools/compliance/cssp_evidence_collector.py +716 -0
  635. tools/compliance/cssp_report_generator.py +1103 -0
  636. tools/compliance/cui_marker.py +387 -0
  637. tools/compliance/diagram_validator.py +599 -0
  638. tools/compliance/emass/__init__.py +2 -0
  639. tools/compliance/emass/emass_client.py +822 -0
  640. tools/compliance/emass/emass_export.py +758 -0
  641. tools/compliance/emass/emass_sync.py +807 -0
  642. tools/compliance/eu_ai_act_classifier.py +193 -0
  643. tools/compliance/evidence_collector.py +459 -0
  644. tools/compliance/fairness_assessor.py +310 -0
  645. tools/compliance/fedramp_20x_ksi_emitter.py +692 -0
  646. tools/compliance/fedramp_assessor.py +1795 -0
  647. tools/compliance/fedramp_authorization_packager.py +137 -0
  648. tools/compliance/fedramp_ksi_generator.py +349 -0
  649. tools/compliance/fedramp_report_generator.py +1115 -0
  650. tools/compliance/fips199_categorizer.py +869 -0
  651. tools/compliance/fips200_validator.py +304 -0
  652. tools/compliance/firmware_sbom.py +646 -0
  653. tools/compliance/gao_ai_assessor.py +228 -0
  654. tools/compliance/gao_evidence_builder.py +302 -0
  655. tools/compliance/hipaa_assessor.py +78 -0
  656. tools/compliance/hitrust_assessor.py +49 -0
  657. tools/compliance/incident_response_plan.py +705 -0
  658. tools/compliance/inheritance_engine.py +693 -0
  659. tools/compliance/iso27001_assessor.py +92 -0
  660. tools/compliance/iso42001_assessor.py +114 -0
  661. tools/compliance/ivv_assessor.py +2314 -0
  662. tools/compliance/ivv_report_generator.py +1649 -0
  663. tools/compliance/model_card_generator.py +291 -0
  664. tools/compliance/mosa_assessor.py +117 -0
  665. tools/compliance/multi_regime_assessor.py +441 -0
  666. tools/compliance/narrative_generator.py +1012 -0
  667. tools/compliance/narrative_quality_gate.py +701 -0
  668. tools/compliance/narrative_workflow.py +814 -0
  669. tools/compliance/nist_800_207_assessor.py +191 -0
  670. tools/compliance/nist_ai_600_1_assessor.py +185 -0
  671. tools/compliance/nist_ai_rmf_assessor.py +110 -0
  672. tools/compliance/nist_lookup.py +244 -0
  673. tools/compliance/omb_m25_21_assessor.py +225 -0
  674. tools/compliance/omb_m26_04_assessor.py +185 -0
  675. tools/compliance/oscal_catalog_adapter.py +395 -0
  676. tools/compliance/oscal_generator.py +2157 -0
  677. tools/compliance/oscal_tools.py +1182 -0
  678. tools/compliance/oscal_validator.py +692 -0
  679. tools/compliance/owasp_agentic_assessor.py +227 -0
  680. tools/compliance/owasp_asi_assessor.py +197 -0
  681. tools/compliance/owasp_llm_assessor.py +245 -0
  682. tools/compliance/pci_dss_assessor.py +80 -0
  683. tools/compliance/pi_compliance_tracker.py +1447 -0
  684. tools/compliance/poam_generator.py +388 -0
  685. tools/compliance/resolve_marking.py +272 -0
  686. tools/compliance/sbd_assessor.py +2070 -0
  687. tools/compliance/sbd_report_generator.py +1223 -0
  688. tools/compliance/sbom_generator.py +993 -0
  689. tools/compliance/siem_config_generator.py +661 -0
  690. tools/compliance/slsa_attestation_generator.py +479 -0
  691. tools/compliance/soc2_assessor.py +77 -0
  692. tools/compliance/ssp_generator.py +556 -0
  693. tools/compliance/stig_checker.py +712 -0
  694. tools/compliance/swft_evidence_bundler.py +326 -0
  695. tools/compliance/system_card_generator.py +303 -0
  696. tools/compliance/template_exchange.py +513 -0
  697. tools/compliance/traceability_matrix.py +1268 -0
  698. tools/compliance/universal_classification_manager.py +1159 -0
  699. tools/compliance/xacta/__init__.py +2 -0
  700. tools/compliance/xacta/xacta_client.py +438 -0
  701. tools/compliance/xacta/xacta_export.py +546 -0
  702. tools/compliance/xacta/xacta_sync.py +322 -0
  703. tools/compliance/xai_assessor.py +231 -0
  704. tools/core/__init__.py +2 -0
  705. tools/core/circuit_breaker.py +353 -0
  706. tools/core/compliance_sidecar.py +344 -0
  707. tools/core/container.py +110 -0
  708. tools/core/errors.py +256 -0
  709. tools/core/feature_flags.py +311 -0
  710. tools/core/task_dlq.py +350 -0
  711. tools/dashboard/__init__.py +2 -0
  712. tools/dashboard/app.py +6288 -0
  713. tools/dashboard/templates/agent_evolution.html +287 -0
  714. tools/dashboard/templates/agents/list.html +71 -0
  715. tools/dashboard/templates/agents.html +132 -0
  716. tools/dashboard/templates/architecture.html +289 -0
  717. tools/dashboard/templates/ato_simulator.html +170 -0
  718. tools/dashboard/templates/audit_engine.html +844 -0
  719. tools/dashboard/templates/base.html +236 -0
  720. tools/dashboard/templates/cato_live.html +116 -0
  721. tools/dashboard/templates/cloudforge.html +195 -0
  722. tools/dashboard/templates/cloudforge_finops.html +111 -0
  723. tools/dashboard/templates/cloudforge_hybrid.html +122 -0
  724. tools/dashboard/templates/cloudforge_metastore.html +234 -0
  725. tools/dashboard/templates/cloudforge_migration.html +87 -0
  726. tools/dashboard/templates/cloudforge_runbooks.html +201 -0
  727. tools/dashboard/templates/cloudforge_siem.html +94 -0
  728. tools/dashboard/templates/compliance_accel.html +292 -0
  729. tools/dashboard/templates/crashes.html +122 -0
  730. tools/dashboard/templates/databridge.html +305 -0
  731. tools/dashboard/templates/databridge_analytics.html +195 -0
  732. tools/dashboard/templates/databridge_mapping.html +345 -0
  733. tools/dashboard/templates/databridge_messaging.html +321 -0
  734. tools/dashboard/templates/decisions.html +258 -0
  735. tools/dashboard/templates/devices.html +151 -0
  736. tools/dashboard/templates/devsecops_maturity.html +278 -0
  737. tools/dashboard/templates/edge_ai.html +128 -0
  738. tools/dashboard/templates/firmware.html +120 -0
  739. tools/dashboard/templates/firmware_sbom.html +193 -0
  740. tools/dashboard/templates/forge_hub.html +196 -0
  741. tools/dashboard/templates/forge_studio.html +379 -0
  742. tools/dashboard/templates/forge_studio_analytics.html +360 -0
  743. tools/dashboard/templates/forge_studio_builder.html +1637 -0
  744. tools/dashboard/templates/forge_studio_compliance.html +310 -0
  745. tools/dashboard/templates/forge_studio_deploy.html +573 -0
  746. tools/dashboard/templates/forge_studio_enterprise.html +888 -0
  747. tools/dashboard/templates/forge_studio_marketplace.html +502 -0
  748. tools/dashboard/templates/forge_studio_workflow.html +696 -0
  749. tools/dashboard/templates/golden_path.html +175 -0
  750. tools/dashboard/templates/govcon.html +280 -0
  751. tools/dashboard/templates/harness.html +148 -0
  752. tools/dashboard/templates/index.html +207 -0
  753. tools/dashboard/templates/intelligence.html +336 -0
  754. tools/dashboard/templates/knowledge/index.html +190 -0
  755. tools/dashboard/templates/knowledge_graph.html +739 -0
  756. tools/dashboard/templates/login.html +51 -0
  757. tools/dashboard/templates/marketplace.html +336 -0
  758. tools/dashboard/templates/marketplace_admin.html +247 -0
  759. tools/dashboard/templates/missions.html +403 -0
  760. tools/dashboard/templates/narratives.html +154 -0
  761. tools/dashboard/templates/pr_intelligence.html +151 -0
  762. tools/dashboard/templates/proposals/detail.html +300 -0
  763. tools/dashboard/templates/proposals/list.html +52 -0
  764. tools/dashboard/templates/proposals/sam_detail.html +132 -0
  765. tools/dashboard/templates/proposals/section_detail.html +375 -0
  766. tools/dashboard/templates/research.html +222 -0
  767. tools/dashboard/templates/resilience.html +300 -0
  768. tools/dashboard/templates/scorecard.html +162 -0
  769. tools/dashboard/templates/simulator.html +131 -0
  770. tools/dashboard/templates/template_exchange.html +147 -0
  771. tools/dashboard/templates/thread_heatmap.html +151 -0
  772. tools/dashboard/templates/threat_model.html +195 -0
  773. tools/dashboard/templates/vsm.html +141 -0
  774. tools/dashboard/templates/writeguard.html +277 -0
  775. tools/databridge/__init__.py +5 -0
  776. tools/databridge/agent/__init__.py +2 -0
  777. tools/databridge/agent/daemon.py +227 -0
  778. tools/databridge/agent/tunnel.py +101 -0
  779. tools/databridge/agent/ws_relay.py +91 -0
  780. tools/databridge/analytics.py +167 -0
  781. tools/databridge/arrow_pipeline.py +327 -0
  782. tools/databridge/connection_manager.py +424 -0
  783. tools/databridge/connector.py +331 -0
  784. tools/databridge/connectors/__init__.py +2 -0
  785. tools/databridge/connectors/argocd_connector.py +160 -0
  786. tools/databridge/connectors/avro_connector.py +203 -0
  787. tools/databridge/connectors/azure_blob.py +63 -0
  788. tools/databridge/connectors/cdc_connector.py +205 -0
  789. tools/databridge/connectors/csv_connector.py +172 -0
  790. tools/databridge/connectors/datadog_connector.py +153 -0
  791. tools/databridge/connectors/discord_messaging.py +215 -0
  792. tools/databridge/connectors/dynamics365.py +151 -0
  793. tools/databridge/connectors/elasticsearch_connector.py +145 -0
  794. tools/databridge/connectors/email_base.py +114 -0
  795. tools/databridge/connectors/excel_connector.py +175 -0
  796. tools/databridge/connectors/fsspec_base.py +300 -0
  797. tools/databridge/connectors/gcs.py +53 -0
  798. tools/databridge/connectors/github_connector.py +138 -0
  799. tools/databridge/connectors/gitlab_connector.py +132 -0
  800. tools/databridge/connectors/gmail_connector.py +182 -0
  801. tools/databridge/connectors/hdfs.py +57 -0
  802. tools/databridge/connectors/health_base.py +401 -0
  803. tools/databridge/connectors/hubspot.py +124 -0
  804. tools/databridge/connectors/imap_connector.py +171 -0
  805. tools/databridge/connectors/jenkins_connector.py +138 -0
  806. tools/databridge/connectors/jira_connector.py +86 -0
  807. tools/databridge/connectors/json_connector.py +184 -0
  808. tools/databridge/connectors/kafka_connector.py +246 -0
  809. tools/databridge/connectors/kinesis_connector.py +238 -0
  810. tools/databridge/connectors/local_fs.py +30 -0
  811. tools/databridge/connectors/matrix.py +197 -0
  812. tools/databridge/connectors/mattermost_messaging.py +184 -0
  813. tools/databridge/connectors/messaging_base.py +172 -0
  814. tools/databridge/connectors/mssql.py +63 -0
  815. tools/databridge/connectors/mysql.py +57 -0
  816. tools/databridge/connectors/netsuite.py +170 -0
  817. tools/databridge/connectors/o365_mail.py +196 -0
  818. tools/databridge/connectors/oracle.py +65 -0
  819. tools/databridge/connectors/pagerduty_connector.py +162 -0
  820. tools/databridge/connectors/parquet_connector.py +131 -0
  821. tools/databridge/connectors/postgresql.py +58 -0
  822. tools/databridge/connectors/s3.py +65 -0
  823. tools/databridge/connectors/saas_base.py +198 -0
  824. tools/databridge/connectors/salesforce.py +126 -0
  825. tools/databridge/connectors/sap.py +89 -0
  826. tools/databridge/connectors/servicenow.py +60 -0
  827. tools/databridge/connectors/signal_messaging.py +150 -0
  828. tools/databridge/connectors/slack_messaging.py +203 -0
  829. tools/databridge/connectors/smtp_connector.py +126 -0
  830. tools/databridge/connectors/soap_base.py +258 -0
  831. tools/databridge/connectors/splunk_connector.py +171 -0
  832. tools/databridge/connectors/sql_base.py +310 -0
  833. tools/databridge/connectors/sqlite_connector.py +76 -0
  834. tools/databridge/connectors/teams.py +148 -0
  835. tools/databridge/connectors/telegram.py +192 -0
  836. tools/databridge/connectors/whatsapp.py +137 -0
  837. tools/databridge/data_profiler.py +99 -0
  838. tools/databridge/forge/__init__.py +6 -0
  839. tools/databridge/forge/base_selector.py +150 -0
  840. tools/databridge/forge/code_generator.py +206 -0
  841. tools/databridge/forge/community_hub.py +539 -0
  842. tools/databridge/forge/forge_agent.py +306 -0
  843. tools/databridge/forge/import_handler.py +133 -0
  844. tools/databridge/forge/integration_tester.py +127 -0
  845. tools/databridge/forge/marketplace_publisher.py +164 -0
  846. tools/databridge/forge/promoter.py +159 -0
  847. tools/databridge/forge/sandbox_manager.py +257 -0
  848. tools/databridge/forge/spec_parser.py +358 -0
  849. tools/databridge/forge/static_validator.py +363 -0
  850. tools/databridge/forge/templates/__init__.py +591 -0
  851. tools/databridge/format_converter.py +188 -0
  852. tools/databridge/mapping_engine.py +348 -0
  853. tools/databridge/messaging/__init__.py +5 -0
  854. tools/databridge/messaging/agent_bridge.py +254 -0
  855. tools/databridge/messaging/message_envelope.py +111 -0
  856. tools/databridge/messaging/message_logger.py +204 -0
  857. tools/databridge/messaging/messaging_daemon.py +326 -0
  858. tools/databridge/messaging/oauth2_manager.py +411 -0
  859. tools/databridge/pii_detector.py +221 -0
  860. tools/databridge/registry.py +352 -0
  861. tools/databridge/relay_server.py +105 -0
  862. tools/databridge/scale/__init__.py +16 -0
  863. tools/databridge/scale/backpressure.py +134 -0
  864. tools/databridge/scale/chunked_pipeline.py +169 -0
  865. tools/databridge/scale/connection_pool.py +293 -0
  866. tools/databridge/scale/engine.py +492 -0
  867. tools/databridge/scale/worker_pool.py +140 -0
  868. tools/databridge/scale/write_batcher.py +250 -0
  869. tools/databridge/schema_engine.py +324 -0
  870. tools/databridge/stream_manager.py +225 -0
  871. tools/databridge/sync_engine.py +411 -0
  872. tools/databridge/transforms.py +302 -0
  873. tools/db/__init__.py +1 -0
  874. tools/db/backup.py +312 -0
  875. tools/db/backup_manager.py +832 -0
  876. tools/db/init_icdev_db.py +7753 -0
  877. tools/db/init_sparkpilot_db.py +431 -0
  878. tools/db/migrate.py +177 -0
  879. tools/db/migrate_innovation_audit.py +165 -0
  880. tools/db/migration_runner.py +548 -0
  881. tools/db/migrations/001_baseline/meta.json +9 -0
  882. tools/db/migrations/001_baseline/up.py +67 -0
  883. tools/db/migrations/002_memory_enhancements/down.sql +8 -0
  884. tools/db/migrations/002_memory_enhancements/meta.json +9 -0
  885. tools/db/migrations/002_memory_enhancements/up.py +119 -0
  886. tools/db/migrations/003_dev_profiles/meta.json +8 -0
  887. tools/db/migrations/003_dev_profiles/up.py +93 -0
  888. tools/db/migrations/004_innovation_engine/down.py +19 -0
  889. tools/db/migrations/004_innovation_engine/up.py +227 -0
  890. tools/db/migrations/005_phase_37_ai_security/down.py +19 -0
  891. tools/db/migrations/005_phase_37_ai_security/up.py +257 -0
  892. tools/db/migrations/006_phase_36_evolution/down.py +21 -0
  893. tools/db/migrations/006_phase_36_evolution/up.py +323 -0
  894. tools/db/migrations/007_phase_38_cloud/down.py +14 -0
  895. tools/db/migrations/007_phase_38_cloud/up.py +110 -0
  896. tools/db/migrations/008_phase36_37_integration/up.py +55 -0
  897. tools/db/migrations/__init__.py +2 -0
  898. tools/db/pg_migrate.py +642 -0
  899. tools/db/storage.py +1080 -0
  900. tools/decisions/__init__.py +2 -0
  901. tools/decisions/dmn_engine.py +695 -0
  902. tools/devsecops/__init__.py +2 -0
  903. tools/devsecops/attestation_manager.py +449 -0
  904. tools/devsecops/network_segmentation_generator.py +604 -0
  905. tools/devsecops/pdp_config_generator.py +1246 -0
  906. tools/devsecops/pipeline_security_generator.py +475 -0
  907. tools/devsecops/policy_generator.py +644 -0
  908. tools/devsecops/profile_manager.py +374 -0
  909. tools/devsecops/service_mesh_generator.py +1063 -0
  910. tools/devsecops/zta_maturity_scorer.py +355 -0
  911. tools/devsecops/zta_terraform_generator.py +1301 -0
  912. tools/edge_ai/__init__.py +2 -0
  913. tools/edge_ai/model_manager.py +200 -0
  914. tools/embedded/__init__.py +2 -0
  915. tools/embedded/cmake_generator.py +318 -0
  916. tools/embedded/crash_analyzer.py +191 -0
  917. tools/embedded/nl_to_firmware.py +277 -0
  918. tools/events/__init__.py +1 -0
  919. tools/events/event_bus.py +199 -0
  920. tools/finetune/pair_generator.py +832 -0
  921. tools/fleet/__init__.py +2 -0
  922. tools/fleet/device_registry.py +148 -0
  923. tools/fleet/ota_manager.py +153 -0
  924. tools/forge_studio/__init__.py +13 -0
  925. tools/forge_studio/analytics/__init__.py +0 -0
  926. tools/forge_studio/analytics/process_miner.py +383 -0
  927. tools/forge_studio/audit.py +183 -0
  928. tools/forge_studio/blueprint/__init__.py +2 -0
  929. tools/forge_studio/blueprint/build_tracker.py +317 -0
  930. tools/forge_studio/blueprint/export_engine.py +441 -0
  931. tools/forge_studio/blueprint/parent_client.py +335 -0
  932. tools/forge_studio/catalog/__init__.py +2 -0
  933. tools/forge_studio/catalog/component_registry.py +176 -0
  934. tools/forge_studio/catalog/schema_validator.py +193 -0
  935. tools/forge_studio/compliance/__init__.py +1 -0
  936. tools/forge_studio/compliance/compliance_wiring.py +554 -0
  937. tools/forge_studio/deploy/__init__.py +1 -0
  938. tools/forge_studio/deploy/airgap_packager.py +466 -0
  939. tools/forge_studio/deploy/deploy_engine.py +1792 -0
  940. tools/forge_studio/deploy/env_manager.py +431 -0
  941. tools/forge_studio/eject/__init__.py +2 -0
  942. tools/forge_studio/eject/docker_compose_generator.py +237 -0
  943. tools/forge_studio/eject/eject_engine.py +230 -0
  944. tools/forge_studio/eject/expo_scaffolder.py +303 -0
  945. tools/forge_studio/eject/nextjs_scaffolder.py +338 -0
  946. tools/forge_studio/enterprise/__init__.py +0 -0
  947. tools/forge_studio/enterprise/custom_frameworks.py +826 -0
  948. tools/forge_studio/enterprise/hardening_engine.py +1530 -0
  949. tools/forge_studio/enterprise/sso_manager.py +718 -0
  950. tools/forge_studio/enterprise/whitelabel_engine.py +887 -0
  951. tools/forge_studio/formula/__init__.py +0 -0
  952. tools/forge_studio/formula/expression_engine.py +562 -0
  953. tools/forge_studio/formula/formula_registry.py +265 -0
  954. tools/forge_studio/generator/__init__.py +2 -0
  955. tools/forge_studio/generator/app_generator.py +584 -0
  956. tools/forge_studio/generator/complexity_detector.py +368 -0
  957. tools/forge_studio/generator/prompt_templates.py +104 -0
  958. tools/forge_studio/generator/spec_builder.py +192 -0
  959. tools/forge_studio/intake_bridge.py +898 -0
  960. tools/forge_studio/marketplace/__init__.py +0 -0
  961. tools/forge_studio/marketplace/component_hub.py +428 -0
  962. tools/forge_studio/models.py +369 -0
  963. tools/forge_studio/renderer/__init__.py +2 -0
  964. tools/forge_studio/renderer/json_render_engine.py +623 -0
  965. tools/forge_studio/renderer/layout_engine.py +214 -0
  966. tools/forge_studio/renderer/rn_component_map.py +182 -0
  967. tools/forge_studio/supabase/__init__.py +2 -0
  968. tools/forge_studio/supabase/auth_generator.py +283 -0
  969. tools/forge_studio/supabase/migration_generator.py +93 -0
  970. tools/forge_studio/supabase/schema_generator.py +281 -0
  971. tools/forge_studio/tenant_manager.py +387 -0
  972. tools/forge_studio/workflow/__init__.py +2 -0
  973. tools/forge_studio/workflow/bpmn_adapter.py +489 -0
  974. tools/govcon/draft_orchestrator.py +1151 -0
  975. tools/govcon/engine_enrichment.py +373 -0
  976. tools/govcon/knowledge_base.py +487 -0
  977. tools/govcon/knowledge_ingestion.py +510 -0
  978. tools/govcon/sam_scanner.py +754 -0
  979. tools/harness/__init__.py +6 -0
  980. tools/harness/exit_criteria_evaluator.py +231 -0
  981. tools/harness/maturity_assessor.py +347 -0
  982. tools/harness/scaffold_harness.py +416 -0
  983. tools/harness/trace_analyzer.py +281 -0
  984. tools/infra/__init__.py +1 -0
  985. tools/infra/ansible_generator.py +867 -0
  986. tools/infra/dockerfile_generator.py +359 -0
  987. tools/infra/infra_status.py +384 -0
  988. tools/infra/ironbank_metadata_generator.py +403 -0
  989. tools/infra/k8s_generator.py +1000 -0
  990. tools/infra/pipeline_generator.py +830 -0
  991. tools/infra/rollback.py +389 -0
  992. tools/infra/terraform_generator.py +1140 -0
  993. tools/infra/terraform_generator_azure.py +1252 -0
  994. tools/infra/terraform_generator_gcp.py +951 -0
  995. tools/infra/terraform_generator_ibm.py +359 -0
  996. tools/infra/terraform_generator_oci.py +918 -0
  997. tools/infra/terraform_generator_onprem.py +318 -0
  998. tools/knowledge/__init__.py +1 -0
  999. tools/knowledge/knowledge_ingest.py +281 -0
  1000. tools/knowledge/pattern_detector.py +681 -0
  1001. tools/knowledge/recommendation_engine.py +449 -0
  1002. tools/knowledge/self_heal_analyzer.py +492 -0
  1003. tools/knowledge_graph/__init__.py +2 -0
  1004. tools/knowledge_graph/graph_rag.py +498 -0
  1005. tools/knowledge_graph/ingester.py +406 -0
  1006. tools/knowledge_graph/insight_generator.py +369 -0
  1007. tools/knowledge_graph/text_network.py +832 -0
  1008. tools/llm/__init__.py +72 -0
  1009. tools/llm/anthropic_provider.py +170 -0
  1010. tools/llm/azure_openai_provider.py +338 -0
  1011. tools/llm/bedrock_provider.py +315 -0
  1012. tools/llm/embedding_provider.py +438 -0
  1013. tools/llm/gemini_provider.py +381 -0
  1014. tools/llm/ibm_watsonx_provider.py +231 -0
  1015. tools/llm/oci_genai_provider.py +462 -0
  1016. tools/llm/ollama_provider.py +350 -0
  1017. tools/llm/openai_provider.py +225 -0
  1018. tools/llm/prompt_registry.py +447 -0
  1019. tools/llm/provider.py +355 -0
  1020. tools/llm/provider_sdk.py +175 -0
  1021. tools/llm/router.py +1124 -0
  1022. tools/llm/semantic_cache.py +394 -0
  1023. tools/llm/vertex_ai_provider.py +374 -0
  1024. tools/maintenance/__init__.py +2 -0
  1025. tools/maintenance/dependency_scanner.py +1016 -0
  1026. tools/maintenance/maintenance_auditor.py +804 -0
  1027. tools/maintenance/remediation_engine.py +957 -0
  1028. tools/maintenance/vulnerability_checker.py +978 -0
  1029. tools/manifest.md +1066 -0
  1030. tools/marketplace/asset_installer.py +639 -0
  1031. tools/marketplace/feedback_validator.py +359 -0
  1032. tools/marketplace/license_client.py +458 -0
  1033. tools/marketplace/module_crypto.py +544 -0
  1034. tools/marketplace/module_runtime.py +236 -0
  1035. tools/marketplace/token_store.py +264 -0
  1036. tools/mbse/__init__.py +3 -0
  1037. tools/mbse/des_assessor.py +1173 -0
  1038. tools/mbse/des_report_generator.py +787 -0
  1039. tools/mbse/diagram_extractor.py +792 -0
  1040. tools/mbse/digital_thread.py +1650 -0
  1041. tools/mbse/model_code_generator.py +1115 -0
  1042. tools/mbse/model_control_mapper.py +410 -0
  1043. tools/mbse/pi_model_tracker.py +1079 -0
  1044. tools/mbse/reqif_parser.py +1468 -0
  1045. tools/mbse/sync_engine.py +1789 -0
  1046. tools/mbse/thread_heatmap.py +445 -0
  1047. tools/mbse/xmi_parser.py +1558 -0
  1048. tools/mcp/builder_server.py +64 -0
  1049. tools/mcp/compliance_server.py +64 -0
  1050. tools/mcp/connector_forge_server.py +155 -0
  1051. tools/mcp/core_server.py +64 -0
  1052. tools/mcp/devsecops_server.py +11 -0
  1053. tools/mcp/devsecops_zta_server.py +64 -0
  1054. tools/mcp/knowledge_server.py +64 -0
  1055. tools/mcp/monitor_server.py +64 -0
  1056. tools/mcp/ops_server.py +300 -0
  1057. tools/mcp/requirements_analyst_server.py +64 -0
  1058. tools/mcp/requirements_server.py +11 -0
  1059. tools/mcp/security_server.py +64 -0
  1060. tools/mcp/simulation_server.py +64 -0
  1061. tools/mcp/supply_chain_server.py +64 -0
  1062. tools/mcp/tool_registry.py +299 -0
  1063. tools/memory/__init__.py +2 -0
  1064. tools/memory/auto_capture.py +346 -0
  1065. tools/memory/embed_memory.py +157 -0
  1066. tools/memory/history_compressor.py +334 -0
  1067. tools/memory/hybrid_search.py +235 -0
  1068. tools/memory/maintenance_cron.py +288 -0
  1069. tools/memory/memory_consolidation.py +439 -0
  1070. tools/memory/memory_db.py +132 -0
  1071. tools/memory/memory_read.py +101 -0
  1072. tools/memory/memory_write.py +221 -0
  1073. tools/memory/semantic_search.py +138 -0
  1074. tools/memory/time_decay.py +434 -0
  1075. tools/missions/__init__.py +2 -0
  1076. tools/missions/mission_engine.py +459 -0
  1077. tools/monitor/__init__.py +1 -0
  1078. tools/monitor/alert_correlator.py +486 -0
  1079. tools/monitor/auto_resolver.py +603 -0
  1080. tools/monitor/health_checker.py +507 -0
  1081. tools/monitor/heartbeat_daemon.py +779 -0
  1082. tools/monitor/log_analyzer.py +507 -0
  1083. tools/monitor/metric_collector.py +484 -0
  1084. tools/mosa/__init__.py +10 -0
  1085. tools/mosa/icd_generator.py +358 -0
  1086. tools/mosa/modular_design_analyzer.py +682 -0
  1087. tools/mosa/mosa_code_enforcer.py +348 -0
  1088. tools/mosa/tsp_generator.py +265 -0
  1089. tools/observability/__init__.py +100 -0
  1090. tools/observability/genai_attributes.py +88 -0
  1091. tools/observability/instrumentation.py +140 -0
  1092. tools/observability/mlflow_exporter.py +193 -0
  1093. tools/observability/otel_tracer.py +168 -0
  1094. tools/observability/provenance/__init__.py +3 -0
  1095. tools/observability/provenance/prov_recorder.py +322 -0
  1096. tools/observability/shap/__init__.py +3 -0
  1097. tools/observability/shap/agent_shap.py +274 -0
  1098. tools/observability/sqlite_tracer.py +360 -0
  1099. tools/observability/trace_context.py +205 -0
  1100. tools/observability/tracer.py +230 -0
  1101. tools/orchestration/__init__.py +1 -0
  1102. tools/orchestration/peer_channels.py +254 -0
  1103. tools/orchestration/saga_coordinator.py +390 -0
  1104. tools/project/__init__.py +1 -0
  1105. tools/project/manifest_loader.py +418 -0
  1106. tools/project/project_create.py +350 -0
  1107. tools/project/project_list.py +171 -0
  1108. tools/project/project_scaffold.py +1715 -0
  1109. tools/project/project_status.py +478 -0
  1110. tools/project/session_context_builder.py +752 -0
  1111. tools/project/validate_manifest.py +54 -0
  1112. tools/rag/corrective_rag.py +582 -0
  1113. tools/rag/source_registry.py +482 -0
  1114. tools/requirements/__init__.py +1 -0
  1115. tools/requirements/ai_governance_scorer.py +207 -0
  1116. tools/requirements/boundary_analyzer.py +1281 -0
  1117. tools/requirements/clarification_engine.py +605 -0
  1118. tools/requirements/complexity_scorer.py +369 -0
  1119. tools/requirements/consistency_analyzer.py +789 -0
  1120. tools/requirements/constitution_manager.py +592 -0
  1121. tools/requirements/decomposition_engine.py +764 -0
  1122. tools/requirements/document_extractor.py +1002 -0
  1123. tools/requirements/elicitation_techniques.py +508 -0
  1124. tools/requirements/gap_detector.py +260 -0
  1125. tools/requirements/intake_engine.py +2175 -0
  1126. tools/requirements/prd_generator.py +839 -0
  1127. tools/requirements/prd_validator.py +584 -0
  1128. tools/requirements/readiness_scorer.py +302 -0
  1129. tools/requirements/spec_organizer.py +1015 -0
  1130. tools/requirements/spec_quality_checker.py +1083 -0
  1131. tools/requirements/traceability_builder.py +566 -0
  1132. tools/research/__init__.py +3 -0
  1133. tools/research/academic_scanner.py +130 -0
  1134. tools/research/build_buy_analyzer.py +229 -0
  1135. tools/research/challenge_scorer.py +280 -0
  1136. tools/research/community_scanner.py +174 -0
  1137. tools/research/cross_engine_bridge.py +124 -0
  1138. tools/research/dossier_generator.py +305 -0
  1139. tools/research/landscape_scanner.py +315 -0
  1140. tools/research/regulatory_scanner.py +248 -0
  1141. tools/research/research_manager.py +469 -0
  1142. tools/research/source_scanner.py +150 -0
  1143. tools/research/vertical_loader.py +118 -0
  1144. tools/saas/__init__.py +0 -0
  1145. tools/saas/licensing/__init__.py +0 -0
  1146. tools/saas/licensing/license_validator.py +345 -0
  1147. tools/scaffold/__init__.py +2 -0
  1148. tools/scaffold/golden_path.py +504 -0
  1149. tools/security/__init__.py +1 -0
  1150. tools/security/agent_output_validator.py +330 -0
  1151. tools/security/agent_trust_scorer.py +652 -0
  1152. tools/security/ai_bom_generator.py +718 -0
  1153. tools/security/ai_telemetry_logger.py +469 -0
  1154. tools/security/atlas_red_team.py +541 -0
  1155. tools/security/code_pattern_scanner.py +382 -0
  1156. tools/security/confabulation_detector.py +265 -0
  1157. tools/security/container_scanner.py +489 -0
  1158. tools/security/dependency_auditor.py +942 -0
  1159. tools/security/endpoint_security_scanner.py +626 -0
  1160. tools/security/mcp_tool_authorizer.py +242 -0
  1161. tools/security/output_verifier.py +427 -0
  1162. tools/security/prompt_injection_detector.py +737 -0
  1163. tools/security/sast_runner.py +946 -0
  1164. tools/security/secret_detector.py +376 -0
  1165. tools/security/threat_modeler.py +678 -0
  1166. tools/security/tool_chain_validator.py +357 -0
  1167. tools/security/vuln_scanner.py +536 -0
  1168. tools/simulation/__init__.py +2 -0
  1169. tools/simulation/ato_simulator.py +517 -0
  1170. tools/simulation/coa_generator.py +1539 -0
  1171. tools/simulation/monte_carlo.py +745 -0
  1172. tools/simulation/scenario_manager.py +1060 -0
  1173. tools/simulation/simulation_engine.py +1091 -0
  1174. tools/simulator/__init__.py +2 -0
  1175. tools/simulator/sim_runner.py +272 -0
  1176. tools/supply_chain/__init__.py +2 -0
  1177. tools/supply_chain/cve_triager.py +690 -0
  1178. tools/supply_chain/dependency_graph.py +630 -0
  1179. tools/supply_chain/isa_manager.py +526 -0
  1180. tools/supply_chain/scrm_assessor.py +531 -0
  1181. tools/supply_chain/slsa_verifier.py +473 -0
  1182. tools/testing/__init__.py +2 -0
  1183. tools/testing/acceptance_validator.py +411 -0
  1184. tools/testing/api_surface_extractor.py +749 -0
  1185. tools/testing/claude_dir_validator.py +831 -0
  1186. tools/testing/data_types.py +199 -0
  1187. tools/testing/e2e_runner.py +715 -0
  1188. tools/testing/fuzz_cli.py +306 -0
  1189. tools/testing/health_check.py +483 -0
  1190. tools/testing/platform_check.py +143 -0
  1191. tools/testing/production_audit.py +1836 -0
  1192. tools/testing/production_remediate.py +803 -0
  1193. tools/testing/screenshot_validator.py +538 -0
  1194. tools/testing/smoke_test.py +283 -0
  1195. tools/testing/test_agent_models.py +117 -0
  1196. tools/testing/test_orchestrator.py +957 -0
  1197. tools/testing/utils.py +229 -0
  1198. tools/writeguard/__init__.py +1 -0
  1199. tools/writeguard/main.py +1 -0
  1200. tools/writing/__init__.py +7 -0
  1201. tools/writing/ai_content_detector.py +316 -0
  1202. tools/writing/analysis_engine.py +454 -0
  1203. tools/writing/batch_analyzer.py +276 -0
  1204. tools/writing/coherence_analyzer.py +221 -0
  1205. tools/writing/govcon_bridge.py +509 -0
  1206. tools/writing/grammar_checker.py +270 -0
  1207. tools/writing/plagiarism_detector.py +106 -0
  1208. tools/writing/readability_scorer.py +201 -0
  1209. tools/writing/rewriter.py +96 -0
  1210. tools/writing/signal_registrar.py +167 -0
  1211. tools/writing/snippet_manager.py +276 -0
  1212. tools/writing/style_enforcer.py +220 -0
  1213. tools/writing/style_guide_manager.py +438 -0
  1214. tools/writing/tone_profiler.py +168 -0
@@ -0,0 +1,1301 @@
1
+ #!/usr/bin/env python3
2
+ # CUI // SP-CTI
3
+ # CONTROLLED UNCLASSIFIED INFORMATION // SPECIFIED / CONTROLLED TECHNICAL INFORMATION
4
+ # Authorized for: Internal project use only
5
+ # Generator: SPARKPILOT DevSecOps/ZTA Agent
6
+ # Region: us-gov-west-1
7
+ """Generate ZTA-specific Terraform modules for AWS GovCloud security services.
8
+
9
+ Produces GuardDuty, Security Hub, WAF, AWS Config, and VPC Flow Log modules
10
+ under {project_path}/terraform/zta/ — all with CUI // SP-CTI header comments.
11
+
12
+ Pattern mirrors tools/infra/terraform_generator.py (Jinja2 template + fallback,
13
+ _render, _write helpers).
14
+ """
15
+
16
+ import argparse
17
+ import json
18
+ import sys
19
+ from datetime import datetime, timezone
20
+ from pathlib import Path
21
+
22
+ BASE_DIR = Path(__file__).resolve().parent.parent.parent
23
+
24
+ REGION = "us-gov-west-1"
25
+
26
+ # ---------------------------------------------------------------------------
27
+ # Jinja2 fallback: try import, else use str.replace
28
+ # ---------------------------------------------------------------------------
29
+ try:
30
+ from jinja2 import Template as Jinja2Template
31
+
32
+ def _render(template_str: str, ctx: dict) -> str:
33
+ return Jinja2Template(template_str).render(**ctx)
34
+
35
+ except ImportError:
36
+
37
+ def _render(template_str: str, ctx: dict) -> str:
38
+ """Minimal fallback — replaces {{ var }} with ctx[var]."""
39
+ result = template_str
40
+ for key, val in ctx.items():
41
+ result = result.replace("{{ " + key + " }}", str(val))
42
+ result = result.replace("{{" + key + "}}", str(val))
43
+ return result
44
+
45
+
46
+ # ---------------------------------------------------------------------------
47
+ # Shared helpers
48
+ # ---------------------------------------------------------------------------
49
+
50
+ def _zta_file_header(module_name: str) -> str:
51
+ """Return the standard CUI // SP-CTI HCL file header for a ZTA module."""
52
+ return (
53
+ f"# CUI // SP-CTI\n"
54
+ f"# ZTA Security Module: {module_name}\n"
55
+ f"# Generated by SPARKPILOT DevSecOps/ZTA Agent\n"
56
+ f"# Region: {REGION}\n"
57
+ f"# Generated: {datetime.now(timezone.utc).isoformat()}Z\n"
58
+ )
59
+
60
+
61
+ def _write(path: Path, content: str) -> Path:
62
+ """Create parent directories and write content to path."""
63
+ path.parent.mkdir(parents=True, exist_ok=True)
64
+ path.write_text(content, encoding="utf-8")
65
+ return path
66
+
67
+
68
+ def _zta_dir(project_path: str) -> Path:
69
+ """Return the canonical ZTA Terraform output directory."""
70
+ return Path(project_path) / "terraform" / "zta"
71
+
72
+
73
+ # ---------------------------------------------------------------------------
74
+ # 1. GuardDuty
75
+ # ---------------------------------------------------------------------------
76
+
77
+ def _guardduty_hcl(header: str, config: dict) -> str:
78
+ project_name = config.get("project_name", "sparkpilot")
79
+ env = config.get("environment", "dev")
80
+ sns_email = config.get("sns_email", "security@agency.gov")
81
+ return f"""{header}
82
+ # ------------------------------------------------------------------------------
83
+ # GuardDuty — Threat Detection
84
+ # Satisfies: NIST 800-53 SI-3, SI-4, IR-6
85
+ # ------------------------------------------------------------------------------
86
+
87
+ resource "aws_guardduty_detector" "this" {{
88
+ enable = true
89
+
90
+ datasources {{
91
+ s3_logs {{
92
+ enable = true
93
+ }}
94
+ kubernetes {{
95
+ audit_logs {{
96
+ enable = true
97
+ }}
98
+ }}
99
+ malware_protection {{
100
+ scan_ec2_instance_with_findings {{
101
+ ebs_volumes {{
102
+ enable = true
103
+ }}
104
+ }}
105
+ }}
106
+ }}
107
+
108
+ finding_publishing_frequency = "FIFTEEN_MINUTES"
109
+
110
+ tags = {{
111
+ Name = "{project_name}-{env}-guardduty"
112
+ Classification = "CUI"
113
+ ManagedBy = "sparkpilot"
114
+ Component = "zta-security"
115
+ Environment = "{env}"
116
+ }}
117
+ }}
118
+
119
+ # SNS topic for GuardDuty findings notifications
120
+ resource "aws_sns_topic" "guardduty_findings" {{
121
+ name = "{project_name}-{env}-guardduty-findings"
122
+ kms_master_key_id = "alias/aws/sns"
123
+
124
+ tags = {{
125
+ Name = "{project_name}-{env}-guardduty-sns"
126
+ Classification = "CUI"
127
+ ManagedBy = "sparkpilot"
128
+ Component = "zta-security"
129
+ }}
130
+ }}
131
+
132
+ resource "aws_sns_topic_subscription" "guardduty_email" {{
133
+ topic_arn = aws_sns_topic.guardduty_findings.arn
134
+ protocol = "email"
135
+ endpoint = "{sns_email}"
136
+ }}
137
+
138
+ # CloudWatch Event rule to forward HIGH/CRITICAL findings to SNS
139
+ resource "aws_cloudwatch_event_rule" "guardduty_findings" {{
140
+ name = "{project_name}-{env}-guardduty-findings"
141
+ description = "Route GuardDuty HIGH and CRITICAL findings to SNS"
142
+
143
+ event_pattern = jsonencode({{
144
+ source = ["aws.guardduty"]
145
+ detail-type = ["GuardDuty Finding"]
146
+ detail = {{
147
+ severity = [{{
148
+ numeric = [">=", 7]
149
+ }}]
150
+ }}
151
+ }})
152
+
153
+ tags = {{
154
+ Classification = "CUI"
155
+ ManagedBy = "sparkpilot"
156
+ Component = "zta-security"
157
+ }}
158
+ }}
159
+
160
+ resource "aws_cloudwatch_event_target" "guardduty_sns" {{
161
+ rule = aws_cloudwatch_event_rule.guardduty_findings.name
162
+ target_id = "GuardDutyToSNS"
163
+ arn = aws_sns_topic.guardduty_findings.arn
164
+ }}
165
+
166
+ # Allow EventBridge to publish to SNS
167
+ resource "aws_sns_topic_policy" "guardduty_findings" {{
168
+ arn = aws_sns_topic.guardduty_findings.arn
169
+
170
+ policy = jsonencode({{
171
+ Version = "2012-10-17"
172
+ Statement = [
173
+ {{
174
+ Sid = "AllowEventBridgePublish"
175
+ Effect = "Allow"
176
+ Principal = {{
177
+ Service = "events.amazonaws.com"
178
+ }}
179
+ Action = "SNS:Publish"
180
+ Resource = aws_sns_topic.guardduty_findings.arn
181
+ }}
182
+ ]
183
+ }})
184
+ }}
185
+
186
+ output "guardduty_detector_id" {{
187
+ description = "GuardDuty Detector ID"
188
+ value = aws_guardduty_detector.this.id
189
+ }}
190
+
191
+ output "guardduty_findings_topic_arn" {{
192
+ description = "SNS topic ARN for GuardDuty findings"
193
+ value = aws_sns_topic.guardduty_findings.arn
194
+ }}
195
+ """
196
+
197
+
198
+ def generate_guardduty(project_path: str, config: dict = None) -> dict:
199
+ """Generate AWS GuardDuty Terraform module for ZTA threat detection.
200
+
201
+ Enables GuardDuty detector with S3/EKS audit log and malware-protection
202
+ data sources, plus an SNS topic for HIGH/CRITICAL finding alerts.
203
+
204
+ Args:
205
+ project_path: Target project directory.
206
+ config: Optional configuration dict (project_name, environment, sns_email).
207
+
208
+ Returns:
209
+ dict with keys:
210
+ tf_content (str): Generated HCL string.
211
+ module (str): "guardduty".
212
+ files (list[str]): Paths of written files.
213
+ """
214
+ cfg = config or {}
215
+ module_name = "guardduty"
216
+ header = _zta_file_header(module_name)
217
+ hcl = _guardduty_hcl(header, cfg)
218
+
219
+ out_dir = _zta_dir(project_path) / module_name
220
+ tf_file = _write(out_dir / "main.tf", hcl)
221
+
222
+ return {
223
+ "tf_content": hcl,
224
+ "module": module_name,
225
+ "files": [str(tf_file)],
226
+ }
227
+
228
+
229
+ # ---------------------------------------------------------------------------
230
+ # 2. Security Hub
231
+ # ---------------------------------------------------------------------------
232
+
233
+ def _security_hub_hcl(header: str, config: dict) -> str:
234
+ project_name = config.get("project_name", "sparkpilot")
235
+ env = config.get("environment", "dev")
236
+ return f"""{header}
237
+ # ------------------------------------------------------------------------------
238
+ # Security Hub — Centralized Security Findings Aggregation
239
+ # Satisfies: NIST 800-53 CA-7, RA-5, SI-4
240
+ # ------------------------------------------------------------------------------
241
+
242
+ resource "aws_securityhub_account" "this" {{
243
+ enable_default_standards = false
244
+ auto_enable_controls = true
245
+ control_finding_generator = "SECURITY_CONTROL"
246
+ }}
247
+
248
+ # CIS AWS Foundations Benchmark v1.4.0
249
+ resource "aws_securityhub_standards_subscription" "cis" {{
250
+ standards_arn = "arn:aws-us-gov:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.4.0"
251
+ depends_on = [aws_securityhub_account.this]
252
+ }}
253
+
254
+ # PCI DSS v3.2.1
255
+ resource "aws_securityhub_standards_subscription" "pci_dss" {{
256
+ standards_arn = "arn:aws-us-gov:securityhub:us-gov-west-1::standards/pci-dss/v/3.2.1"
257
+ depends_on = [aws_securityhub_account.this]
258
+ }}
259
+
260
+ # AWS Foundational Security Best Practices
261
+ resource "aws_securityhub_standards_subscription" "fsbp" {{
262
+ standards_arn = "arn:aws-us-gov:securityhub:us-gov-west-1::standards/aws-foundational-security-best-practices/v/1.0.0"
263
+ depends_on = [aws_securityhub_account.this]
264
+ }}
265
+
266
+ # NIST SP 800-53 Rev 5
267
+ resource "aws_securityhub_standards_subscription" "nist" {{
268
+ standards_arn = "arn:aws-us-gov:securityhub:us-gov-west-1::standards/nist-800-53/v/5.0.0"
269
+ depends_on = [aws_securityhub_account.this]
270
+ }}
271
+
272
+ # Aggregation region — us-gov-west-1 is the home region
273
+ resource "aws_securityhub_finding_aggregator" "this" {{
274
+ linking_mode = "ALL_REGIONS"
275
+ depends_on = [aws_securityhub_account.this]
276
+ }}
277
+
278
+ # CloudWatch Event rule for CRITICAL Security Hub findings
279
+ resource "aws_cloudwatch_event_rule" "securityhub_critical" {{
280
+ name = "{project_name}-{env}-securityhub-critical"
281
+ description = "Route CRITICAL Security Hub findings to SIEM"
282
+
283
+ event_pattern = jsonencode({{
284
+ source = ["aws.securityhub"]
285
+ detail-type = ["Security Hub Findings - Imported"]
286
+ detail = {{
287
+ findings = {{
288
+ Severity = {{
289
+ Label = ["CRITICAL", "HIGH"]
290
+ }}
291
+ Workflow = {{
292
+ Status = ["NEW"]
293
+ }}
294
+ RecordState = ["ACTIVE"]
295
+ }}
296
+ }}
297
+ }})
298
+
299
+ tags = {{
300
+ Name = "{project_name}-{env}-securityhub-events"
301
+ Classification = "CUI"
302
+ ManagedBy = "sparkpilot"
303
+ Component = "zta-security"
304
+ }}
305
+ }}
306
+
307
+ output "securityhub_account_id" {{
308
+ description = "Security Hub account ID"
309
+ value = aws_securityhub_account.this.id
310
+ }}
311
+
312
+ output "securityhub_aggregator_arn" {{
313
+ description = "Security Hub finding aggregator ARN"
314
+ value = aws_securityhub_finding_aggregator.this.id
315
+ }}
316
+ """
317
+
318
+
319
+ def generate_security_hub(project_path: str, config: dict = None) -> dict:
320
+ """Generate AWS Security Hub Terraform module.
321
+
322
+ Enables Security Hub with CIS, PCI DSS, FSBP, and NIST 800-53 standards,
323
+ plus cross-region aggregation anchored in us-gov-west-1.
324
+
325
+ Args:
326
+ project_path: Target project directory.
327
+ config: Optional configuration dict (project_name, environment).
328
+
329
+ Returns:
330
+ dict with keys tf_content, module: "security_hub", files.
331
+ """
332
+ cfg = config or {}
333
+ module_name = "security_hub"
334
+ header = _zta_file_header(module_name)
335
+ hcl = _security_hub_hcl(header, cfg)
336
+
337
+ out_dir = _zta_dir(project_path) / module_name
338
+ tf_file = _write(out_dir / "main.tf", hcl)
339
+
340
+ return {
341
+ "tf_content": hcl,
342
+ "module": module_name,
343
+ "files": [str(tf_file)],
344
+ }
345
+
346
+
347
+ # ---------------------------------------------------------------------------
348
+ # 3. WAF
349
+ # ---------------------------------------------------------------------------
350
+
351
+ def _waf_hcl(header: str, config: dict) -> str:
352
+ project_name = config.get("project_name", "sparkpilot")
353
+ env = config.get("environment", "dev")
354
+ rate_limit = config.get("rate_limit_requests", 2000)
355
+ return f"""{header}
356
+ # ------------------------------------------------------------------------------
357
+ # AWS WAF v2 — Web Application Firewall
358
+ # Satisfies: NIST 800-53 SC-7, SI-10, SI-3
359
+ # ------------------------------------------------------------------------------
360
+
361
+ resource "aws_wafv2_web_acl" "this" {{
362
+ name = "{project_name}-{env}-waf-acl"
363
+ description = "ZTA WAF WebACL — managed rule groups + rate limiting"
364
+ scope = "REGIONAL"
365
+
366
+ default_action {{
367
+ allow {{}}
368
+ }}
369
+
370
+ # Rule 1: AWS Managed Common Rule Set (OWASP Top 10)
371
+ rule {{
372
+ name = "AWSManagedRulesCommonRuleSet"
373
+ priority = 10
374
+
375
+ override_action {{
376
+ none {{}}
377
+ }}
378
+
379
+ statement {{
380
+ managed_rule_group_statement {{
381
+ name = "AWSManagedRulesCommonRuleSet"
382
+ vendor_name = "AWS"
383
+ }}
384
+ }}
385
+
386
+ visibility_config {{
387
+ cloudwatch_metrics_enabled = true
388
+ metric_name = "{project_name}-{env}-CommonRuleSet"
389
+ sampled_requests_enabled = true
390
+ }}
391
+ }}
392
+
393
+ # Rule 2: Known Bad Inputs (Log4j, SSRF, etc.)
394
+ rule {{
395
+ name = "AWSManagedRulesKnownBadInputsRuleSet"
396
+ priority = 20
397
+
398
+ override_action {{
399
+ none {{}}
400
+ }}
401
+
402
+ statement {{
403
+ managed_rule_group_statement {{
404
+ name = "AWSManagedRulesKnownBadInputsRuleSet"
405
+ vendor_name = "AWS"
406
+ }}
407
+ }}
408
+
409
+ visibility_config {{
410
+ cloudwatch_metrics_enabled = true
411
+ metric_name = "{project_name}-{env}-KnownBadInputs"
412
+ sampled_requests_enabled = true
413
+ }}
414
+ }}
415
+
416
+ # Rule 3: SQL Injection (AWSManagedRulesSQLiRuleSet)
417
+ rule {{
418
+ name = "AWSManagedRulesSQLiRuleSet"
419
+ priority = 30
420
+
421
+ override_action {{
422
+ none {{}}
423
+ }}
424
+
425
+ statement {{
426
+ managed_rule_group_statement {{
427
+ name = "AWSManagedRulesSQLiRuleSet"
428
+ vendor_name = "AWS"
429
+ }}
430
+ }}
431
+
432
+ visibility_config {{
433
+ cloudwatch_metrics_enabled = true
434
+ metric_name = "{project_name}-{env}-SQLiRuleSet"
435
+ sampled_requests_enabled = true
436
+ }}
437
+ }}
438
+
439
+ # Rule 4: Linux OS Rule Set
440
+ rule {{
441
+ name = "AWSManagedRulesLinuxRuleSet"
442
+ priority = 40
443
+
444
+ override_action {{
445
+ none {{}}
446
+ }}
447
+
448
+ statement {{
449
+ managed_rule_group_statement {{
450
+ name = "AWSManagedRulesLinuxRuleSet"
451
+ vendor_name = "AWS"
452
+ }}
453
+ }}
454
+
455
+ visibility_config {{
456
+ cloudwatch_metrics_enabled = true
457
+ metric_name = "{project_name}-{env}-LinuxRuleSet"
458
+ sampled_requests_enabled = true
459
+ }}
460
+ }}
461
+
462
+ # Rule 5: IP Rate Limiting — block IPs exceeding threshold in 5 minutes
463
+ rule {{
464
+ name = "RateLimitPerIP"
465
+ priority = 50
466
+
467
+ action {{
468
+ block {{
469
+ custom_response {{
470
+ response_code = 429
471
+ response_header {{
472
+ name = "Retry-After"
473
+ value = "300"
474
+ }}
475
+ }}
476
+ }}
477
+ }}
478
+
479
+ statement {{
480
+ rate_based_statement {{
481
+ limit = {rate_limit}
482
+ aggregate_key_type = "IP"
483
+ }}
484
+ }}
485
+
486
+ visibility_config {{
487
+ cloudwatch_metrics_enabled = true
488
+ metric_name = "{project_name}-{env}-RateLimit"
489
+ sampled_requests_enabled = true
490
+ }}
491
+ }}
492
+
493
+ visibility_config {{
494
+ cloudwatch_metrics_enabled = true
495
+ metric_name = "{project_name}-{env}-WAF"
496
+ sampled_requests_enabled = true
497
+ }}
498
+
499
+ tags = {{
500
+ Name = "{project_name}-{env}-waf-acl"
501
+ Classification = "CUI"
502
+ ManagedBy = "sparkpilot"
503
+ Component = "zta-security"
504
+ Environment = "{env}"
505
+ }}
506
+ }}
507
+
508
+ # WAF logging to S3 (mandatory for STIG compliance)
509
+ resource "aws_wafv2_web_acl_logging_configuration" "this" {{
510
+ log_destination_configs = [aws_cloudwatch_log_group.waf.arn]
511
+ resource_arn = aws_wafv2_web_acl.this.arn
512
+
513
+ logging_filter {{
514
+ default_behavior = "KEEP"
515
+
516
+ filter {{
517
+ behavior = "KEEP"
518
+ condition {{
519
+ action_condition {{
520
+ action = "BLOCK"
521
+ }}
522
+ }}
523
+ requirement = "MEETS_ANY"
524
+ }}
525
+ }}
526
+ }}
527
+
528
+ resource "aws_cloudwatch_log_group" "waf" {{
529
+ # WAF log group name MUST start with "aws-waf-logs-"
530
+ name = "aws-waf-logs-{project_name}-{env}"
531
+ retention_in_days = 365
532
+ kms_key_id = var.kms_key_arn
533
+
534
+ tags = {{
535
+ Classification = "CUI"
536
+ ManagedBy = "sparkpilot"
537
+ Component = "zta-security"
538
+ }}
539
+ }}
540
+
541
+ variable "kms_key_arn" {{
542
+ description = "KMS key ARN for WAF log group encryption (leave empty to use default)"
543
+ type = string
544
+ default = null
545
+ }}
546
+
547
+ output "waf_web_acl_arn" {{
548
+ description = "ARN of the WAF WebACL (associate with ALB/API Gateway)"
549
+ value = aws_wafv2_web_acl.this.arn
550
+ }}
551
+
552
+ output "waf_web_acl_id" {{
553
+ description = "ID of the WAF WebACL"
554
+ value = aws_wafv2_web_acl.this.id
555
+ }}
556
+
557
+ output "waf_log_group_name" {{
558
+ description = "CloudWatch log group name for WAF logs"
559
+ value = aws_cloudwatch_log_group.waf.name
560
+ }}
561
+ """
562
+
563
+
564
+ def generate_waf(project_path: str, config: dict = None) -> dict:
565
+ """Generate AWS WAF v2 Terraform module.
566
+
567
+ Creates a WebACL with AWS managed rule groups (Common, KnownBadInputs,
568
+ SQLi, Linux) and IP-based rate limiting with CloudWatch logging.
569
+
570
+ Args:
571
+ project_path: Target project directory.
572
+ config: Optional configuration dict (project_name, environment,
573
+ rate_limit_requests).
574
+
575
+ Returns:
576
+ dict with keys tf_content, module: "waf", files.
577
+ """
578
+ cfg = config or {}
579
+ module_name = "waf"
580
+ header = _zta_file_header(module_name)
581
+ hcl = _waf_hcl(header, cfg)
582
+
583
+ out_dir = _zta_dir(project_path) / module_name
584
+ tf_file = _write(out_dir / "main.tf", hcl)
585
+
586
+ return {
587
+ "tf_content": hcl,
588
+ "module": module_name,
589
+ "files": [str(tf_file)],
590
+ }
591
+
592
+
593
+ # ---------------------------------------------------------------------------
594
+ # 4. AWS Config Rules
595
+ # ---------------------------------------------------------------------------
596
+
597
+ def _config_rules_hcl(header: str, config: dict) -> str:
598
+ project_name = config.get("project_name", "sparkpilot")
599
+ env = config.get("environment", "dev")
600
+ config_bucket = config.get("config_s3_bucket", f"{project_name}-{env}-config-logs")
601
+ return f"""{header}
602
+ # ------------------------------------------------------------------------------
603
+ # AWS Config — Continuous Configuration Compliance Recording
604
+ # Satisfies: NIST 800-53 CM-6, CM-7, CM-8, AU-2
605
+ # ------------------------------------------------------------------------------
606
+
607
+ data "aws_caller_identity" "current" {{}}
608
+ data "aws_region" "current" {{}}
609
+
610
+ # S3 bucket for Config delivery
611
+ resource "aws_s3_bucket" "config_logs" {{
612
+ bucket = "{config_bucket}"
613
+ force_destroy = false
614
+
615
+ tags = {{
616
+ Name = "{config_bucket}"
617
+ Classification = "CUI"
618
+ ManagedBy = "sparkpilot"
619
+ Component = "zta-security"
620
+ }}
621
+ }}
622
+
623
+ resource "aws_s3_bucket_versioning" "config_logs" {{
624
+ bucket = aws_s3_bucket.config_logs.id
625
+ versioning_configuration {{
626
+ status = "Enabled"
627
+ }}
628
+ }}
629
+
630
+ resource "aws_s3_bucket_server_side_encryption_configuration" "config_logs" {{
631
+ bucket = aws_s3_bucket.config_logs.id
632
+ rule {{
633
+ apply_server_side_encryption_by_default {{
634
+ sse_algorithm = "AES256"
635
+ }}
636
+ }}
637
+ }}
638
+
639
+ resource "aws_s3_bucket_public_access_block" "config_logs" {{
640
+ bucket = aws_s3_bucket.config_logs.id
641
+ block_public_acls = true
642
+ block_public_policy = true
643
+ ignore_public_acls = true
644
+ restrict_public_buckets = true
645
+ }}
646
+
647
+ resource "aws_s3_bucket_policy" "config_logs" {{
648
+ bucket = aws_s3_bucket.config_logs.id
649
+
650
+ policy = jsonencode({{
651
+ Version = "2012-10-17"
652
+ Statement = [
653
+ {{
654
+ Sid = "AWSConfigBucketPermissionsCheck"
655
+ Effect = "Allow"
656
+ Principal = {{
657
+ Service = "config.amazonaws.com"
658
+ }}
659
+ Action = "s3:GetBucketAcl"
660
+ Resource = aws_s3_bucket.config_logs.arn
661
+ Condition = {{
662
+ StringEquals = {{
663
+ "AWS:SourceAccount" = data.aws_caller_identity.current.account_id
664
+ }}
665
+ }}
666
+ }},
667
+ {{
668
+ Sid = "AWSConfigBucketDelivery"
669
+ Effect = "Allow"
670
+ Principal = {{
671
+ Service = "config.amazonaws.com"
672
+ }}
673
+ Action = "s3:PutObject"
674
+ Resource = "${{aws_s3_bucket.config_logs.arn}}/AWSLogs/${{data.aws_caller_identity.current.account_id}}/Config/*"
675
+ Condition = {{
676
+ StringEquals = {{
677
+ "s3:x-amz-acl" = "bucket-owner-full-control"
678
+ "AWS:SourceAccount" = data.aws_caller_identity.current.account_id
679
+ }}
680
+ }}
681
+ }}
682
+ ]
683
+ }})
684
+ }}
685
+
686
+ # IAM role for Config recorder
687
+ resource "aws_iam_role" "config" {{
688
+ name = "{project_name}-{env}-config-role"
689
+
690
+ assume_role_policy = jsonencode({{
691
+ Version = "2012-10-17"
692
+ Statement = [{{
693
+ Action = "sts:AssumeRole"
694
+ Effect = "Allow"
695
+ Principal = {{ Service = "config.amazonaws.com" }}
696
+ }}]
697
+ }})
698
+
699
+ tags = {{
700
+ Classification = "CUI"
701
+ ManagedBy = "sparkpilot"
702
+ Component = "zta-security"
703
+ }}
704
+ }}
705
+
706
+ resource "aws_iam_role_policy_attachment" "config_managed" {{
707
+ role = aws_iam_role.config.name
708
+ policy_arn = "arn:aws-us-gov:iam::aws:policy/service-role/AWS_ConfigRole"
709
+ }}
710
+
711
+ # Config recorder — record all resource types
712
+ resource "aws_config_configuration_recorder" "this" {{
713
+ name = "{project_name}-{env}-config-recorder"
714
+ role_arn = aws_iam_role.config.arn
715
+
716
+ recording_group {{
717
+ all_supported = true
718
+ include_global_resource_types = true
719
+ }}
720
+ }}
721
+
722
+ # Config delivery channel
723
+ resource "aws_config_delivery_channel" "this" {{
724
+ name = "{project_name}-{env}-config-delivery"
725
+ s3_bucket_name = aws_s3_bucket.config_logs.bucket
726
+
727
+ snapshot_delivery_properties {{
728
+ delivery_frequency = "TwentyFour_Hours"
729
+ }}
730
+
731
+ depends_on = [aws_config_configuration_recorder.this]
732
+ }}
733
+
734
+ # Enable the recorder
735
+ resource "aws_config_configuration_recorder_status" "this" {{
736
+ name = aws_config_configuration_recorder.this.name
737
+ is_enabled = true
738
+ depends_on = [aws_config_delivery_channel.this]
739
+ }}
740
+
741
+ # --------------- Managed Config Rules ---------------
742
+
743
+ # EBS volumes must be encrypted
744
+ resource "aws_config_config_rule" "ebs_encryption" {{
745
+ name = "{project_name}-{env}-ebs-encrypted-volumes"
746
+ description = "Checks that EBS volumes are encrypted"
747
+
748
+ source {{
749
+ owner = "AWS"
750
+ source_identifier = "ENCRYPTED_VOLUMES"
751
+ }}
752
+
753
+ depends_on = [aws_config_configuration_recorder_status.this]
754
+
755
+ tags = {{
756
+ Classification = "CUI"
757
+ ManagedBy = "sparkpilot"
758
+ Component = "zta-security"
759
+ }}
760
+ }}
761
+
762
+ # S3 buckets must have server-side encryption enabled
763
+ resource "aws_config_config_rule" "s3_encryption" {{
764
+ name = "{project_name}-{env}-s3-default-encryption-kms"
765
+ description = "Checks that S3 buckets have default encryption enabled"
766
+
767
+ source {{
768
+ owner = "AWS"
769
+ source_identifier = "S3_DEFAULT_ENCRYPTION_KMS"
770
+ }}
771
+
772
+ depends_on = [aws_config_configuration_recorder_status.this]
773
+
774
+ tags = {{
775
+ Classification = "CUI"
776
+ ManagedBy = "sparkpilot"
777
+ Component = "zta-security"
778
+ }}
779
+ }}
780
+
781
+ # CloudTrail must be enabled
782
+ resource "aws_config_config_rule" "cloudtrail_enabled" {{
783
+ name = "{project_name}-{env}-cloudtrail-enabled"
784
+ description = "Checks that CloudTrail is enabled and logging to S3"
785
+
786
+ source {{
787
+ owner = "AWS"
788
+ source_identifier = "CLOUD_TRAIL_ENABLED"
789
+ }}
790
+
791
+ depends_on = [aws_config_configuration_recorder_status.this]
792
+
793
+ tags = {{
794
+ Classification = "CUI"
795
+ ManagedBy = "sparkpilot"
796
+ Component = "zta-security"
797
+ }}
798
+ }}
799
+
800
+ # VPC Flow Logs must be enabled
801
+ resource "aws_config_config_rule" "vpc_flow_logs" {{
802
+ name = "{project_name}-{env}-vpc-flow-logs-enabled"
803
+ description = "Checks that VPC Flow Logs are enabled for each VPC"
804
+
805
+ source {{
806
+ owner = "AWS"
807
+ source_identifier = "VPC_FLOW_LOGS_ENABLED"
808
+ }}
809
+
810
+ depends_on = [aws_config_configuration_recorder_status.this]
811
+
812
+ tags = {{
813
+ Classification = "CUI"
814
+ ManagedBy = "sparkpilot"
815
+ Component = "zta-security"
816
+ }}
817
+ }}
818
+
819
+ # Root account MFA must be enabled
820
+ resource "aws_config_config_rule" "root_mfa" {{
821
+ name = "{project_name}-{env}-root-account-mfa-enabled"
822
+ description = "Checks that the root account has MFA enabled"
823
+
824
+ source {{
825
+ owner = "AWS"
826
+ source_identifier = "ROOT_ACCOUNT_MFA_ENABLED"
827
+ }}
828
+
829
+ depends_on = [aws_config_configuration_recorder_status.this]
830
+
831
+ tags = {{
832
+ Classification = "CUI"
833
+ ManagedBy = "sparkpilot"
834
+ Component = "zta-security"
835
+ }}
836
+ }}
837
+
838
+ # GuardDuty must be enabled
839
+ resource "aws_config_config_rule" "guardduty_enabled" {{
840
+ name = "{project_name}-{env}-guardduty-enabled-centralized"
841
+ description = "Checks that GuardDuty is enabled"
842
+
843
+ source {{
844
+ owner = "AWS"
845
+ source_identifier = "GUARDDUTY_ENABLED_CENTRALIZED"
846
+ }}
847
+
848
+ depends_on = [aws_config_configuration_recorder_status.this]
849
+
850
+ tags = {{
851
+ Classification = "CUI"
852
+ ManagedBy = "sparkpilot"
853
+ Component = "zta-security"
854
+ }}
855
+ }}
856
+
857
+ output "config_recorder_name" {{
858
+ description = "AWS Config recorder name"
859
+ value = aws_config_configuration_recorder.this.name
860
+ }}
861
+
862
+ output "config_s3_bucket" {{
863
+ description = "S3 bucket name for Config log delivery"
864
+ value = aws_s3_bucket.config_logs.bucket
865
+ }}
866
+
867
+ output "config_role_arn" {{
868
+ description = "IAM role ARN used by Config recorder"
869
+ value = aws_iam_role.config.arn
870
+ }}
871
+ """
872
+
873
+
874
+ def generate_config_rules(project_path: str, config: dict = None) -> dict:
875
+ """Generate AWS Config Terraform module.
876
+
877
+ Deploys Config recorder, S3 delivery channel, and managed rules covering
878
+ encryption, logging, MFA, and GuardDuty enablement.
879
+
880
+ Args:
881
+ project_path: Target project directory.
882
+ config: Optional configuration dict (project_name, environment,
883
+ config_s3_bucket).
884
+
885
+ Returns:
886
+ dict with keys tf_content, module: "config_rules", files.
887
+ """
888
+ cfg = config or {}
889
+ module_name = "config_rules"
890
+ header = _zta_file_header(module_name)
891
+ hcl = _config_rules_hcl(header, cfg)
892
+
893
+ out_dir = _zta_dir(project_path) / module_name
894
+ tf_file = _write(out_dir / "main.tf", hcl)
895
+
896
+ return {
897
+ "tf_content": hcl,
898
+ "module": module_name,
899
+ "files": [str(tf_file)],
900
+ }
901
+
902
+
903
+ # ---------------------------------------------------------------------------
904
+ # 5. VPC Flow Logs
905
+ # ---------------------------------------------------------------------------
906
+
907
+ def _vpc_flow_logs_hcl(header: str, config: dict) -> str:
908
+ project_name = config.get("project_name", "sparkpilot")
909
+ env = config.get("environment", "dev")
910
+ retention_days = config.get("flow_log_retention_days", 365)
911
+ archive_bucket = config.get("flow_log_s3_bucket", f"{project_name}-{env}-flow-logs-archive")
912
+ return f"""{header}
913
+ # ------------------------------------------------------------------------------
914
+ # Enhanced VPC Flow Logs — CloudWatch + S3 Archival
915
+ # Satisfies: NIST 800-53 AU-2, AU-3, AU-9, AU-12, SI-4
916
+ # ------------------------------------------------------------------------------
917
+
918
+ variable "vpc_id" {{
919
+ description = "ID of the VPC to enable flow logs for"
920
+ type = string
921
+ }}
922
+
923
+ # CloudWatch log group for near-real-time flow log analysis
924
+ resource "aws_cloudwatch_log_group" "flow_logs" {{
925
+ name = "/aws/vpc/{project_name}-{env}/flow-logs"
926
+ retention_in_days = {retention_days}
927
+ kms_key_id = var.flow_log_kms_key_arn
928
+
929
+ tags = {{
930
+ Name = "{project_name}-{env}-vpc-flow-logs"
931
+ Classification = "CUI"
932
+ ManagedBy = "sparkpilot"
933
+ Component = "zta-security"
934
+ }}
935
+ }}
936
+
937
+ variable "flow_log_kms_key_arn" {{
938
+ description = "KMS key ARN to encrypt CloudWatch log group (optional)"
939
+ type = string
940
+ default = null
941
+ }}
942
+
943
+ # IAM role for VPC Flow Logs → CloudWatch
944
+ resource "aws_iam_role" "flow_logs" {{
945
+ name = "{project_name}-{env}-vpc-flow-logs-role"
946
+
947
+ assume_role_policy = jsonencode({{
948
+ Version = "2012-10-17"
949
+ Statement = [{{
950
+ Action = "sts:AssumeRole"
951
+ Effect = "Allow"
952
+ Principal = {{ Service = "vpc-flow-logs.amazonaws.com" }}
953
+ }}]
954
+ }})
955
+
956
+ tags = {{
957
+ Classification = "CUI"
958
+ ManagedBy = "sparkpilot"
959
+ Component = "zta-security"
960
+ }}
961
+ }}
962
+
963
+ resource "aws_iam_role_policy" "flow_logs" {{
964
+ name = "{project_name}-{env}-vpc-flow-logs-policy"
965
+ role = aws_iam_role.flow_logs.id
966
+
967
+ policy = jsonencode({{
968
+ Version = "2012-10-17"
969
+ Statement = [{{
970
+ Effect = "Allow"
971
+ Action = [
972
+ "logs:CreateLogGroup",
973
+ "logs:CreateLogStream",
974
+ "logs:PutLogEvents",
975
+ "logs:DescribeLogGroups",
976
+ "logs:DescribeLogStreams"
977
+ ]
978
+ Resource = "*"
979
+ }}]
980
+ }})
981
+ }}
982
+
983
+ # Flow logs → CloudWatch (near-real-time SIEM feed)
984
+ resource "aws_flow_log" "cloudwatch" {{
985
+ vpc_id = var.vpc_id
986
+ traffic_type = "ALL"
987
+ log_destination_type = "cloud-watch-logs"
988
+ log_destination = aws_cloudwatch_log_group.flow_logs.arn
989
+ iam_role_arn = aws_iam_role.flow_logs.arn
990
+
991
+ # Enhanced metadata fields (VPC Flow Logs v5)
992
+ log_format = "${{version}} ${{account-id}} ${{interface-id}} ${{srcaddr}} ${{dstaddr}} ${{srcport}} ${{dstport}} ${{protocol}} ${{packets}} ${{bytes}} ${{windowstart}} ${{windowend}} ${{action}} ${{log-status}} ${{vpc-id}} ${{subnet-id}} ${{instance-id}} ${{tcp-flags}} ${{type}} ${{pkt-srcaddr}} ${{pkt-dstaddr}} ${{region}} ${{az-id}} ${{sublocation-type}} ${{sublocation-id}} ${{pkt-src-aws-service}} ${{pkt-dst-aws-service}} ${{flow-direction}} ${{traffic-path}}"
993
+
994
+ tags = {{
995
+ Name = "{project_name}-{env}-flow-log-cw"
996
+ Classification = "CUI"
997
+ ManagedBy = "sparkpilot"
998
+ Component = "zta-security"
999
+ Destination = "cloudwatch"
1000
+ }}
1001
+ }}
1002
+
1003
+ # S3 bucket for long-term archival (NIST AU-9 archival requirement)
1004
+ resource "aws_s3_bucket" "flow_logs_archive" {{
1005
+ bucket = "{archive_bucket}"
1006
+ force_destroy = false
1007
+
1008
+ tags = {{
1009
+ Name = "{archive_bucket}"
1010
+ Classification = "CUI"
1011
+ ManagedBy = "sparkpilot"
1012
+ Component = "zta-security"
1013
+ }}
1014
+ }}
1015
+
1016
+ resource "aws_s3_bucket_versioning" "flow_logs_archive" {{
1017
+ bucket = aws_s3_bucket.flow_logs_archive.id
1018
+ versioning_configuration {{
1019
+ status = "Enabled"
1020
+ }}
1021
+ }}
1022
+
1023
+ resource "aws_s3_bucket_server_side_encryption_configuration" "flow_logs_archive" {{
1024
+ bucket = aws_s3_bucket.flow_logs_archive.id
1025
+ rule {{
1026
+ apply_server_side_encryption_by_default {{
1027
+ sse_algorithm = "AES256"
1028
+ }}
1029
+ }}
1030
+ }}
1031
+
1032
+ resource "aws_s3_bucket_public_access_block" "flow_logs_archive" {{
1033
+ bucket = aws_s3_bucket.flow_logs_archive.id
1034
+ block_public_acls = true
1035
+ block_public_policy = true
1036
+ ignore_public_acls = true
1037
+ restrict_public_buckets = true
1038
+ }}
1039
+
1040
+ # Lifecycle: transition to Glacier after 90 days, expire after 7 years
1041
+ resource "aws_s3_bucket_lifecycle_configuration" "flow_logs_archive" {{
1042
+ bucket = aws_s3_bucket.flow_logs_archive.id
1043
+
1044
+ rule {{
1045
+ id = "archive-flow-logs"
1046
+ status = "Enabled"
1047
+
1048
+ transition {{
1049
+ days = 90
1050
+ storage_class = "GLACIER"
1051
+ }}
1052
+
1053
+ expiration {{
1054
+ days = 2555
1055
+ }}
1056
+ }}
1057
+ }}
1058
+
1059
+ # Flow logs → S3 (long-term archival)
1060
+ resource "aws_flow_log" "s3" {{
1061
+ vpc_id = var.vpc_id
1062
+ traffic_type = "ALL"
1063
+ log_destination_type = "s3"
1064
+ log_destination = aws_s3_bucket.flow_logs_archive.arn
1065
+
1066
+ destination_options {{
1067
+ file_format = "parquet"
1068
+ hive_compatible_partitions = true
1069
+ per_hour_partition = true
1070
+ }}
1071
+
1072
+ tags = {{
1073
+ Name = "{project_name}-{env}-flow-log-s3"
1074
+ Classification = "CUI"
1075
+ ManagedBy = "sparkpilot"
1076
+ Component = "zta-security"
1077
+ Destination = "s3"
1078
+ }}
1079
+ }}
1080
+
1081
+ # CloudWatch metric filter: flag rejected traffic spikes
1082
+ resource "aws_cloudwatch_metric_filter" "rejected_traffic" {{
1083
+ name = "{project_name}-{env}-rejected-traffic"
1084
+ log_group_name = aws_cloudwatch_log_group.flow_logs.name
1085
+ pattern = "[version, account_id, interface_id, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, windowstart, windowend, action = REJECT, log_status]"
1086
+
1087
+ metric_transformation {{
1088
+ name = "RejectedPackets"
1089
+ namespace = "ICDev/VPCFlowLogs"
1090
+ value = "1"
1091
+ default_value = "0"
1092
+ unit = "Count"
1093
+ }}
1094
+ }}
1095
+
1096
+ resource "aws_cloudwatch_metric_alarm" "rejected_traffic_spike" {{
1097
+ alarm_name = "{project_name}-{env}-rejected-traffic-spike"
1098
+ comparison_operator = "GreaterThanThreshold"
1099
+ evaluation_periods = 2
1100
+ metric_name = "RejectedPackets"
1101
+ namespace = "ICDev/VPCFlowLogs"
1102
+ period = 300
1103
+ statistic = "Sum"
1104
+ threshold = 1000
1105
+ alarm_description = "Unusually high rejected packet count — possible port scan or DDoS"
1106
+ treat_missing_data = "notBreaching"
1107
+
1108
+ tags = {{
1109
+ Classification = "CUI"
1110
+ ManagedBy = "sparkpilot"
1111
+ Component = "zta-security"
1112
+ }}
1113
+ }}
1114
+
1115
+ output "flow_log_cloudwatch_id" {{
1116
+ description = "Flow log ID for CloudWatch destination"
1117
+ value = aws_flow_log.cloudwatch.id
1118
+ }}
1119
+
1120
+ output "flow_log_s3_id" {{
1121
+ description = "Flow log ID for S3 archival destination"
1122
+ value = aws_flow_log.s3.id
1123
+ }}
1124
+
1125
+ output "flow_log_group_name" {{
1126
+ description = "CloudWatch log group name for VPC flow logs"
1127
+ value = aws_cloudwatch_log_group.flow_logs.name
1128
+ }}
1129
+
1130
+ output "flow_log_archive_bucket" {{
1131
+ description = "S3 bucket name for long-term flow log archival"
1132
+ value = aws_s3_bucket.flow_logs_archive.bucket
1133
+ }}
1134
+ """
1135
+
1136
+
1137
+ def generate_vpc_flow_logs(project_path: str, config: dict = None) -> dict:
1138
+ """Generate enhanced VPC Flow Logs Terraform module.
1139
+
1140
+ Deploys dual-destination flow logs (CloudWatch for near-real-time +
1141
+ S3 Parquet for long-term archival), metric filter for rejected traffic,
1142
+ and a CloudWatch alarm for traffic spikes.
1143
+
1144
+ Args:
1145
+ project_path: Target project directory.
1146
+ config: Optional configuration dict (project_name, environment,
1147
+ flow_log_retention_days, flow_log_s3_bucket).
1148
+
1149
+ Returns:
1150
+ dict with keys tf_content, module: "vpc_flow_logs", files.
1151
+ """
1152
+ cfg = config or {}
1153
+ module_name = "vpc_flow_logs"
1154
+ header = _zta_file_header(module_name)
1155
+ hcl = _vpc_flow_logs_hcl(header, cfg)
1156
+
1157
+ out_dir = _zta_dir(project_path) / module_name
1158
+ tf_file = _write(out_dir / "main.tf", hcl)
1159
+
1160
+ return {
1161
+ "tf_content": hcl,
1162
+ "module": module_name,
1163
+ "files": [str(tf_file)],
1164
+ }
1165
+
1166
+
1167
+ # ---------------------------------------------------------------------------
1168
+ # 6. Generate All
1169
+ # ---------------------------------------------------------------------------
1170
+
1171
+ _MODULE_GENERATORS = {
1172
+ "guardduty": generate_guardduty,
1173
+ "security_hub": generate_security_hub,
1174
+ "waf": generate_waf,
1175
+ "config_rules": generate_config_rules,
1176
+ "vpc_flow_logs": generate_vpc_flow_logs,
1177
+ }
1178
+
1179
+
1180
+ def generate_all(project_path: str, config: dict = None) -> dict:
1181
+ """Generate all ZTA security Terraform modules.
1182
+
1183
+ Calls all five individual generators and aggregates their output into a
1184
+ single result dict.
1185
+
1186
+ Args:
1187
+ project_path: Target project directory.
1188
+ config: Optional configuration dict shared across all modules.
1189
+
1190
+ Returns:
1191
+ dict with keys:
1192
+ modules (dict[str, dict]): Per-module results keyed by module name.
1193
+ files (list[str]): Flat list of all generated file paths.
1194
+ """
1195
+ cfg = config or {}
1196
+ results: dict = {"modules": {}, "files": []}
1197
+
1198
+ for module_name, generator in _MODULE_GENERATORS.items():
1199
+ module_result = generator(project_path, cfg)
1200
+ results["modules"][module_name] = module_result
1201
+ results["files"].extend(module_result.get("files", []))
1202
+
1203
+ return results
1204
+
1205
+
1206
+ # ---------------------------------------------------------------------------
1207
+ # CLI
1208
+ # ---------------------------------------------------------------------------
1209
+
1210
+ def _human_output(result: dict, modules_requested: list) -> None:
1211
+ """Print a human-readable summary to stdout."""
1212
+ all_files: list = result.get("files", [])
1213
+
1214
+ # Colour codes (gracefully ignored on non-ANSI terminals)
1215
+ GREEN = "\033[32m"
1216
+ CYAN = "\033[36m"
1217
+ BOLD = "\033[1m"
1218
+ RESET = "\033[0m"
1219
+
1220
+ print(f"\n{BOLD}ZTA Terraform Generator — AWS GovCloud ({REGION}){RESET}")
1221
+ print(f"Modules requested : {', '.join(modules_requested)}")
1222
+ print(f"Files generated : {len(all_files)}\n")
1223
+
1224
+ for f in all_files:
1225
+ print(f" {GREEN}+{RESET} {CYAN}{f}{RESET}")
1226
+
1227
+ print(f"\n{BOLD}[OK]{RESET} ZTA modules written successfully.\n")
1228
+
1229
+
1230
+ def main():
1231
+ parser = argparse.ArgumentParser(
1232
+ description="Generate ZTA-specific Terraform modules for AWS GovCloud security services."
1233
+ )
1234
+ parser.add_argument(
1235
+ "--project-path",
1236
+ required=True,
1237
+ help="Target project directory (terraform/zta/ will be created inside it)",
1238
+ )
1239
+ parser.add_argument(
1240
+ "--modules",
1241
+ default="all",
1242
+ help=(
1243
+ "Comma-separated modules to generate, or 'all'. "
1244
+ "Choices: all, guardduty, security_hub, waf, config_rules, vpc_flow_logs"
1245
+ ),
1246
+ )
1247
+ # Shared config overrides
1248
+ parser.add_argument("--project-name", default="sparkpilot", help="Project name for resource naming")
1249
+ parser.add_argument(
1250
+ "--environment",
1251
+ default="dev",
1252
+ choices=["dev", "staging", "prod"],
1253
+ help="Deployment environment",
1254
+ )
1255
+ parser.add_argument("--sns-email", default="security@agency.gov", help="Email for GuardDuty SNS alerts")
1256
+ parser.add_argument("--rate-limit", type=int, default=2000, help="WAF IP rate limit (requests per 5 min)")
1257
+ parser.add_argument("--json", action="store_true", dest="json_output", help="Output JSON result")
1258
+ parser.add_argument("--human", action="store_true", help="Output human-readable summary (default when --json not set)")
1259
+ args = parser.parse_args()
1260
+
1261
+ config = {
1262
+ "project_name": args.project_name,
1263
+ "environment": args.environment,
1264
+ "sns_email": args.sns_email,
1265
+ "rate_limit_requests": args.rate_limit,
1266
+ }
1267
+
1268
+ requested_raw = [m.strip().lower() for m in args.modules.split(",")]
1269
+ use_all = "all" in requested_raw
1270
+
1271
+ if use_all:
1272
+ modules_to_run = list(_MODULE_GENERATORS.keys())
1273
+ result = generate_all(args.project_path, config)
1274
+ else:
1275
+ modules_to_run = []
1276
+ result = {"modules": {}, "files": []}
1277
+ for mod in requested_raw:
1278
+ if mod not in _MODULE_GENERATORS:
1279
+ print(f"[WARN] Unknown module '{mod}' — skipping.", file=sys.stderr)
1280
+ continue
1281
+ modules_to_run.append(mod)
1282
+ mod_result = _MODULE_GENERATORS[mod](args.project_path, config)
1283
+ result["modules"][mod] = mod_result
1284
+ result["files"].extend(mod_result.get("files", []))
1285
+
1286
+ if args.json_output:
1287
+ # Omit tf_content from JSON output (verbose HCL) — include file lists only
1288
+ json_out: dict = {
1289
+ "status": "ok",
1290
+ "region": REGION,
1291
+ "modules_generated": modules_to_run,
1292
+ "files": result["files"],
1293
+ "file_count": len(result["files"]),
1294
+ }
1295
+ print(json.dumps(json_out, indent=2))
1296
+ else:
1297
+ _human_output(result, modules_to_run)
1298
+
1299
+
1300
+ if __name__ == "__main__":
1301
+ main()