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,906 @@
1
+ #!/usr/bin/env python3
2
+ # CUI // SP-CTI
3
+ # Controlled by: Department of Defense
4
+ # CUI Category: CTI
5
+ # Distribution: D
6
+ # POC: ICDEV System Administrator
7
+ """AI Advisor — Dual-ranked compliance improvement recommendations.
8
+
9
+ Analyzes audit results and generates prioritized recommendations ranked
10
+ by both impact (biggest score increase) and effort (easiest to implement).
11
+ Combined view shows optimal path to improve compliance posture.
12
+
13
+ LLM routing:
14
+ - Scanner tier: deterministic control-to-recommendation mapping (air-gap safe)
15
+ - Worker tier: nuanced advice for complex multi-control gaps (LLM-assisted)
16
+
17
+ Usage:
18
+ python tools/audit_engine/ai_advisor.py --audit-file result.json --json
19
+ python tools/audit_engine/ai_advisor.py --audit-file result.json --regime nist_800_53 --json
20
+ """
21
+
22
+ import json
23
+ import sys
24
+ from datetime import datetime, timezone
25
+ from pathlib import Path
26
+ from typing import Dict, List, Optional
27
+
28
+ BASE_DIR = Path(__file__).resolve().parent.parent.parent
29
+
30
+ # Effort levels: lower = easier to implement
31
+ EFFORT_LEVELS = {
32
+ "config_change": 1, # Change a YAML/config setting
33
+ "add_file": 2, # Add a missing file (e.g., .gitignore, SECURITY.md)
34
+ "code_annotation": 3, # Add CUI markings, comments, decorators
35
+ "tool_enable": 4, # Enable an existing tool/scanner
36
+ "code_pattern": 5, # Add logging, error handling patterns
37
+ "feature_add": 6, # Implement new feature (auth, encryption)
38
+ "architecture": 7, # Architectural change (boundary, mesh)
39
+ "process_change": 8, # Organizational/process change
40
+ }
41
+
42
+ # Control-family to recommendation mapping (deterministic, scanner-tier)
43
+ RECOMMENDATION_CATALOG = {
44
+ # Access Control
45
+ "AC-2": {
46
+ "title": "Implement account management lifecycle",
47
+ "description": "Add user provisioning, de-provisioning, and periodic review processes. "
48
+ "Use RBAC with role assignment and session management.",
49
+ "effort": "feature_add",
50
+ "impact": "high",
51
+ "steps": [
52
+ "Add user role definitions in config (args/)",
53
+ "Implement login/session management with timeout",
54
+ "Add account lockout after failed attempts",
55
+ "Create periodic access review automation",
56
+ ],
57
+ },
58
+ "AC-3": {
59
+ "title": "Add access enforcement (RBAC/ABAC)",
60
+ "description": "Implement role-based or attribute-based access control "
61
+ "on all protected endpoints and resources.",
62
+ "effort": "feature_add",
63
+ "impact": "high",
64
+ "steps": [
65
+ "Define roles and permissions in configuration",
66
+ "Add @require_auth / @require_role decorators to endpoints",
67
+ "Implement permission checking middleware",
68
+ "Test with least-privilege scenarios",
69
+ ],
70
+ },
71
+ "AC-6": {
72
+ "title": "Enforce least privilege",
73
+ "description": "Run services as non-root, use read-only filesystems, "
74
+ "minimize permissions granted to each component.",
75
+ "effort": "config_change",
76
+ "impact": "medium",
77
+ "steps": [
78
+ "Set containers to run as non-root user",
79
+ "Apply read-only root filesystem in K8s pods",
80
+ "Remove unnecessary capabilities",
81
+ "Review and minimize IAM permissions",
82
+ ],
83
+ },
84
+ "AC-16": {
85
+ "title": "Add CUI classification markings",
86
+ "description": "Apply CUI // SP-CTI header markings to all source files "
87
+ "per NIST 800-53 AC-16.",
88
+ "effort": "code_annotation",
89
+ "impact": "medium",
90
+ "steps": [
91
+ "Run: python tools/compliance/cui_marker.py --file <path> --marking 'CUI // SP-CTI'",
92
+ "Add CUI header template to file scaffolding tools",
93
+ "Verify with: python tools/audit_engine/scanner.py --target . --json",
94
+ ],
95
+ },
96
+
97
+ # Audit and Accountability
98
+ "AU-2": {
99
+ "title": "Implement event logging framework",
100
+ "description": "Add structured logging for security-relevant events including "
101
+ "authentication, authorization, data access, and administrative actions.",
102
+ "effort": "code_pattern",
103
+ "impact": "high",
104
+ "steps": [
105
+ "Import and configure Python logging module",
106
+ "Log authentication events (login, logout, failed attempts)",
107
+ "Log authorization decisions (access granted/denied)",
108
+ "Log data modification events (create, update, delete)",
109
+ ],
110
+ },
111
+ "AU-9": {
112
+ "title": "Protect audit trail integrity",
113
+ "description": "Ensure audit logs are append-only and cannot be modified or deleted. "
114
+ "ICDEV already uses append-only audit_trail table (D6).",
115
+ "effort": "config_change",
116
+ "impact": "high",
117
+ "steps": [
118
+ "Verify no UPDATE/DELETE on audit tables",
119
+ "Enable WAL mode for audit database",
120
+ "Add audit log backup/rotation",
121
+ ],
122
+ },
123
+
124
+ # Configuration Management
125
+ "CM-8": {
126
+ "title": "Generate Software Bill of Materials",
127
+ "description": "Generate CycloneDX SBOM for full component inventory.",
128
+ "effort": "tool_enable",
129
+ "impact": "medium",
130
+ "steps": [
131
+ "Run: python tools/compliance/sbom_generator.py --project-id <id> --project-dir .",
132
+ "Add SBOM generation to CI/CD pipeline",
133
+ "Review components for license compliance",
134
+ ],
135
+ },
136
+
137
+ # Identification and Authentication
138
+ "IA-5": {
139
+ "title": "Remove hardcoded secrets",
140
+ "description": "Eliminate all hardcoded passwords, API keys, and tokens from source code. "
141
+ "Use environment variables or secrets manager.",
142
+ "effort": "code_pattern",
143
+ "impact": "critical",
144
+ "steps": [
145
+ "Run: python tools/security/secret_detector.py --project-dir .",
146
+ "Move secrets to .env (excluded from git) or K8s secrets",
147
+ "Use os.environ.get() for all credential access",
148
+ "Add .env to .gitignore",
149
+ ],
150
+ },
151
+
152
+ # Risk Assessment
153
+ "RA-5": {
154
+ "title": "Enable vulnerability scanning pipeline",
155
+ "description": "Activate SAST and dependency scanning in CI/CD.",
156
+ "effort": "tool_enable",
157
+ "impact": "high",
158
+ "steps": [
159
+ "Run: python tools/security/sast_runner.py --project-dir .",
160
+ "Run: python tools/security/dependency_auditor.py --project-dir .",
161
+ "Add both to CI/CD pipeline (pre-merge gate)",
162
+ "Set thresholds: 0 critical, 0 high allowed",
163
+ ],
164
+ },
165
+
166
+ # System and Services Acquisition
167
+ "SA-8": {
168
+ "title": "Apply Secure by Design principles",
169
+ "description": "Run CISA SbD assessment and address findings.",
170
+ "effort": "code_pattern",
171
+ "impact": "medium",
172
+ "steps": [
173
+ "Run: python tools/compliance/sbd_assessor.py --project-id <id> --project-dir . --json",
174
+ "Address each SbD requirement with evidence",
175
+ "Register exceptions for any accepted risks",
176
+ ],
177
+ },
178
+ "SA-11": {
179
+ "title": "Add automated developer testing",
180
+ "description": "Implement test suite with unit tests, integration tests, and SAST.",
181
+ "effort": "feature_add",
182
+ "impact": "high",
183
+ "steps": [
184
+ "Create tests/ directory with pytest test files",
185
+ "Add test coverage for critical paths (auth, data access)",
186
+ "Enable SAST in CI/CD pipeline",
187
+ "Set minimum coverage threshold (e.g., 80%)",
188
+ ],
189
+ },
190
+
191
+ # System and Communications Protection
192
+ "SC-8": {
193
+ "title": "Enable encryption in transit",
194
+ "description": "Configure TLS for all network communications.",
195
+ "effort": "config_change",
196
+ "impact": "high",
197
+ "steps": [
198
+ "Enable HTTPS on all web endpoints",
199
+ "Configure TLS certificates (Let's Encrypt or CA-signed)",
200
+ "Enforce HSTS headers",
201
+ "Disable HTTP fallback",
202
+ ],
203
+ },
204
+ "SC-13": {
205
+ "title": "Use FIPS-validated cryptography",
206
+ "description": "Replace non-standard crypto with FIPS 140-3 validated modules.",
207
+ "effort": "code_pattern",
208
+ "impact": "high",
209
+ "steps": [
210
+ "Use hashlib (SHA-256/384/512) for hashing",
211
+ "Use cryptography library with FIPS-validated backend",
212
+ "Avoid MD5, SHA-1, DES for security purposes",
213
+ "Document crypto inventory",
214
+ ],
215
+ },
216
+
217
+ # System and Information Integrity
218
+ "SI-2": {
219
+ "title": "Remediate known vulnerabilities",
220
+ "description": "Update dependencies with known CVEs to patched versions.",
221
+ "effort": "tool_enable",
222
+ "impact": "critical",
223
+ "steps": [
224
+ "Run: python tools/security/dependency_auditor.py --project-dir .",
225
+ "Update packages with known vulnerabilities",
226
+ "Pin dependency versions in requirements.txt",
227
+ "Add dependency audit to CI/CD pipeline",
228
+ ],
229
+ },
230
+ "SI-10": {
231
+ "title": "Add input validation",
232
+ "description": "Validate and sanitize all user inputs at system boundaries.",
233
+ "effort": "code_pattern",
234
+ "impact": "high",
235
+ "steps": [
236
+ "Add input validation on all API endpoints",
237
+ "Use parameterized queries for all SQL",
238
+ "Sanitize HTML output to prevent XSS",
239
+ "Validate file uploads (type, size, content)",
240
+ ],
241
+ },
242
+
243
+ # Supply Chain
244
+ "SR-3": {
245
+ "title": "Implement supply chain controls",
246
+ "description": "Document software supply chain with SBOM and dependency auditing.",
247
+ "effort": "tool_enable",
248
+ "impact": "medium",
249
+ "steps": [
250
+ "Generate SBOM: python tools/compliance/sbom_generator.py",
251
+ "Audit dependencies: python tools/security/dependency_auditor.py",
252
+ "Review licenses for compatibility",
253
+ "Add supply chain checks to CI/CD",
254
+ ],
255
+ },
256
+ }
257
+
258
+ # Default recommendations for unmapped controls
259
+ DEFAULT_RECOMMENDATION = {
260
+ "title": "Assess and implement control",
261
+ "description": "This control requires manual assessment. Review the control description "
262
+ "and implement appropriate technical or procedural controls.",
263
+ "effort": "process_change",
264
+ "impact": "medium",
265
+ "steps": [
266
+ "Review control requirements in the regime definition",
267
+ "Assess current implementation status",
268
+ "Document implementation plan",
269
+ "Implement and verify",
270
+ ],
271
+ }
272
+
273
+
274
+ def generate_recommendations(
275
+ audit_result: Dict,
276
+ regime_id: Optional[str] = None,
277
+ max_recommendations: int = 20,
278
+ use_llm: bool = False,
279
+ ) -> Dict:
280
+ """Generate prioritized recommendations from audit results.
281
+
282
+ Args:
283
+ audit_result: Full audit result from engine.run_audit().
284
+ regime_id: Optional filter to single regime.
285
+ max_recommendations: Maximum recommendations to return.
286
+ use_llm: Whether to use LLM for nuanced recommendations.
287
+
288
+ Returns:
289
+ Dict with impact-ranked and effort-ranked recommendation lists.
290
+ """
291
+ regime_scores = audit_result.get("regime_scores", {})
292
+
293
+ if regime_id:
294
+ regimes_to_analyze = {regime_id: regime_scores.get(regime_id, {})}
295
+ else:
296
+ regimes_to_analyze = regime_scores
297
+
298
+ all_recs = []
299
+ seen_controls = set()
300
+
301
+ for rid, scores in regimes_to_analyze.items():
302
+ if "error" in scores:
303
+ continue
304
+
305
+ for category in scores.get("categories", []):
306
+ for ctrl in category.get("controls", []):
307
+ if ctrl["status"] in ("fail", "not_assessed", "partial"):
308
+ ctrl_id = ctrl["control_id"]
309
+
310
+ # Deduplicate across regimes (same control, same recommendation)
311
+ base_ctrl = ctrl_id.split("-")[0] + "-" + ctrl_id.split("-")[1] if "-" in ctrl_id else ctrl_id
312
+ if base_ctrl in seen_controls:
313
+ continue
314
+ seen_controls.add(base_ctrl)
315
+
316
+ rec = _get_recommendation(ctrl_id, ctrl, rid)
317
+ rec["regime_id"] = rid
318
+ rec["control_id"] = ctrl_id
319
+ rec["control_title"] = ctrl.get("title", "")
320
+ rec["current_status"] = ctrl["status"]
321
+ rec["severity"] = ctrl.get("severity", "medium")
322
+ all_recs.append(rec)
323
+
324
+ # Calculate impact scores (how much each fix moves the overall score)
325
+ for rec in all_recs:
326
+ rec["impact_score"] = _calculate_impact_score(rec)
327
+ rec["effort_score"] = EFFORT_LEVELS.get(rec.get("effort", "process_change"), 8)
328
+ # Combined score: high impact + low effort = best ROI
329
+ rec["roi_score"] = rec["impact_score"] / max(rec["effort_score"], 1)
330
+
331
+ # LLM-enhanced recommendations (worker tier)
332
+ if use_llm and all_recs:
333
+ all_recs = _enhance_with_llm(all_recs, audit_result)
334
+
335
+ # Sort by different rankings
336
+ impact_ranked = sorted(all_recs, key=lambda r: r["impact_score"], reverse=True)[:max_recommendations]
337
+ effort_ranked = sorted(all_recs, key=lambda r: r["effort_score"])[:max_recommendations]
338
+ roi_ranked = sorted(all_recs, key=lambda r: r["roi_score"], reverse=True)[:max_recommendations]
339
+
340
+ # Estimate score improvement if top 5 ROI fixes are applied
341
+ estimated_improvement = sum(r["impact_score"] for r in roi_ranked[:5])
342
+
343
+ return {
344
+ "success": True,
345
+ "total_recommendations": len(all_recs),
346
+ "estimated_improvement_top5": round(min(estimated_improvement, 30), 1),
347
+ "by_impact": [_format_rec(r, rank + 1) for rank, r in enumerate(impact_ranked)],
348
+ "by_effort": [_format_rec(r, rank + 1) for rank, r in enumerate(effort_ranked)],
349
+ "by_roi": [_format_rec(r, rank + 1) for rank, r in enumerate(roi_ranked)],
350
+ "quick_wins": [
351
+ _format_rec(r, i + 1) for i, r in enumerate(roi_ranked)
352
+ if r["effort_score"] <= 3
353
+ ][:5],
354
+ "timestamp": datetime.now(timezone.utc).isoformat(),
355
+ }
356
+
357
+
358
+ def _get_recommendation(ctrl_id: str, ctrl_data: Dict, regime_id: str) -> Dict:
359
+ """Get recommendation for a control from the catalog."""
360
+ # Direct match
361
+ if ctrl_id in RECOMMENDATION_CATALOG:
362
+ return dict(RECOMMENDATION_CATALOG[ctrl_id])
363
+
364
+ # Family match (e.g., AC-2(1) -> AC-2)
365
+ base = ctrl_id.split("(")[0] if "(" in ctrl_id else ctrl_id
366
+ if base in RECOMMENDATION_CATALOG:
367
+ return dict(RECOMMENDATION_CATALOG[base])
368
+
369
+ # NIST family prefix match
370
+ family = ctrl_id.split("-")[0] if "-" in ctrl_id else ""
371
+ family_recs = {k: v for k, v in RECOMMENDATION_CATALOG.items() if k.startswith(family + "-")}
372
+ if family_recs:
373
+ # Return the first family match as a starting point
374
+ rec = dict(next(iter(family_recs.values())))
375
+ rec["title"] = f"Address {ctrl_id}: {ctrl_data.get('title', '')}"
376
+ return rec
377
+
378
+ # Default
379
+ rec = dict(DEFAULT_RECOMMENDATION)
380
+ rec["title"] = f"Implement {ctrl_id}: {ctrl_data.get('title', '')}"
381
+ return rec
382
+
383
+
384
+ def _calculate_impact_score(rec: Dict) -> float:
385
+ """Calculate the score impact of fixing this control.
386
+
387
+ Higher score = fixing this control improves posture more.
388
+ """
389
+ severity_weights = {"critical": 10, "high": 7, "medium": 4, "low": 2}
390
+ status_weights = {"fail": 1.0, "not_assessed": 0.8, "partial": 0.5}
391
+
392
+ severity = rec.get("severity", "medium")
393
+ status = rec.get("current_status", "fail")
394
+
395
+ base = severity_weights.get(severity, 4)
396
+ multiplier = status_weights.get(status, 1.0)
397
+
398
+ return round(base * multiplier, 1)
399
+
400
+
401
+ def _format_rec(rec: Dict, rank: int) -> Dict:
402
+ """Format a recommendation for output."""
403
+ effort_labels = {
404
+ 1: "Quick config change",
405
+ 2: "Add a file",
406
+ 3: "Code annotations",
407
+ 4: "Enable a tool",
408
+ 5: "Add code patterns",
409
+ 6: "New feature",
410
+ 7: "Architecture change",
411
+ 8: "Process change",
412
+ }
413
+ return {
414
+ "rank": rank,
415
+ "control_id": rec.get("control_id", ""),
416
+ "control_title": rec.get("control_title", ""),
417
+ "regime_id": rec.get("regime_id", ""),
418
+ "severity": rec.get("severity", ""),
419
+ "current_status": rec.get("current_status", ""),
420
+ "title": rec.get("title", ""),
421
+ "description": rec.get("description", ""),
422
+ "effort_level": rec.get("effort_score", 8),
423
+ "effort_label": effort_labels.get(rec.get("effort_score", 8), "Process change"),
424
+ "impact_score": rec.get("impact_score", 0),
425
+ "roi_score": round(rec.get("roi_score", 0), 2),
426
+ "steps": rec.get("steps", []),
427
+ }
428
+
429
+
430
+ def _enhance_with_llm(recs: List[Dict], audit_result: Dict) -> List[Dict]:
431
+ """Enhance recommendations using LLM (worker tier).
432
+
433
+ Uses two-tier routing: qwen3.5 drafts, Claude reviews.
434
+ Only called for complex multi-control gaps.
435
+ """
436
+ try:
437
+ from tools.llm.router import LLMRouter
438
+ router = LLMRouter()
439
+
440
+ # Only enhance top 5 by impact (to conserve tokens)
441
+ top_recs = sorted(recs, key=lambda r: r.get("impact_score", 0), reverse=True)[:5]
442
+
443
+ context = {
444
+ "target_type": audit_result.get("target_type", "unknown"),
445
+ "failing_controls": [
446
+ {"id": r["control_id"], "title": r.get("control_title", ""),
447
+ "severity": r.get("severity", ""), "status": r["current_status"]}
448
+ for r in top_recs
449
+ ],
450
+ }
451
+
452
+ prompt = (
453
+ f"You are a compliance advisor. Given these failing controls for a "
454
+ f"{context['target_type']} target, provide specific, actionable next steps "
455
+ f"for each. Be concise (2-3 sentences per control).\n\n"
456
+ f"Failing controls:\n{json.dumps(context['failing_controls'], indent=2)}\n\n"
457
+ f"For each control, provide: (1) the single most impactful fix, "
458
+ f"(2) estimated effort in hours."
459
+ )
460
+
461
+ response = router.invoke("compliance_export", {
462
+ "prompt": prompt,
463
+ "max_tokens": 1000,
464
+ })
465
+
466
+ if response and response.get("content"):
467
+ # Append LLM insight to recommendation descriptions
468
+ for rec in top_recs:
469
+ rec["ai_insight"] = response["content"][:200]
470
+ rec["ai_enhanced"] = True
471
+
472
+ except (ImportError, Exception) as e:
473
+ # LLM not available — deterministic recommendations still work
474
+ pass
475
+
476
+ return recs
477
+
478
+
479
+ def generate_action_plans(audit_result: Dict) -> Dict:
480
+ """Generate concrete action plans for regimes scoring below 80%.
481
+
482
+ Each plan includes phased steps, ownership assignments, timeline,
483
+ and expected score improvement per phase.
484
+ """
485
+ plans = {}
486
+ if not audit_result or not audit_result.get("regime_scores"):
487
+ return {"plans": plans, "regimes_below_threshold": 0}
488
+
489
+ for regime_id, regime_data in audit_result["regime_scores"].items():
490
+ if regime_data.get("error"):
491
+ continue
492
+ score = regime_data.get("overall_score", 0)
493
+ if score >= 80:
494
+ continue # Only plan for <80%
495
+
496
+ # Collect all failing controls for this regime
497
+ # Include not_assessed — they count as failed in scoring
498
+ failing = []
499
+ for cat in regime_data.get("categories", []):
500
+ for ctrl in cat.get("controls", []):
501
+ if ctrl.get("status") in ("fail", "partial", "not_assessed"):
502
+ failing.append({
503
+ "control_id": ctrl.get("control_id", ""),
504
+ "control_name": ctrl.get("control_name", ctrl.get("title", "")),
505
+ "status": ctrl.get("status"),
506
+ "category": cat.get("category_name", ""),
507
+ "severity": ctrl.get("severity", "medium"),
508
+ })
509
+
510
+ total = regime_data.get("summary", {}).get("total_controls", len(failing))
511
+ passed = regime_data.get("summary", {}).get("passed", 0)
512
+
513
+ # Sort by severity (critical first) then by auto-fixable
514
+ sev_order = {"critical": 0, "high": 1, "medium": 2, "low": 3}
515
+ failing.sort(key=lambda f: sev_order.get(f["severity"], 2))
516
+
517
+ # Build phased plan
518
+ phases = []
519
+
520
+ # Phase 1: Quick wins (auto-fixable)
521
+ auto_fixable = [
522
+ f for f in failing
523
+ if _has_auto_fix(f["control_id"])
524
+ ]
525
+ manual_only = [
526
+ f for f in failing
527
+ if not _has_auto_fix(f["control_id"])
528
+ ]
529
+
530
+ if auto_fixable:
531
+ phase1_controls = auto_fixable # No cap — include all auto-fixable
532
+ new_score_after_p1 = min(100, ((passed + len(phase1_controls)) / max(total, 1)) * 100)
533
+ phases.append({
534
+ "phase": 1,
535
+ "name": "Quick Wins (Auto-Fixable)",
536
+ "timeline": "1-2 weeks",
537
+ "effort": "Low",
538
+ "owner": "Development Team",
539
+ "controls": [
540
+ {
541
+ "control_id": c["control_id"],
542
+ "control_name": c["control_name"],
543
+ "action": _get_fix_description(c["control_id"]),
544
+ "auto_fixable": True,
545
+ }
546
+ for c in phase1_controls
547
+ ],
548
+ "expected_score_after": round(new_score_after_p1, 1),
549
+ "controls_resolved": len(phase1_controls),
550
+ })
551
+ passed += len(phase1_controls)
552
+
553
+ # Phase 2: Critical & high severity manual controls
554
+ phase2_controls = [f for f in manual_only if f["severity"] in ("critical", "high")]
555
+ if phase2_controls:
556
+ new_score_after_p2 = min(100, ((passed + len(phase2_controls)) / max(total, 1)) * 100)
557
+ phases.append({
558
+ "phase": 2,
559
+ "name": "Critical & High Severity Remediation",
560
+ "timeline": "2-6 weeks",
561
+ "effort": "Medium-High",
562
+ "owner": "Security + Development Team",
563
+ "controls": [
564
+ {
565
+ "control_id": c["control_id"],
566
+ "control_name": c["control_name"],
567
+ "action": _get_concrete_action(c["control_id"], c.get("control_name", "")),
568
+ "auto_fixable": False,
569
+ }
570
+ for c in phase2_controls
571
+ ],
572
+ "expected_score_after": round(new_score_after_p2, 1),
573
+ "controls_resolved": len(phase2_controls),
574
+ })
575
+ passed += len(phase2_controls)
576
+
577
+ # Phase 3: Medium & low severity controls
578
+ phase3_controls = [f for f in manual_only if f["severity"] in ("medium", "low")]
579
+ if phase3_controls:
580
+ new_score_after_p3 = min(100, ((passed + len(phase3_controls)) / max(total, 1)) * 100)
581
+ phases.append({
582
+ "phase": 3,
583
+ "name": "Medium & Low Severity Hardening",
584
+ "timeline": "1-3 months",
585
+ "effort": "Medium",
586
+ "owner": "Development + Compliance Team",
587
+ "controls": [
588
+ {
589
+ "control_id": c["control_id"],
590
+ "control_name": c["control_name"],
591
+ "action": _get_concrete_action(c["control_id"], c.get("control_name", "")),
592
+ "auto_fixable": False,
593
+ }
594
+ for c in phase3_controls
595
+ ],
596
+ "expected_score_after": round(new_score_after_p3, 1),
597
+ "controls_resolved": len(phase3_controls),
598
+ })
599
+
600
+ plans[regime_id] = {
601
+ "regime_id": regime_id,
602
+ "regime_name": regime_data.get("regime_name", regime_id),
603
+ "current_score": round(score, 1),
604
+ "current_grade": regime_data.get("grade", "F"),
605
+ "total_failing": len(failing),
606
+ "total_controls": total,
607
+ "phases": phases,
608
+ "target_score": phases[-1]["expected_score_after"] if phases else score,
609
+ "estimated_timeline": phases[-1]["timeline"] if phases else "N/A",
610
+ }
611
+
612
+ return {
613
+ "plans": plans,
614
+ "regimes_below_threshold": len(plans),
615
+ }
616
+
617
+
618
+ def _has_auto_fix(control_id: str) -> bool:
619
+ """Check if a control has a direct auto-fix handler.
620
+
621
+ Only returns True for controls that directly match a REMEDIATION_ACTIONS
622
+ key (NIST 800-53 format). Cross-framework controls (CMMC, 800-171, SBD)
623
+ are routed to concrete manual actions instead, since the auto-fix scope
624
+ is narrower than the full control requirement.
625
+ """
626
+ import re
627
+ from tools.audit_engine.self_heal import REMEDIATION_ACTIONS
628
+
629
+ # Only match direct NIST 800-53 IDs (AC-6, AU-2, etc.)
630
+ m = re.match(r"^([A-Z]{2})-(\d+)", control_id)
631
+ if not m:
632
+ return False # Non-NIST IDs always go to manual phases
633
+
634
+ nist_id = f"{m.group(1)}-{m.group(2)}"
635
+ if nist_id in REMEDIATION_ACTIONS:
636
+ action = REMEDIATION_ACTIONS[nist_id]
637
+ return action.get("action_type") != "manual"
638
+ return False
639
+
640
+
641
+ def _get_fix_description(control_id: str) -> str:
642
+ """Get the fix description for a control."""
643
+ from tools.audit_engine.self_heal import REMEDIATION_ACTIONS, _extract_control_family
644
+ family = _extract_control_family(control_id)
645
+ if family and family in REMEDIATION_ACTIONS:
646
+ return REMEDIATION_ACTIONS[family].get("description", "Manual assessment required")
647
+ return _get_concrete_action(control_id, "")
648
+
649
+
650
+ # Concrete remediation actions by control domain — specific, actionable steps
651
+ # Maps control ID patterns to ICDEV-specific implementation guidance
652
+ CONCRETE_ACTIONS = {
653
+ # Access Control (AC / 3.1.x)
654
+ "access_control": {
655
+ "keywords": ["access", "authorized", "privilege", "remote", "transaction", "function", "flow"],
656
+ "action": "Implement RBAC in Flask dashboard: add @login_required + role decorators to all routes, "
657
+ "configure session timeout (15 min), add account lockout after 5 failed attempts. "
658
+ "Run: python tools/dashboard/app.py with RBAC_ENABLED=true",
659
+ },
660
+ "least_privilege": {
661
+ "keywords": ["least privilege", "non-privileged", "privileged function"],
662
+ "action": "Add non-root USER to all Dockerfiles, set readOnlyRootFilesystem=true in K8s pod specs, "
663
+ "drop ALL capabilities + add only NET_BIND_SERVICE. "
664
+ "Run: python tools/audit_engine/self_heal.py --control AC-6 --target . --apply",
665
+ },
666
+ "remote_access": {
667
+ "keywords": ["remote access", "remote session"],
668
+ "action": "Enable mTLS for all inter-service communication via service mesh (Istio/Linkerd). "
669
+ "Configure VPN requirement for admin access. Add session recording for privileged sessions. "
670
+ "Run: python tools/devsecops/service_mesh_generator.py --project-id sparkpilot --mesh istio --json",
671
+ },
672
+ "cui_flow": {
673
+ "keywords": ["cui flow", "information flow"],
674
+ "action": "Add CUI boundary markers to all data-at-rest and data-in-transit paths. "
675
+ "Configure network segmentation with default-deny NetworkPolicy. "
676
+ "Run: python tools/devsecops/policy_generator.py --project-id sparkpilot --engine kyverno --json",
677
+ },
678
+ # Audit & Accountability (AU / 3.3.x)
679
+ "audit_logging": {
680
+ "keywords": ["audit", "log", "accountability", "trace", "user accountability"],
681
+ "action": "Add structured JSON logging to all API endpoints (auth events, data access, admin actions). "
682
+ "Configure append-only audit trail (NIST AU compliant — no UPDATE/DELETE). "
683
+ "Run: python tools/audit_engine/self_heal.py --control AU-2 --target . --apply",
684
+ },
685
+ "audit_protection": {
686
+ "keywords": ["protect audit", "audit information", "audit tools"],
687
+ "action": "Enable WAL mode on audit database, set file permissions to 0640, configure audit log rotation "
688
+ "with integrity hashing (SHA-256 per entry). Verify no UPDATE/DELETE on audit_trail table.",
689
+ },
690
+ "audit_correlation": {
691
+ "keywords": ["correlat", "audit record review"],
692
+ "action": "Deploy observability stack: configure OTel tracing with correlation IDs across all services. "
693
+ "Run: python tools/observability/provenance/prov_query.py --entity-id sparkpilot --direction backward --json",
694
+ },
695
+ # Awareness & Training (AT / 3.2.x)
696
+ "training": {
697
+ "keywords": ["training", "awareness", "role-based risk"],
698
+ "action": "Create security training program: document role-based training requirements in docs/security-training.md, "
699
+ "add training completion tracking to user profiles, schedule quarterly security awareness reviews.",
700
+ },
701
+ # Configuration Management (CM / 3.4.x)
702
+ "baseline_config": {
703
+ "keywords": ["baseline", "configuration setting", "change track", "change control"],
704
+ "action": "Generate baseline config with checksums: document all system configs in args/ directory, "
705
+ "add git-based change tracking with mandatory PR reviews. "
706
+ "Run: python tools/compliance/stig_checker.py --project-id sparkpilot to verify STIG compliance.",
707
+ },
708
+ # Identification & Authentication (IA / 3.5.x)
709
+ "authentication": {
710
+ "keywords": ["identif", "authenticat", "multifactor", "mfa"],
711
+ "action": "Implement authentication: add Flask-Login with bcrypt password hashing, enforce MFA via TOTP "
712
+ "(pyotp library), require strong passwords (12+ chars, complexity). "
713
+ "Add API key rotation with 90-day expiry.",
714
+ },
715
+ # Incident Response (IR / 3.6.x)
716
+ "incident_response": {
717
+ "keywords": ["incident"],
718
+ "action": "Create incident response plan: docs/incident-response-plan.md with detection/analysis/containment/"
719
+ "eradication/recovery phases. Add automated alerting via monitor agent. "
720
+ "Run: python tools/security/threat_modeler.py --project-id sparkpilot --create --name 'IR Plan' --json",
721
+ },
722
+ # Maintenance (MA / 3.7.x)
723
+ "maintenance": {
724
+ "keywords": ["maintenance"],
725
+ "action": "Document maintenance procedures: schedule dependency updates (monthly), automate with "
726
+ "python tools/security/dependency_auditor.py in CI/CD. Add maintenance window calendar.",
727
+ },
728
+ # Media Protection (MP / 3.8.x)
729
+ "media_protection": {
730
+ "keywords": ["media protection", "media sanitiz"],
731
+ "action": "Implement data-at-rest encryption for all CUI storage (AES-256). Add secure deletion procedures. "
732
+ "Document media handling in docs/media-protection.md.",
733
+ },
734
+ # Physical (PE / 3.10.x)
735
+ "physical": {
736
+ "keywords": ["physical"],
737
+ "action": "Document physical security controls for deployment environment: data center access controls, "
738
+ "visitor logs, environmental protections. For cloud: reference AWS GovCloud physical security inheritance.",
739
+ },
740
+ # Personnel Security (PS / 3.9.x)
741
+ "personnel": {
742
+ "keywords": ["personnel", "screen individual"],
743
+ "action": "Document personnel screening requirements: background checks for CUI access, "
744
+ "access termination procedures within 24 hours of departure, NDA requirements.",
745
+ },
746
+ # Risk Assessment (RA / 3.11.x)
747
+ "risk_assessment": {
748
+ "keywords": ["risk assess", "vulnerability scan"],
749
+ "action": "Enable automated vulnerability scanning in CI/CD pipeline: "
750
+ "python tools/security/sast_runner.py + python tools/security/dependency_auditor.py. "
751
+ "Schedule quarterly risk assessments. "
752
+ "Run: python tools/compliance/sbd_assessor.py --project-id sparkpilot --project-dir . --json",
753
+ },
754
+ # Recovery (RE / 3.12.x)
755
+ "recovery": {
756
+ "keywords": ["backup", "recovery", "data backup"],
757
+ "action": "Configure automated database backups (daily with 30-day retention). Test restore procedures monthly. "
758
+ "Document backup/recovery plan in docs/backup-recovery.md. Add backup verification checksums.",
759
+ },
760
+ # System & Comms Protection (SC / 3.13.x)
761
+ "boundary_protection": {
762
+ "keywords": ["boundary", "boundary protect"],
763
+ "action": "Configure network segmentation: deploy default-deny NetworkPolicy, enable WAF for web endpoints, "
764
+ "configure egress filtering. "
765
+ "Run: python tools/devsecops/policy_generator.py --project-id sparkpilot --engine kyverno --json",
766
+ },
767
+ "encryption": {
768
+ "keywords": ["encrypt", "cryptograph", "fips", "cui in transit"],
769
+ "action": "Enable TLS 1.3 on all endpoints, configure FIPS 140-3 validated crypto (Python cryptography library), "
770
+ "encrypt CUI at rest with AES-256-GCM. Add HSTS headers. "
771
+ "Run: python tools/audit_engine/self_heal.py --control SC-13 --target . --apply",
772
+ },
773
+ # System & Info Integrity (SI / 3.14.x)
774
+ "flaw_remediation": {
775
+ "keywords": ["flaw", "remediat", "patch"],
776
+ "action": "Run dependency audit and update all packages with known CVEs: "
777
+ "python tools/security/dependency_auditor.py --project-dir . "
778
+ "Pin versions in requirements.txt, add Dependabot/Renovate for automated PR updates.",
779
+ },
780
+ "malicious_code": {
781
+ "keywords": ["malicious code", "malware"],
782
+ "action": "Enable SAST scanning in CI/CD to detect code injection patterns. Add pre-commit hooks for "
783
+ "secret detection. Configure container image scanning. "
784
+ "Run: python tools/security/sast_runner.py --project-dir .",
785
+ },
786
+ "monitoring": {
787
+ "keywords": ["monitor", "unauthorized use", "security alert", "advisory"],
788
+ "action": "Deploy monitoring stack: configure alerting for failed auth attempts (>5/min), "
789
+ "unauthorized API access, anomalous data exfiltration patterns. "
790
+ "Run: python tools/security/ai_telemetry_logger.py --anomalies --window-hours 24 --json",
791
+ },
792
+ # Supply Chain (SR)
793
+ "supply_chain": {
794
+ "keywords": ["supply chain", "sbom", "component"],
795
+ "action": "Generate SBOM and audit supply chain: "
796
+ "python tools/compliance/sbom_generator.py --project-id sparkpilot --project-dir . "
797
+ "Run: python tools/supply_chain/scrm_assessor.py --project-id sparkpilot --aggregate --json",
798
+ },
799
+ }
800
+
801
+
802
+ def _get_concrete_action(control_id: str, control_name: str) -> str:
803
+ """Get concrete, actionable remediation steps for a control.
804
+
805
+ For NIST 800-53 IDs: uses self-heal REMEDIATION_ACTIONS directly.
806
+ For cross-framework IDs (CMMC, 800-171, SBD): uses keyword matching
807
+ on control name for broader, more accurate remediation guidance.
808
+ """
809
+ import re
810
+ from tools.audit_engine.self_heal import REMEDIATION_ACTIONS, _extract_control_family
811
+
812
+ # For direct NIST 800-53 IDs, use self-heal actions (precise match)
813
+ is_nist = bool(re.match(r"^[A-Z]{2}-\d+", control_id))
814
+ if is_nist:
815
+ family = _extract_control_family(control_id)
816
+ if family and family in REMEDIATION_ACTIONS:
817
+ return REMEDIATION_ACTIONS[family].get("description", "")
818
+
819
+ # For cross-framework IDs, match by control name keywords first
820
+ name_lower = (control_name or "").lower()
821
+ id_lower = control_id.lower()
822
+ search_text = f"{name_lower} {id_lower}"
823
+
824
+ best_match = None
825
+ best_score = 0
826
+ for _key, entry in CONCRETE_ACTIONS.items():
827
+ score = sum(1 for kw in entry["keywords"] if kw in search_text)
828
+ if score > best_score:
829
+ best_score = score
830
+ best_match = entry
831
+
832
+ if best_match and best_score > 0:
833
+ return best_match["action"]
834
+
835
+ # Fallback: map by NIST family prefix from control ID
836
+ family_to_domain = {
837
+ "AC": "access_control", "AU": "audit_logging", "AT": "training",
838
+ "CM": "baseline_config", "IA": "authentication", "IR": "incident_response",
839
+ "MA": "maintenance", "MP": "media_protection", "PE": "physical",
840
+ "PS": "personnel", "RA": "risk_assessment", "SC": "boundary_protection",
841
+ "SI": "flaw_remediation", "SR": "supply_chain", "CP": "recovery",
842
+ "RE": "recovery",
843
+ }
844
+ family = _extract_control_family(control_id)
845
+ if family:
846
+ prefix = family.split("-")[0] if "-" in family else family
847
+ domain = family_to_domain.get(prefix)
848
+ if domain and domain in CONCRETE_ACTIONS:
849
+ return CONCRETE_ACTIONS[domain]["action"]
850
+
851
+ return ("Review control requirements and implement: (1) document current state, "
852
+ "(2) identify gaps against requirement, (3) implement technical/procedural controls, "
853
+ "(4) collect evidence of implementation, (5) verify with audit rescan")
854
+
855
+
856
+ if __name__ == "__main__":
857
+ import argparse
858
+
859
+ parser = argparse.ArgumentParser(description="Audit AI Advisor")
860
+ parser.add_argument("--audit-file", type=str, help="Audit result JSON file")
861
+ parser.add_argument("--regime", type=str, help="Filter to specific regime")
862
+ parser.add_argument("--max", type=int, default=20, help="Max recommendations")
863
+ parser.add_argument("--use-llm", action="store_true", help="Use LLM for enhanced advice")
864
+ parser.add_argument("--json", action="store_true", help="JSON output")
865
+ args = parser.parse_args()
866
+
867
+ if not args.audit_file:
868
+ # Run a fresh audit
869
+ from tools.audit_engine.engine import run_audit
870
+ audit_result = run_audit(target_path=".", store_results=False)
871
+ else:
872
+ with open(args.audit_file, "r") as f:
873
+ audit_result = json.load(f)
874
+
875
+ result = generate_recommendations(
876
+ audit_result,
877
+ regime_id=args.regime,
878
+ max_recommendations=args.max,
879
+ use_llm=args.use_llm,
880
+ )
881
+
882
+ if args.json:
883
+ print(json.dumps(result, indent=2))
884
+ else:
885
+ print(f"\n{'='*70}")
886
+ print(f" AI ADVISOR — COMPLIANCE IMPROVEMENT RECOMMENDATIONS")
887
+ print(f"{'='*70}")
888
+ print(f" Total: {result['total_recommendations']} recommendations")
889
+ print(f" Est. improvement (top 5): +{result['estimated_improvement_top5']}%\n")
890
+
891
+ print(f" TOP 5 QUICK WINS (best ROI):")
892
+ for rec in result.get("quick_wins", [])[:5]:
893
+ print(f" {rec['rank']}. [{rec['severity'].upper()}] {rec['title']}")
894
+ print(f" Control: {rec['control_id']} | Effort: {rec['effort_label']}")
895
+ print(f" Impact: {rec['impact_score']} | ROI: {rec['roi_score']}")
896
+ print()
897
+
898
+ print(f" TOP 5 BY IMPACT:")
899
+ for rec in result.get("by_impact", [])[:5]:
900
+ print(f" {rec['rank']}. [{rec['severity'].upper()}] {rec['title']}")
901
+ print(f" Control: {rec['control_id']} | Effort: {rec['effort_label']}")
902
+ print()
903
+
904
+ print(f"{'='*70}")
905
+ print(f" CUI // SP-CTI")
906
+ print(f"{'='*70}")