icdev 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- icdev/__init__.py +18 -0
- icdev/_paths.py +85 -0
- icdev/_version.py +3 -0
- icdev/data/__init__.py +1 -0
- icdev/data/args/__init__.py +1 -0
- icdev/data/args/agent_authority.yaml +61 -0
- icdev/data/args/agent_config.yaml +355 -0
- icdev/data/args/agentic_fitness.yaml +31 -0
- icdev/data/args/ai_governance_config.yaml +137 -0
- icdev/data/args/atlas_critique_config.yaml +66 -0
- icdev/data/args/bedrock_models.yaml +63 -0
- icdev/data/args/cicd_config.yaml +82 -0
- icdev/data/args/classification_config.yaml +232 -0
- icdev/data/args/cli_config.yaml +154 -0
- icdev/data/args/cloud_config.yaml +63 -0
- icdev/data/args/code_pattern_config.yaml +151 -0
- icdev/data/args/code_quality_config.yaml +47 -0
- icdev/data/args/companion_registry.yaml +202 -0
- icdev/data/args/context_config.yaml +82 -0
- icdev/data/args/csp_monitor_config.yaml +268 -0
- icdev/data/args/cui_markings.yaml +35 -0
- icdev/data/args/db_config.yaml +40 -0
- icdev/data/args/deployment_profiles.yaml +248 -0
- icdev/data/args/dev_profile_config.yaml +144 -0
- icdev/data/args/devsecops_config.yaml +286 -0
- icdev/data/args/endpoint_security_config.yaml +137 -0
- icdev/data/args/extension_config.yaml +79 -0
- icdev/data/args/file_access_tiers.yaml +88 -0
- icdev/data/args/framework_registry.yaml +415 -0
- icdev/data/args/innovation_config.yaml +431 -0
- icdev/data/args/installation_manifest.yaml +1087 -0
- icdev/data/args/llm_config.yaml +495 -0
- icdev/data/args/maintenance_config.yaml +55 -0
- icdev/data/args/memory_config.yaml +83 -0
- icdev/data/args/monitoring_config.yaml +127 -0
- icdev/data/args/mosa_config.yaml +190 -0
- icdev/data/args/nlq_config.yaml +35 -0
- icdev/data/args/observability_config.yaml +39 -0
- icdev/data/args/observability_tracing_config.yaml +170 -0
- icdev/data/args/oscal_tools_config.yaml +43 -0
- icdev/data/args/owasp_agentic_config.yaml +171 -0
- icdev/data/args/phase_registry.yaml +618 -0
- icdev/data/args/project_defaults.yaml +235 -0
- icdev/data/args/prompt_chains.yaml +163 -0
- icdev/data/args/resilience_config.yaml +50 -0
- icdev/data/args/ricoas_config.yaml +191 -0
- icdev/data/args/role_personas.yaml +362 -0
- icdev/data/args/scaling_config.yaml +176 -0
- icdev/data/args/security_gates.yaml +685 -0
- icdev/data/args/skill_injection_config.yaml +322 -0
- icdev/data/args/spec_config.yaml +53 -0
- icdev/data/args/supply_chain_config.yaml +76 -0
- icdev/data/args/translation_config.yaml +228 -0
- icdev/data/args/workflow_templates/ato_acceleration.yaml +54 -0
- icdev/data/args/workflow_templates/build_deploy.yaml +63 -0
- icdev/data/args/workflow_templates/full_compliance.yaml +43 -0
- icdev/data/args/workflow_templates/security_hardening.yaml +55 -0
- icdev/data/args/worktree_config.yaml +34 -0
- icdev/data/args/zta_config.yaml +247 -0
- icdev/data/context/__init__.py +1 -0
- icdev/data/context/agent/__init__.py +1 -0
- icdev/data/context/agent/response_schemas/__init__.py +1 -0
- icdev/data/context/agent/response_schemas/debate_position.json +46 -0
- icdev/data/context/agent/response_schemas/fitness_scorecard.json +74 -0
- icdev/data/context/agent/response_schemas/review_decision.json +39 -0
- icdev/data/context/agent/response_schemas/task_decomposition.json +82 -0
- icdev/data/context/agent/response_schemas/veto_decision.json +40 -0
- icdev/data/context/agentic/__init__.py +1 -0
- icdev/data/context/agentic/architecture_patterns.md +269 -0
- icdev/data/context/agentic/capability_registry.yaml +202 -0
- icdev/data/context/agentic/csp_mcp_registry.yaml +280 -0
- icdev/data/context/agentic/fitness_rubric.md +56 -0
- icdev/data/context/agentic/governance_baseline.md +205 -0
- icdev/data/context/ci/__init__.py +1 -0
- icdev/data/context/ci/worktree_templates.json +44 -0
- icdev/data/context/cloud/__init__.py +1 -0
- icdev/data/context/cloud/csp_service_registry.json +739 -0
- icdev/data/context/compliance/__init__.py +1 -0
- icdev/data/context/compliance/atlas_mitigations.json +293 -0
- icdev/data/context/compliance/atlas_techniques.json +833 -0
- icdev/data/context/compliance/cisa_sbd_requirements.json +432 -0
- icdev/data/context/compliance/cjis_security_policy.json +522 -0
- icdev/data/context/compliance/cmmc_practices.json +2494 -0
- icdev/data/context/compliance/cmmc_report_template.md +142 -0
- icdev/data/context/compliance/cnssi_1253_overlay.json +109 -0
- icdev/data/context/compliance/control_crosswalk.json +1914 -0
- icdev/data/context/compliance/control_families/__init__.py +1 -0
- icdev/data/context/compliance/csp_certifications.json +251 -0
- icdev/data/context/compliance/cssp_report_template.md +193 -0
- icdev/data/context/compliance/cui_templates/__init__.py +1 -0
- icdev/data/context/compliance/cui_templates/banner_block.txt +4 -0
- icdev/data/context/compliance/cui_templates/code_header.txt +8 -0
- icdev/data/context/compliance/cui_templates/document_template.md +35 -0
- icdev/data/context/compliance/data_type_framework_map.json +321 -0
- icdev/data/context/compliance/data_type_registry.json +147 -0
- icdev/data/context/compliance/dod_cssp_8530.json +463 -0
- icdev/data/context/compliance/eu_ai_act_annex_iii.json +108 -0
- icdev/data/context/compliance/export_templates/__init__.py +1 -0
- icdev/data/context/compliance/export_templates/emass_controls.csv.j2 +4 -0
- icdev/data/context/compliance/export_templates/evidence_package.md.j2 +39 -0
- icdev/data/context/compliance/export_templates/executive_summary.md.j2 +55 -0
- icdev/data/context/compliance/export_templates/poam_tracking.csv.j2 +4 -0
- icdev/data/context/compliance/fedramp_20x_ksi_schemas.json +133 -0
- icdev/data/context/compliance/fedramp_high_baseline.json +4370 -0
- icdev/data/context/compliance/fedramp_moderate_baseline.json +2183 -0
- icdev/data/context/compliance/fedramp_report_template.md +181 -0
- icdev/data/context/compliance/fips_200_areas.json +362 -0
- icdev/data/context/compliance/gao_ai_accountability.json +262 -0
- icdev/data/context/compliance/hipaa_security_rule.json +720 -0
- icdev/data/context/compliance/hitrust_csf_v11.json +930 -0
- icdev/data/context/compliance/impact_level_profiles.json +251 -0
- icdev/data/context/compliance/incident_response_template.md +1110 -0
- icdev/data/context/compliance/iso27001_2022_controls.json +750 -0
- icdev/data/context/compliance/iso27001_nist_bridge.json +382 -0
- icdev/data/context/compliance/iso42001_controls.json +254 -0
- icdev/data/context/compliance/ivv_checklist_template.md +80 -0
- icdev/data/context/compliance/ivv_report_template.md +116 -0
- icdev/data/context/compliance/ivv_requirements.json +372 -0
- icdev/data/context/compliance/mosa_crosswalk.json +327 -0
- icdev/data/context/compliance/mosa_framework.json +250 -0
- icdev/data/context/compliance/narrative_templates/AC.md.j2 +101 -0
- icdev/data/context/compliance/narrative_templates/AU.md.j2 +106 -0
- icdev/data/context/compliance/narrative_templates/IA.md.j2 +104 -0
- icdev/data/context/compliance/narrative_templates/SC.md.j2 +102 -0
- icdev/data/context/compliance/narrative_templates/SI.md.j2 +111 -0
- icdev/data/context/compliance/narrative_templates/__init__.py +1 -0
- icdev/data/context/compliance/narrative_templates/default.md.j2 +50 -0
- icdev/data/context/compliance/narrative_templates/executive_summary.j2 +27 -0
- icdev/data/context/compliance/narrative_templates/poam_milestone.j2 +19 -0
- icdev/data/context/compliance/narrative_templates/ssp_section.j2 +11 -0
- icdev/data/context/compliance/nist_800_171_controls.json +1552 -0
- icdev/data/context/compliance/nist_800_207_crosswalk.json +399 -0
- icdev/data/context/compliance/nist_800_207_zta.json +258 -0
- icdev/data/context/compliance/nist_800_53.json +324 -0
- icdev/data/context/compliance/nist_ai_600_1_genai.json +326 -0
- icdev/data/context/compliance/nist_ai_rmf.json +206 -0
- icdev/data/context/compliance/nist_sp_800_60_types.json +1667 -0
- icdev/data/context/compliance/omb_m25_21_high_impact_ai.json +248 -0
- icdev/data/context/compliance/omb_m26_04_unbiased_ai.json +262 -0
- icdev/data/context/compliance/owasp_agentic_asi.json +133 -0
- icdev/data/context/compliance/owasp_agentic_threats.json +285 -0
- icdev/data/context/compliance/owasp_llm_top10.json +274 -0
- icdev/data/context/compliance/pci_dss_v4.json +510 -0
- icdev/data/context/compliance/poam_template.md +117 -0
- icdev/data/context/compliance/safeai_controls.json +512 -0
- icdev/data/context/compliance/sbd_report_template.md +77 -0
- icdev/data/context/compliance/siem_config_templates/__init__.py +1 -0
- icdev/data/context/compliance/siem_config_templates/filebeat.yml +213 -0
- icdev/data/context/compliance/siem_config_templates/log_sources.json +208 -0
- icdev/data/context/compliance/soc2_trust_criteria.json +661 -0
- icdev/data/context/compliance/ssp_template.md +432 -0
- icdev/data/context/compliance/stig_templates/__init__.py +1 -0
- icdev/data/context/compliance/stig_templates/webapp_stig.json +139 -0
- icdev/data/context/compliance/xai_requirements.json +108 -0
- icdev/data/context/dashboard/__init__.py +1 -0
- icdev/data/context/dashboard/nlq_examples.json +50 -0
- icdev/data/context/dashboard/schema_descriptions.json +23 -0
- icdev/data/context/integration/__init__.py +1 -0
- icdev/data/context/integration/approval_workflows.json +32 -0
- icdev/data/context/integration/gitlab_field_mappings.json +33 -0
- icdev/data/context/integration/jira_field_mappings.json +32 -0
- icdev/data/context/integration/reqif_export_schema.json +23 -0
- icdev/data/context/integration/servicenow_field_mappings.json +22 -0
- icdev/data/context/languages/__init__.py +1 -0
- icdev/data/context/languages/framework_patterns.json +205 -0
- icdev/data/context/languages/language_registry.json +279 -0
- icdev/data/context/llm/__init__.py +1 -0
- icdev/data/context/llm/example_provider.py +86 -0
- icdev/data/context/mbse/__init__.py +1 -0
- icdev/data/context/mbse/des_report_template.md +162 -0
- icdev/data/context/mbse/des_requirements.json +411 -0
- icdev/data/context/mbse/digital_thread_patterns.json +403 -0
- icdev/data/context/mbse/reqif_schema.json +280 -0
- icdev/data/context/mbse/sysml_element_types.json +432 -0
- icdev/data/context/modernization/__init__.py +1 -0
- icdev/data/context/modernization/db_type_mappings.json +148 -0
- icdev/data/context/modernization/decomposition_patterns.json +284 -0
- icdev/data/context/modernization/framework_migration_patterns.json +359 -0
- icdev/data/context/modernization/migration_report_template.md +168 -0
- icdev/data/context/modernization/seven_rs_catalog.json +369 -0
- icdev/data/context/modernization/version_upgrade_rules.json +279 -0
- icdev/data/context/oscal/NIST_SP-800-53_rev5_catalog.json +254987 -0
- icdev/data/context/oscal/README.md +43 -0
- icdev/data/context/patterns/__init__.py +1 -0
- icdev/data/context/profiles/__init__.py +1 -0
- icdev/data/context/profiles/dod_baseline_v1.yaml +145 -0
- icdev/data/context/profiles/fedramp_baseline_v1.yaml +143 -0
- icdev/data/context/profiles/financial_baseline_v1.yaml +142 -0
- icdev/data/context/profiles/healthcare_baseline_v1.yaml +135 -0
- icdev/data/context/profiles/law_enforcement_v1.yaml +129 -0
- icdev/data/context/profiles/startup_v1.yaml +134 -0
- icdev/data/context/requirements/__init__.py +1 -0
- icdev/data/context/requirements/ambiguity_patterns.json +97 -0
- icdev/data/context/requirements/boundary_impact_rules.json +123 -0
- icdev/data/context/requirements/default_constitutions.json +67 -0
- icdev/data/context/requirements/document_extraction_rules.json +58 -0
- icdev/data/context/requirements/gap_patterns.json +108 -0
- icdev/data/context/requirements/readiness_rubric.json +78 -0
- icdev/data/context/requirements/red_alternative_patterns.json +210 -0
- icdev/data/context/requirements/safe_templates.json +72 -0
- icdev/data/context/requirements/spec_quality_checklist.json +122 -0
- icdev/data/context/simulation/__init__.py +1 -0
- icdev/data/context/simulation/architecture_patterns.json +36 -0
- icdev/data/context/simulation/coa_templates.json +38 -0
- icdev/data/context/simulation/cost_models.json +23 -0
- icdev/data/context/simulation/risk_categories.json +46 -0
- icdev/data/context/supply_chain/__init__.py +1 -0
- icdev/data/context/supply_chain/isa_templates.json +129 -0
- icdev/data/context/supply_chain/nist_800_161_controls.json +247 -0
- icdev/data/context/supply_chain/scrm_risk_matrix.json +147 -0
- icdev/data/context/templates/__init__.py +1 -0
- icdev/data/context/templates/ansible/__init__.py +1 -0
- icdev/data/context/templates/ansible/playbooks/__init__.py +1 -0
- icdev/data/context/templates/ansible/roles/__init__.py +1 -0
- icdev/data/context/templates/gitlab_ci/__init__.py +1 -0
- icdev/data/context/templates/grafana/__init__.py +1 -0
- icdev/data/context/templates/kubernetes/__init__.py +1 -0
- icdev/data/context/templates/project/__init__.py +1 -0
- icdev/data/context/templates/project/api/__init__.py +1 -0
- icdev/data/context/templates/project/cli/__init__.py +1 -0
- icdev/data/context/templates/project/data_pipeline/__init__.py +1 -0
- icdev/data/context/templates/project/iac/__init__.py +1 -0
- icdev/data/context/templates/project/javascript_frontend/__init__.py +1 -0
- icdev/data/context/templates/project/javascript_frontend/src/__init__.py +1 -0
- icdev/data/context/templates/project/javascript_frontend/tests/__init__.py +1 -0
- icdev/data/context/templates/project/microservice/__init__.py +1 -0
- icdev/data/context/templates/project/python_backend/__init__.py +1 -0
- icdev/data/context/templates/project/python_backend/src/__init__.py +1 -0
- icdev/data/context/templates/project/python_backend/tests/__init__.py +1 -0
- icdev/data/context/templates/project/python_backend/tests/features/__init__.py +1 -0
- icdev/data/context/templates/project/python_backend/tests/steps/__init__.py +1 -0
- icdev/data/context/templates/terraform/__init__.py +1 -0
- icdev/data/context/templates/terraform/govcloud_base/__init__.py +1 -0
- icdev/data/context/templates/terraform/modules/__init__.py +1 -0
- icdev/data/context/tone/__init__.py +1 -0
- icdev/data/context/translation/dependency_mappings.json +186 -0
- icdev/data/context/translation/type_mappings.json +149 -0
- icdev/data/docs/README.md +187 -0
- icdev/data/docs/__init__.py +1 -0
- icdev/data/docs/admin/gateway-guide.md +338 -0
- icdev/data/docs/admin/marketplace-guide.md +396 -0
- icdev/data/docs/admin/monitoring-guide.md +509 -0
- icdev/data/docs/architecture/compliance-framework.md +764 -0
- icdev/data/docs/architecture/database-schema.md +689 -0
- icdev/data/docs/architecture/gotcha-framework.md +518 -0
- icdev/data/docs/architecture/multi-agent-system.md +603 -0
- icdev/data/docs/dx/README.md +106 -0
- icdev/data/docs/dx/__init__.py +1 -0
- icdev/data/docs/dx/ci-cd-integration.md +378 -0
- icdev/data/docs/dx/claude-code-guide.md +213 -0
- icdev/data/docs/dx/companion-guide.md +232 -0
- icdev/data/docs/dx/dev-profiles.md +309 -0
- icdev/data/docs/dx/icdev-yaml-spec.md +219 -0
- icdev/data/docs/dx/integration-tiers.md +279 -0
- icdev/data/docs/dx/llm-routing-guide.md +456 -0
- icdev/data/docs/dx/quickstart.md +192 -0
- icdev/data/docs/dx/sdk-reference.md +356 -0
- icdev/data/docs/dx/unified-mcp-setup.md +525 -0
- icdev/data/docs/features/__init__.py +1 -0
- icdev/data/docs/features/phase-01-gotcha-framework.md +249 -0
- icdev/data/docs/features/phase-02-atlas-build-workflow.md +223 -0
- icdev/data/docs/features/phase-03-tdd-bdd-testing.md +261 -0
- icdev/data/docs/features/phase-04-nist-compliance.md +255 -0
- icdev/data/docs/features/phase-05-security-scanning.md +229 -0
- icdev/data/docs/features/phase-06-infrastructure-deployment.md +288 -0
- icdev/data/docs/features/phase-07-code-review-gates.md +276 -0
- icdev/data/docs/features/phase-08-self-healing.md +223 -0
- icdev/data/docs/features/phase-09-monitoring-observability.md +230 -0
- icdev/data/docs/features/phase-10-dashboard-web-ui.md +218 -0
- icdev/data/docs/features/phase-11-multi-agent-architecture.md +272 -0
- icdev/data/docs/features/phase-12-integration-testing.md +228 -0
- icdev/data/docs/features/phase-13-cicd-integration.md +257 -0
- icdev/data/docs/features/phase-14-secure-by-design-ivv.md +240 -0
- icdev/data/docs/features/phase-15-maintenance-audit.md +192 -0
- icdev/data/docs/features/phase-16-ato-acceleration.md +228 -0
- icdev/data/docs/features/phase-17-multi-framework-compliance.md +223 -0
- icdev/data/docs/features/phase-18-mbse-integration.md +242 -0
- icdev/data/docs/features/phase-19-agentic-generation.md +202 -0
- icdev/data/docs/features/phase-20-fips-security-categorization.md +198 -0
- icdev/data/docs/features/phase-21-saas-multi-tenancy.md +273 -0
- icdev/data/docs/features/phase-22-federated-gotcha-marketplace.md +242 -0
- icdev/data/docs/features/phase-23-universal-compliance-platform.md +238 -0
- icdev/data/docs/features/phase-24-devsecops-pipeline-security.md +198 -0
- icdev/data/docs/features/phase-25-zero-trust-architecture.md +220 -0
- icdev/data/docs/features/phase-26-dod-mosa.md +205 -0
- icdev/data/docs/features/phase-27-cli-capabilities.md +222 -0
- icdev/data/docs/features/phase-28-remote-command-gateway.md +235 -0
- icdev/data/docs/features/phase-29-proactive-monitoring.md +212 -0
- icdev/data/docs/features/phase-30-dashboard-auth.md +215 -0
- icdev/data/docs/features/phase-31-dashboard-ux-low-impact.md +188 -0
- icdev/data/docs/features/phase-32-dashboard-ux-medium-impact.md +223 -0
- icdev/data/docs/features/phase-33-modular-installation.md +218 -0
- icdev/data/docs/features/phase-34-dev-profiles.md +239 -0
- icdev/data/docs/features/phase-35-innovation-engine.md +257 -0
- icdev/data/docs/features/phase-36-evolutionary-intelligence.md +351 -0
- icdev/data/docs/features/phase-37-mitre-atlas-integration.md +485 -0
- icdev/data/docs/features/phase-38-cloud-agnostic-architecture.md +1033 -0
- icdev/data/docs/features/phase-39-observability-operations.md +178 -0
- icdev/data/docs/features/phase-40-nlq-compliance-queries.md +176 -0
- icdev/data/docs/features/phase-41-parallel-cicd.md +169 -0
- icdev/data/docs/features/phase-42-framework-planning.md +177 -0
- icdev/data/docs/features/phase-43-cross-language-translation.md +225 -0
- icdev/data/docs/features/phase-44-innovation-adaptation.md +227 -0
- icdev/data/docs/features/phase-45-owasp-agentic-security.md +239 -0
- icdev/data/docs/features/phase-46-observability-traceability-xai.md +240 -0
- icdev/data/docs/features/phase-47-unified-mcp-gateway.md +257 -0
- icdev/data/docs/features/phase-48-ai-transparency.md +203 -0
- icdev/data/docs/features/phase-49-ai-accountability.md +243 -0
- icdev/data/docs/features/phase-50-ai-governance-intake-chat.md +195 -0
- icdev/data/docs/features/phase-51-unified-chat-dashboard.md +240 -0
- icdev/data/docs/features/phase-52-code-intelligence.md +244 -0
- icdev/data/docs/features/phase-53-fedramp-20x-owasp-asi.md +359 -0
- icdev/data/docs/features/phase-54-slsa-swft-orchestration.md +379 -0
- icdev/data/docs/features/phase-55-a2a-v03-mcp-oauth.md +322 -0
- icdev/data/docs/features/phase-56-evidence-lineage.md +352 -0
- icdev/data/docs/features/phase-57-eu-ai-act-iron-bank.md +319 -0
- icdev/data/docs/features/phase-58-creative-engine.md +370 -0
- icdev/data/docs/features/phase-59-govcon-intelligence.md +535 -0
- icdev/data/docs/features/phase-60-cpmp.md +528 -0
- icdev/data/docs/features/phase-61-orchestration-improvements.md +534 -0
- icdev/data/docs/operations/dashboard-guide.md +354 -0
- icdev/data/docs/operations/deployment-guide.md +556 -0
- icdev/data/docs/operations/saas-admin-guide.md +439 -0
- icdev/data/docs/operations/security-operations-guide.md +733 -0
- icdev/data/docs/runbooks/backup-restore.md +412 -0
- icdev/data/docs/runbooks/troubleshooting.md +499 -0
- icdev/data/features/__init__.py +1 -0
- icdev/data/features/cicd_integration.feature +41 -0
- icdev/data/features/compliance_gates.feature +46 -0
- icdev/data/features/dashboard.feature +72 -0
- icdev/data/features/environment.py +25 -0
- icdev/data/features/project_management.feature +32 -0
- icdev/data/features/requirements_intake.feature +42 -0
- icdev/data/features/saas_platform.feature +53 -0
- icdev/data/features/security_scanning.feature +36 -0
- icdev/data/features/steps/__init__.py +1 -0
- icdev/data/features/steps/cicd_steps.py +465 -0
- icdev/data/features/steps/compliance_steps.py +308 -0
- icdev/data/features/steps/dashboard_steps.py +88 -0
- icdev/data/features/steps/project_steps.py +126 -0
- icdev/data/features/steps/requirements_intake_steps.py +689 -0
- icdev/data/features/steps/saas_platform_steps.py +572 -0
- icdev/data/features/steps/security_steps.py +236 -0
- icdev/data/features/steps/testing_steps.py +226 -0
- icdev/data/features/testing_pipeline.feature +42 -0
- icdev/data/goals/__init__.py +1 -0
- icdev/data/goals/agent_management.md +144 -0
- icdev/data/goals/agentic_generation.md +345 -0
- icdev/data/goals/agentic_threat_model.md +309 -0
- icdev/data/goals/ai_accountability.md +90 -0
- icdev/data/goals/ai_governance_intake.md +132 -0
- icdev/data/goals/ai_transparency.md +76 -0
- icdev/data/goals/atlas_integration.md +405 -0
- icdev/data/goals/ato_acceleration.md +139 -0
- icdev/data/goals/boundary_supply_chain.md +206 -0
- icdev/data/goals/build_app.md +544 -0
- icdev/data/goals/cicd_integration.md +86 -0
- icdev/data/goals/claude_dir_maintenance.md +77 -0
- icdev/data/goals/cli_capabilities.md +340 -0
- icdev/data/goals/cloud_agnostic.md +312 -0
- icdev/data/goals/code_intelligence.md +197 -0
- icdev/data/goals/code_review.md +94 -0
- icdev/data/goals/compliance_workflow.md +858 -0
- icdev/data/goals/continuous_harmonization.md +140 -0
- icdev/data/goals/cross_language_translation.md +171 -0
- icdev/data/goals/dashboard.md +142 -0
- icdev/data/goals/deploy_workflow.md +390 -0
- icdev/data/goals/devsecops_workflow.md +408 -0
- icdev/data/goals/evolutionary_intelligence.md +305 -0
- icdev/data/goals/external_integration.md +113 -0
- icdev/data/goals/framework_planning.md +63 -0
- icdev/data/goals/init_project.md +235 -0
- icdev/data/goals/innovation_engine.md +199 -0
- icdev/data/goals/integration_testing.md +189 -0
- icdev/data/goals/maintenance_audit.md +196 -0
- icdev/data/goals/manifest.md +56 -0
- icdev/data/goals/mbse_integration.md +504 -0
- icdev/data/goals/modernization_workflow.md +618 -0
- icdev/data/goals/monitoring.md +126 -0
- icdev/data/goals/mosa_workflow.md +463 -0
- icdev/data/goals/multi_agent_orchestration.md +68 -0
- icdev/data/goals/nlq_compliance.md +63 -0
- icdev/data/goals/observability.md +64 -0
- icdev/data/goals/observability_traceability_xai.md +154 -0
- icdev/data/goals/owasp_agentic_security.md +395 -0
- icdev/data/goals/parallel_cicd.md +61 -0
- icdev/data/goals/requirements_intake.md +213 -0
- icdev/data/goals/sbd_ivv_workflow.md +195 -0
- icdev/data/goals/security_categorization.md +133 -0
- icdev/data/goals/security_scan.md +381 -0
- icdev/data/goals/self_healing.md +120 -0
- icdev/data/goals/simulation_engine.md +111 -0
- icdev/data/goals/tdd_workflow.md +403 -0
- icdev/data/goals/zero_trust_architecture.md +403 -0
- icdev/data/hardprompts/__init__.py +1 -0
- icdev/data/hardprompts/agent/__init__.py +1 -0
- icdev/data/hardprompts/agent/agentic_architect.md +100 -0
- icdev/data/hardprompts/agent/debate_prompt.md +32 -0
- icdev/data/hardprompts/agent/fitness_evaluation.md +48 -0
- icdev/data/hardprompts/agent/governance_review.md +214 -0
- icdev/data/hardprompts/agent/reviewer_prompt.md +34 -0
- icdev/data/hardprompts/agent/skill_design.md +172 -0
- icdev/data/hardprompts/agent/task_decomposition.md +275 -0
- icdev/data/hardprompts/agent/veto_check_prompt.md +33 -0
- icdev/data/hardprompts/architect/__init__.py +1 -0
- icdev/data/hardprompts/architect/api_design.md +283 -0
- icdev/data/hardprompts/architect/data_model.md +277 -0
- icdev/data/hardprompts/architect/system_design.md +180 -0
- icdev/data/hardprompts/builder/__init__.py +1 -0
- icdev/data/hardprompts/builder/code_generation.md +59 -0
- icdev/data/hardprompts/builder/refactor.md +58 -0
- icdev/data/hardprompts/builder/scaffold_project.md +69 -0
- icdev/data/hardprompts/builder/test_generation.md +87 -0
- icdev/data/hardprompts/ci/__init__.py +1 -0
- icdev/data/hardprompts/ci/worktree_setup.md +35 -0
- icdev/data/hardprompts/compliance/__init__.py +1 -0
- icdev/data/hardprompts/compliance/cmmc_assessment.md +63 -0
- icdev/data/hardprompts/compliance/cssp_assessment.md +75 -0
- icdev/data/hardprompts/compliance/cui_marking.md +86 -0
- icdev/data/hardprompts/compliance/fedramp_assessment.md +55 -0
- icdev/data/hardprompts/compliance/ivv_assessment.md +96 -0
- icdev/data/hardprompts/compliance/poam_generation.md +57 -0
- icdev/data/hardprompts/compliance/sbd_assessment.md +101 -0
- icdev/data/hardprompts/compliance/security_categorization.md +74 -0
- icdev/data/hardprompts/compliance/ssp_generation.md +56 -0
- icdev/data/hardprompts/compliance/stig_evaluation.md +63 -0
- icdev/data/hardprompts/dashboard/__init__.py +1 -0
- icdev/data/hardprompts/dashboard/nlq_system_prompt.md +26 -0
- icdev/data/hardprompts/infra/__init__.py +1 -0
- icdev/data/hardprompts/infra/k8s_manifests.md +118 -0
- icdev/data/hardprompts/infra/pipeline_generation.md +160 -0
- icdev/data/hardprompts/infra/terraform_generation.md +92 -0
- icdev/data/hardprompts/integration/__init__.py +1 -0
- icdev/data/hardprompts/integration/approval_review.md +17 -0
- icdev/data/hardprompts/integration/jira_mapping.md +25 -0
- icdev/data/hardprompts/integration/servicenow_mapping.md +14 -0
- icdev/data/hardprompts/knowledge/__init__.py +1 -0
- icdev/data/hardprompts/knowledge/pattern_detection.md +73 -0
- icdev/data/hardprompts/knowledge/recommendation_engine.md +90 -0
- icdev/data/hardprompts/knowledge/root_cause_analysis.md +91 -0
- icdev/data/hardprompts/maintenance/__init__.py +1 -0
- icdev/data/hardprompts/maintenance/maintenance_assessment.md +82 -0
- icdev/data/hardprompts/mbse/__init__.py +1 -0
- icdev/data/hardprompts/mbse/digital_thread.md +67 -0
- icdev/data/hardprompts/mbse/model_import.md +62 -0
- icdev/data/hardprompts/mbse/model_to_code.md +65 -0
- icdev/data/hardprompts/modernization/__init__.py +1 -0
- icdev/data/hardprompts/modernization/legacy_analysis.md +93 -0
- icdev/data/hardprompts/modernization/migration_planning.md +150 -0
- icdev/data/hardprompts/modernization/seven_r_assessment.md +107 -0
- icdev/data/hardprompts/requirements/__init__.py +1 -0
- icdev/data/hardprompts/requirements/bdd_generation.md +35 -0
- icdev/data/hardprompts/requirements/clarification_prioritization.md +29 -0
- icdev/data/hardprompts/requirements/decomposition.md +60 -0
- icdev/data/hardprompts/requirements/document_extraction.md +45 -0
- icdev/data/hardprompts/requirements/gap_detection.md +70 -0
- icdev/data/hardprompts/requirements/intake_conversation.md +101 -0
- icdev/data/hardprompts/requirements/readiness_assessment.md +39 -0
- icdev/data/hardprompts/requirements/spec_quality.md +33 -0
- icdev/data/hardprompts/requirements/traceability_analysis.md +23 -0
- icdev/data/hardprompts/security/__init__.py +1 -0
- icdev/data/hardprompts/security/endpoint_security.md +78 -0
- icdev/data/hardprompts/security/threat_model.md +70 -0
- icdev/data/hardprompts/security/vulnerability_assessment.md +81 -0
- icdev/data/hardprompts/simulation/__init__.py +1 -0
- icdev/data/hardprompts/simulation/architecture_impact.md +27 -0
- icdev/data/hardprompts/simulation/coa_alternative.md +27 -0
- icdev/data/hardprompts/simulation/coa_generation.md +25 -0
- icdev/data/hardprompts/simulation/compliance_impact.md +28 -0
- icdev/data/hardprompts/simulation/cost_estimation.md +33 -0
- icdev/data/hardprompts/simulation/risk_assessment.md +28 -0
- icdev/data/hardprompts/translation/code_translation.md +68 -0
- icdev/data/hardprompts/translation/dependency_suggestion.md +44 -0
- icdev/data/hardprompts/translation/test_translation.md +64 -0
- icdev/data/hardprompts/translation/translation_repair.md +59 -0
- icdev/py.typed +0 -0
- icdev/tools/__init__.py +1 -0
- icdev/tools/_gen_formatter.py +12 -0
- icdev/tools/a2a/__init__.py +1 -0
- icdev/tools/a2a/agent_cards/architect.json +43 -0
- icdev/tools/a2a/agent_cards/builder.json +50 -0
- icdev/tools/a2a/agent_cards/compliance.json +57 -0
- icdev/tools/a2a/agent_cards/devsecops.json +71 -0
- icdev/tools/a2a/agent_cards/infra.json +57 -0
- icdev/tools/a2a/agent_cards/integration.json +57 -0
- icdev/tools/a2a/agent_cards/knowledge.json +43 -0
- icdev/tools/a2a/agent_cards/mbse.json +57 -0
- icdev/tools/a2a/agent_cards/modernization.json +50 -0
- icdev/tools/a2a/agent_cards/monitor.json +43 -0
- icdev/tools/a2a/agent_cards/orchestrator.json +36 -0
- icdev/tools/a2a/agent_cards/requirements_analyst.json +64 -0
- icdev/tools/a2a/agent_cards/security.json +50 -0
- icdev/tools/a2a/agent_cards/simulation.json +57 -0
- icdev/tools/a2a/agent_cards/supply_chain.json +50 -0
- icdev/tools/a2a/agent_client.py +349 -0
- icdev/tools/a2a/agent_registry.py +412 -0
- icdev/tools/a2a/agent_server.py +579 -0
- icdev/tools/a2a/task.py +200 -0
- icdev/tools/agent/__init__.py +2 -0
- icdev/tools/agent/a2a_agent_card_generator.py +285 -0
- icdev/tools/agent/a2a_discovery_server.py +250 -0
- icdev/tools/agent/agent_executor.py +529 -0
- icdev/tools/agent/agent_memory.py +557 -0
- icdev/tools/agent/agent_models.py +51 -0
- icdev/tools/agent/atlas_critique.py +908 -0
- icdev/tools/agent/authority.py +443 -0
- icdev/tools/agent/bedrock_client.py +1075 -0
- icdev/tools/agent/collaboration.py +871 -0
- icdev/tools/agent/dispatcher_mode.py +665 -0
- icdev/tools/agent/mailbox.py +575 -0
- icdev/tools/agent/prompt_chain_executor.py +1064 -0
- icdev/tools/agent/session_purpose.py +350 -0
- icdev/tools/agent/skill_router.py +638 -0
- icdev/tools/agent/skill_selector.py +486 -0
- icdev/tools/agent/team_orchestrator.py +1108 -0
- icdev/tools/agent/token_tracker.py +290 -0
- icdev/tools/analysis/__init__.py +1 -0
- icdev/tools/analysis/code_analyzer.py +780 -0
- icdev/tools/analysis/runtime_feedback.py +389 -0
- icdev/tools/audit/__init__.py +1 -0
- icdev/tools/audit/audit_logger.py +196 -0
- icdev/tools/audit/audit_query.py +157 -0
- icdev/tools/audit/decision_recorder.py +72 -0
- icdev/tools/builder/__init__.py +1 -0
- icdev/tools/builder/agentic_fitness.py +534 -0
- icdev/tools/builder/agentic_test_templates/test_a2a_callback.py +117 -0
- icdev/tools/builder/agentic_test_templates/test_a2a_lifecycle.feature +52 -0
- icdev/tools/builder/agentic_test_templates/test_agent_card.feature +37 -0
- icdev/tools/builder/agentic_test_templates/test_agent_health.py +128 -0
- icdev/tools/builder/agentic_test_templates/test_memory_system.feature +50 -0
- icdev/tools/builder/agentic_test_templates/test_skill_execution.feature +40 -0
- icdev/tools/builder/app_blueprint.py +1583 -0
- icdev/tools/builder/child_app_generator.py +2852 -0
- icdev/tools/builder/claude_md_generator.py +1734 -0
- icdev/tools/builder/code_generator.py +3703 -0
- icdev/tools/builder/db_init_generator.py +1709 -0
- icdev/tools/builder/dev_profile_manager.py +954 -0
- icdev/tools/builder/formatter.py +768 -0
- icdev/tools/builder/goal_adapter.py +592 -0
- icdev/tools/builder/gotcha_validator.py +812 -0
- icdev/tools/builder/language_support.py +441 -0
- icdev/tools/builder/linter.py +976 -0
- icdev/tools/builder/profile_detector.py +657 -0
- icdev/tools/builder/profile_md_generator.py +723 -0
- icdev/tools/builder/scaffolder.py +1590 -0
- icdev/tools/builder/scaffolder_extended.py +1771 -0
- icdev/tools/builder/test_writer.py +950 -0
- icdev/tools/ci/__init__.py +2 -0
- icdev/tools/ci/connectors/__init__.py +2 -0
- icdev/tools/ci/connectors/base_connector.py +80 -0
- icdev/tools/ci/connectors/connector_registry.py +188 -0
- icdev/tools/ci/connectors/mattermost_connector.py +159 -0
- icdev/tools/ci/connectors/slack_connector.py +197 -0
- icdev/tools/ci/core/__init__.py +2 -0
- icdev/tools/ci/core/air_gap_detector.py +115 -0
- icdev/tools/ci/core/comment_handler.py +192 -0
- icdev/tools/ci/core/conversation_manager.py +479 -0
- icdev/tools/ci/core/event_envelope.py +500 -0
- icdev/tools/ci/core/event_router.py +443 -0
- icdev/tools/ci/core/failure_parser.py +397 -0
- icdev/tools/ci/core/recovery_engine.py +527 -0
- icdev/tools/ci/modules/__init__.py +2 -0
- icdev/tools/ci/modules/agent.py +271 -0
- icdev/tools/ci/modules/git_ops.py +175 -0
- icdev/tools/ci/modules/state.py +117 -0
- icdev/tools/ci/modules/vcs.py +303 -0
- icdev/tools/ci/modules/workflow_ops.py +295 -0
- icdev/tools/ci/modules/worktree.py +340 -0
- icdev/tools/ci/pipeline_config_generator.py +558 -0
- icdev/tools/ci/triggers/__init__.py +2 -0
- icdev/tools/ci/triggers/gitlab_task_monitor.py +330 -0
- icdev/tools/ci/triggers/poll_trigger.py +237 -0
- icdev/tools/ci/triggers/webhook_server.py +356 -0
- icdev/tools/ci/workflows/__init__.py +2 -0
- icdev/tools/ci/workflows/icdev_build.py +140 -0
- icdev/tools/ci/workflows/icdev_comply.py +284 -0
- icdev/tools/ci/workflows/icdev_document.py +152 -0
- icdev/tools/ci/workflows/icdev_e2e.py +188 -0
- icdev/tools/ci/workflows/icdev_patch.py +186 -0
- icdev/tools/ci/workflows/icdev_plan.py +202 -0
- icdev/tools/ci/workflows/icdev_plan_build.py +41 -0
- icdev/tools/ci/workflows/icdev_plan_build_test.py +46 -0
- icdev/tools/ci/workflows/icdev_plan_build_test_review.py +47 -0
- icdev/tools/ci/workflows/icdev_review.py +126 -0
- icdev/tools/ci/workflows/icdev_sdlc.py +261 -0
- icdev/tools/ci/workflows/icdev_test.py +240 -0
- icdev/tools/cli/__init__.py +1 -0
- icdev/tools/cli/output_formatter.py +756 -0
- icdev/tools/cli_formatter.py +42 -0
- icdev/tools/cloud/__init__.py +11 -0
- icdev/tools/cloud/cloud_mode_manager.py +364 -0
- icdev/tools/cloud/csp_changelog.py +383 -0
- icdev/tools/cloud/csp_health_checker.py +268 -0
- icdev/tools/cloud/csp_monitor.py +951 -0
- icdev/tools/cloud/iam_provider.py +593 -0
- icdev/tools/cloud/kms_provider.py +346 -0
- icdev/tools/cloud/monitoring_provider.py +628 -0
- icdev/tools/cloud/provider_factory.py +376 -0
- icdev/tools/cloud/region_validator.py +345 -0
- icdev/tools/cloud/registry_provider.py +563 -0
- icdev/tools/cloud/secrets_provider.py +486 -0
- icdev/tools/cloud/storage_provider.py +446 -0
- icdev/tools/compat/__init__.py +21 -0
- icdev/tools/compat/cli_harmonizer.py +251 -0
- icdev/tools/compat/datetime_utils.py +18 -0
- icdev/tools/compat/db_utils.py +160 -0
- icdev/tools/compat/platform_utils.py +123 -0
- icdev/tools/compliance/__init__.py +1 -0
- icdev/tools/compliance/accountability_manager.py +397 -0
- icdev/tools/compliance/ai_accountability_audit.py +294 -0
- icdev/tools/compliance/ai_impact_assessor.py +273 -0
- icdev/tools/compliance/ai_incident_response.py +301 -0
- icdev/tools/compliance/ai_inventory_manager.py +239 -0
- icdev/tools/compliance/ai_reassessment_scheduler.py +256 -0
- icdev/tools/compliance/ai_transparency_audit.py +248 -0
- icdev/tools/compliance/atlas_assessor.py +278 -0
- icdev/tools/compliance/atlas_report_generator.py +1211 -0
- icdev/tools/compliance/base_assessor.py +597 -0
- icdev/tools/compliance/cato_monitor.py +1385 -0
- icdev/tools/compliance/cato_scheduler.py +699 -0
- icdev/tools/compliance/cjis_assessor.py +76 -0
- icdev/tools/compliance/classification_manager.py +1353 -0
- icdev/tools/compliance/cmmc_assessor.py +1491 -0
- icdev/tools/compliance/cmmc_report_generator.py +1100 -0
- icdev/tools/compliance/compliance_detector.py +463 -0
- icdev/tools/compliance/compliance_exporter.py +427 -0
- icdev/tools/compliance/compliance_status.py +825 -0
- icdev/tools/compliance/control_mapper.py +505 -0
- icdev/tools/compliance/crosswalk_engine.py +1203 -0
- icdev/tools/compliance/cssp_assessor.py +1045 -0
- icdev/tools/compliance/cssp_evidence_collector.py +729 -0
- icdev/tools/compliance/cssp_report_generator.py +1116 -0
- icdev/tools/compliance/cui_marker.py +388 -0
- icdev/tools/compliance/diagram_validator.py +600 -0
- icdev/tools/compliance/emass/__init__.py +2 -0
- icdev/tools/compliance/emass/emass_client.py +840 -0
- icdev/tools/compliance/emass/emass_export.py +777 -0
- icdev/tools/compliance/emass/emass_sync.py +826 -0
- icdev/tools/compliance/eu_ai_act_classifier.py +194 -0
- icdev/tools/compliance/evidence_collector.py +468 -0
- icdev/tools/compliance/fairness_assessor.py +316 -0
- icdev/tools/compliance/fedramp_assessor.py +1808 -0
- icdev/tools/compliance/fedramp_authorization_packager.py +137 -0
- icdev/tools/compliance/fedramp_ksi_generator.py +355 -0
- icdev/tools/compliance/fedramp_report_generator.py +1128 -0
- icdev/tools/compliance/fips199_categorizer.py +881 -0
- icdev/tools/compliance/fips200_validator.py +315 -0
- icdev/tools/compliance/gao_ai_assessor.py +231 -0
- icdev/tools/compliance/gao_evidence_builder.py +308 -0
- icdev/tools/compliance/hipaa_assessor.py +78 -0
- icdev/tools/compliance/hitrust_assessor.py +49 -0
- icdev/tools/compliance/incident_response_plan.py +718 -0
- icdev/tools/compliance/iso27001_assessor.py +92 -0
- icdev/tools/compliance/iso42001_assessor.py +114 -0
- icdev/tools/compliance/ivv_assessor.py +2327 -0
- icdev/tools/compliance/ivv_report_generator.py +1662 -0
- icdev/tools/compliance/model_card_generator.py +297 -0
- icdev/tools/compliance/mosa_assessor.py +117 -0
- icdev/tools/compliance/multi_regime_assessor.py +451 -0
- icdev/tools/compliance/narrative_generator.py +1013 -0
- icdev/tools/compliance/nist_800_207_assessor.py +191 -0
- icdev/tools/compliance/nist_ai_600_1_assessor.py +188 -0
- icdev/tools/compliance/nist_ai_rmf_assessor.py +110 -0
- icdev/tools/compliance/nist_lookup.py +245 -0
- icdev/tools/compliance/omb_m25_21_assessor.py +228 -0
- icdev/tools/compliance/omb_m26_04_assessor.py +188 -0
- icdev/tools/compliance/oscal_catalog_adapter.py +395 -0
- icdev/tools/compliance/oscal_generator.py +2170 -0
- icdev/tools/compliance/oscal_tools.py +1182 -0
- icdev/tools/compliance/owasp_agentic_assessor.py +226 -0
- icdev/tools/compliance/owasp_asi_assessor.py +200 -0
- icdev/tools/compliance/owasp_llm_assessor.py +244 -0
- icdev/tools/compliance/pci_dss_assessor.py +80 -0
- icdev/tools/compliance/pi_compliance_tracker.py +1461 -0
- icdev/tools/compliance/poam_generator.py +405 -0
- icdev/tools/compliance/resolve_marking.py +283 -0
- icdev/tools/compliance/sbd_assessor.py +2068 -0
- icdev/tools/compliance/sbd_report_generator.py +1236 -0
- icdev/tools/compliance/sbom_generator.py +1008 -0
- icdev/tools/compliance/siem_config_generator.py +674 -0
- icdev/tools/compliance/slsa_attestation_generator.py +490 -0
- icdev/tools/compliance/soc2_assessor.py +77 -0
- icdev/tools/compliance/ssp_generator.py +573 -0
- icdev/tools/compliance/stig_checker.py +727 -0
- icdev/tools/compliance/swft_evidence_bundler.py +337 -0
- icdev/tools/compliance/system_card_generator.py +309 -0
- icdev/tools/compliance/traceability_matrix.py +1281 -0
- icdev/tools/compliance/universal_classification_manager.py +1172 -0
- icdev/tools/compliance/xacta/__init__.py +2 -0
- icdev/tools/compliance/xacta/xacta_client.py +449 -0
- icdev/tools/compliance/xacta/xacta_export.py +557 -0
- icdev/tools/compliance/xacta/xacta_sync.py +333 -0
- icdev/tools/compliance/xai_assessor.py +231 -0
- icdev/tools/dashboard/__init__.py +1 -0
- icdev/tools/dashboard/api/__init__.py +1 -0
- icdev/tools/dashboard/api/_pipeline_state.py +17 -0
- icdev/tools/dashboard/api/activity.py +206 -0
- icdev/tools/dashboard/api/admin.py +176 -0
- icdev/tools/dashboard/api/agents.py +53 -0
- icdev/tools/dashboard/api/ai_accountability.py +163 -0
- icdev/tools/dashboard/api/ai_transparency.py +198 -0
- icdev/tools/dashboard/api/audit.py +58 -0
- icdev/tools/dashboard/api/batch.py +666 -0
- icdev/tools/dashboard/api/chat.py +241 -0
- icdev/tools/dashboard/api/cicd.py +219 -0
- icdev/tools/dashboard/api/code_quality.py +223 -0
- icdev/tools/dashboard/api/compliance.py +171 -0
- icdev/tools/dashboard/api/cpmp.py +915 -0
- icdev/tools/dashboard/api/diagrams.py +65 -0
- icdev/tools/dashboard/api/events.py +250 -0
- icdev/tools/dashboard/api/evidence.py +99 -0
- icdev/tools/dashboard/api/fedramp_20x.py +77 -0
- icdev/tools/dashboard/api/govcon.py +1095 -0
- icdev/tools/dashboard/api/intake.py +1171 -0
- icdev/tools/dashboard/api/lineage.py +163 -0
- icdev/tools/dashboard/api/metrics.py +155 -0
- icdev/tools/dashboard/api/nlq.py +72 -0
- icdev/tools/dashboard/api/orchestration.py +472 -0
- icdev/tools/dashboard/api/oscal.py +183 -0
- icdev/tools/dashboard/api/prod_audit.py +183 -0
- icdev/tools/dashboard/api/projects.py +191 -0
- icdev/tools/dashboard/api/proposals.py +1084 -0
- icdev/tools/dashboard/api/traces.py +363 -0
- icdev/tools/dashboard/api/usage.py +234 -0
- icdev/tools/dashboard/app.py +1986 -0
- icdev/tools/dashboard/auth.py +500 -0
- icdev/tools/dashboard/byok.py +245 -0
- icdev/tools/dashboard/chat_manager.py +675 -0
- icdev/tools/dashboard/config.py +116 -0
- icdev/tools/dashboard/diagram_definitions.py +642 -0
- icdev/tools/dashboard/nlq_processor.py +323 -0
- icdev/tools/dashboard/phase_loader.py +136 -0
- icdev/tools/dashboard/sse_manager.py +89 -0
- icdev/tools/dashboard/state_tracker.py +267 -0
- icdev/tools/dashboard/static/css/style.css +706 -0
- icdev/tools/dashboard/static/css/ux.css +2047 -0
- icdev/tools/dashboard/static/js/activity.js +322 -0
- icdev/tools/dashboard/static/js/api.js +161 -0
- icdev/tools/dashboard/static/js/batch.js +814 -0
- icdev/tools/dashboard/static/js/charts.js +618 -0
- icdev/tools/dashboard/static/js/chat.js +1514 -0
- icdev/tools/dashboard/static/js/kanban.js +113 -0
- icdev/tools/dashboard/static/js/live.js +569 -0
- icdev/tools/dashboard/static/js/mermaid-icdev.js +332 -0
- icdev/tools/dashboard/static/js/proposals.js +588 -0
- icdev/tools/dashboard/static/js/shortcuts.js +544 -0
- icdev/tools/dashboard/static/js/tables.js +652 -0
- icdev/tools/dashboard/static/js/tour.js +524 -0
- icdev/tools/dashboard/static/js/ux.js +942 -0
- icdev/tools/dashboard/templates/404.html +10 -0
- icdev/tools/dashboard/templates/activity.html +80 -0
- icdev/tools/dashboard/templates/admin/users.html +144 -0
- icdev/tools/dashboard/templates/ai_accountability.html +235 -0
- icdev/tools/dashboard/templates/ai_transparency.html +263 -0
- icdev/tools/dashboard/templates/base.html +104 -0
- icdev/tools/dashboard/templates/batch.html +23 -0
- icdev/tools/dashboard/templates/chat.html +332 -0
- icdev/tools/dashboard/templates/children.html +149 -0
- icdev/tools/dashboard/templates/cicd.html +253 -0
- icdev/tools/dashboard/templates/code_quality.html +214 -0
- icdev/tools/dashboard/templates/cpmp/cor_detail.html +220 -0
- icdev/tools/dashboard/templates/cpmp/cor_portal.html +91 -0
- icdev/tools/dashboard/templates/cpmp/deliverable_detail.html +197 -0
- icdev/tools/dashboard/templates/cpmp/detail.html +578 -0
- icdev/tools/dashboard/templates/cpmp/portfolio.html +202 -0
- icdev/tools/dashboard/templates/dev_profiles.html +304 -0
- icdev/tools/dashboard/templates/diagrams.html +224 -0
- icdev/tools/dashboard/templates/events/timeline.html +232 -0
- icdev/tools/dashboard/templates/evidence.html +134 -0
- icdev/tools/dashboard/templates/fedramp_20x.html +207 -0
- icdev/tools/dashboard/templates/gateway.html +244 -0
- icdev/tools/dashboard/templates/govcon/capabilities.html +135 -0
- icdev/tools/dashboard/templates/govcon/pipeline.html +214 -0
- icdev/tools/dashboard/templates/govcon/requirements.html +120 -0
- icdev/tools/dashboard/templates/index.html +254 -0
- icdev/tools/dashboard/templates/lineage.html +141 -0
- icdev/tools/dashboard/templates/login.html +51 -0
- icdev/tools/dashboard/templates/monitoring/overview.html +193 -0
- icdev/tools/dashboard/templates/orchestration/dashboard.html +545 -0
- icdev/tools/dashboard/templates/oscal.html +263 -0
- icdev/tools/dashboard/templates/phases.html +150 -0
- icdev/tools/dashboard/templates/prod_audit.html +280 -0
- icdev/tools/dashboard/templates/profile.html +183 -0
- icdev/tools/dashboard/templates/projects/detail.html +583 -0
- icdev/tools/dashboard/templates/projects/list.html +47 -0
- icdev/tools/dashboard/templates/proposals/detail.html +1253 -0
- icdev/tools/dashboard/templates/proposals/list.html +179 -0
- icdev/tools/dashboard/templates/proposals/section_detail.html +193 -0
- icdev/tools/dashboard/templates/provenance.html +181 -0
- icdev/tools/dashboard/templates/query/nlq.html +234 -0
- icdev/tools/dashboard/templates/quick_paths.html +69 -0
- icdev/tools/dashboard/templates/traces.html +155 -0
- icdev/tools/dashboard/templates/translation_detail.html +199 -0
- icdev/tools/dashboard/templates/translations.html +162 -0
- icdev/tools/dashboard/templates/usage.html +225 -0
- icdev/tools/dashboard/templates/wizard.html +539 -0
- icdev/tools/dashboard/templates/xai.html +208 -0
- icdev/tools/dashboard/ux_helpers.py +962 -0
- icdev/tools/dashboard/websocket.py +81 -0
- icdev/tools/db/__init__.py +1 -0
- icdev/tools/db/backup.py +312 -0
- icdev/tools/db/backup_manager.py +832 -0
- icdev/tools/db/init_icdev_db.py +5900 -0
- icdev/tools/db/migrate.py +178 -0
- icdev/tools/db/migration_runner.py +549 -0
- icdev/tools/db/migrations/001_baseline/meta.json +9 -0
- icdev/tools/db/migrations/001_baseline/up.py +68 -0
- icdev/tools/db/migrations/002_memory_enhancements/down.sql +8 -0
- icdev/tools/db/migrations/002_memory_enhancements/meta.json +9 -0
- icdev/tools/db/migrations/002_memory_enhancements/up.py +118 -0
- icdev/tools/db/migrations/003_dev_profiles/meta.json +8 -0
- icdev/tools/db/migrations/003_dev_profiles/up.py +93 -0
- icdev/tools/db/migrations/004_innovation_engine/down.py +19 -0
- icdev/tools/db/migrations/004_innovation_engine/up.py +227 -0
- icdev/tools/db/migrations/005_phase_37_ai_security/down.py +19 -0
- icdev/tools/db/migrations/005_phase_37_ai_security/up.py +258 -0
- icdev/tools/db/migrations/006_phase_36_evolution/down.py +21 -0
- icdev/tools/db/migrations/006_phase_36_evolution/up.py +323 -0
- icdev/tools/db/migrations/007_phase_38_cloud/down.py +14 -0
- icdev/tools/db/migrations/007_phase_38_cloud/up.py +110 -0
- icdev/tools/db/migrations/008_phase36_37_integration/up.py +55 -0
- icdev/tools/db/migrations/__init__.py +2 -0
- icdev/tools/devsecops/__init__.py +2 -0
- icdev/tools/devsecops/attestation_manager.py +458 -0
- icdev/tools/devsecops/network_segmentation_generator.py +614 -0
- icdev/tools/devsecops/pdp_config_generator.py +1256 -0
- icdev/tools/devsecops/pipeline_security_generator.py +484 -0
- icdev/tools/devsecops/policy_generator.py +653 -0
- icdev/tools/devsecops/profile_manager.py +388 -0
- icdev/tools/devsecops/service_mesh_generator.py +1073 -0
- icdev/tools/devsecops/zta_maturity_scorer.py +368 -0
- icdev/tools/devsecops/zta_terraform_generator.py +1303 -0
- icdev/tools/dx/__init__.py +3 -0
- icdev/tools/dx/companion.py +266 -0
- icdev/tools/dx/instruction_generator.py +753 -0
- icdev/tools/dx/mcp_config_generator.py +282 -0
- icdev/tools/dx/skill_translator.py +425 -0
- icdev/tools/dx/tool_detector.py +144 -0
- icdev/tools/extensions/__init__.py +21 -0
- icdev/tools/extensions/builtins/010_ai_governance_chat.py +277 -0
- icdev/tools/extensions/builtins/__init__.py +2 -0
- icdev/tools/extensions/extension_manager.py +455 -0
- icdev/tools/infra/__init__.py +1 -0
- icdev/tools/infra/ansible_generator.py +869 -0
- icdev/tools/infra/dockerfile_generator.py +361 -0
- icdev/tools/infra/infra_status.py +393 -0
- icdev/tools/infra/ironbank_metadata_generator.py +411 -0
- icdev/tools/infra/k8s_generator.py +1002 -0
- icdev/tools/infra/pipeline_generator.py +832 -0
- icdev/tools/infra/rollback.py +400 -0
- icdev/tools/infra/terraform_generator.py +1142 -0
- icdev/tools/infra/terraform_generator_azure.py +1254 -0
- icdev/tools/infra/terraform_generator_gcp.py +953 -0
- icdev/tools/infra/terraform_generator_ibm.py +360 -0
- icdev/tools/infra/terraform_generator_oci.py +919 -0
- icdev/tools/infra/terraform_generator_onprem.py +319 -0
- icdev/tools/innovation/__init__.py +8 -0
- icdev/tools/innovation/competitive_intel.py +492 -0
- icdev/tools/innovation/innovation_manager.py +681 -0
- icdev/tools/innovation/introspective_analyzer.py +774 -0
- icdev/tools/innovation/register_external_patterns.py +440 -0
- icdev/tools/innovation/signal_ranker.py +1038 -0
- icdev/tools/innovation/solution_generator.py +697 -0
- icdev/tools/innovation/standards_monitor.py +466 -0
- icdev/tools/innovation/trend_detector.py +1046 -0
- icdev/tools/innovation/triage_engine.py +1149 -0
- icdev/tools/innovation/web_scanner.py +894 -0
- icdev/tools/installer/__init__.py +1 -0
- icdev/tools/installer/compliance_configurator.py +637 -0
- icdev/tools/installer/installer.py +1711 -0
- icdev/tools/installer/module_registry.py +805 -0
- icdev/tools/installer/platform_setup.py +961 -0
- icdev/tools/integration/__init__.py +2 -0
- icdev/tools/integration/approval_manager.py +561 -0
- icdev/tools/integration/doors_exporter.py +627 -0
- icdev/tools/integration/gitlab_connector.py +784 -0
- icdev/tools/integration/jira_connector.py +774 -0
- icdev/tools/integration/servicenow_connector.py +693 -0
- icdev/tools/knowledge/__init__.py +1 -0
- icdev/tools/knowledge/knowledge_ingest.py +293 -0
- icdev/tools/knowledge/pattern_detector.py +693 -0
- icdev/tools/knowledge/recommendation_engine.py +461 -0
- icdev/tools/knowledge/self_heal_analyzer.py +504 -0
- icdev/tools/llm/__init__.py +72 -0
- icdev/tools/llm/anthropic_provider.py +170 -0
- icdev/tools/llm/azure_openai_provider.py +338 -0
- icdev/tools/llm/bedrock_provider.py +315 -0
- icdev/tools/llm/embedding_provider.py +438 -0
- icdev/tools/llm/gemini_provider.py +381 -0
- icdev/tools/llm/ibm_watsonx_provider.py +232 -0
- icdev/tools/llm/oci_genai_provider.py +462 -0
- icdev/tools/llm/ollama_provider.py +340 -0
- icdev/tools/llm/openai_provider.py +225 -0
- icdev/tools/llm/provider.py +355 -0
- icdev/tools/llm/provider_sdk.py +175 -0
- icdev/tools/llm/router.py +780 -0
- icdev/tools/llm/vertex_ai_provider.py +374 -0
- icdev/tools/maintenance/__init__.py +2 -0
- icdev/tools/maintenance/dependency_scanner.py +1030 -0
- icdev/tools/maintenance/maintenance_auditor.py +815 -0
- icdev/tools/maintenance/remediation_engine.py +966 -0
- icdev/tools/maintenance/vulnerability_checker.py +987 -0
- icdev/tools/mbse/__init__.py +3 -0
- icdev/tools/mbse/des_assessor.py +1186 -0
- icdev/tools/mbse/des_report_generator.py +800 -0
- icdev/tools/mbse/diagram_extractor.py +811 -0
- icdev/tools/mbse/digital_thread.py +1665 -0
- icdev/tools/mbse/model_code_generator.py +1122 -0
- icdev/tools/mbse/model_control_mapper.py +420 -0
- icdev/tools/mbse/pi_model_tracker.py +1093 -0
- icdev/tools/mbse/reqif_parser.py +1483 -0
- icdev/tools/mbse/sync_engine.py +1805 -0
- icdev/tools/mbse/xmi_parser.py +1573 -0
- icdev/tools/mcp/__init__.py +1 -0
- icdev/tools/mcp/base_server.py +535 -0
- icdev/tools/mcp/builder_server.py +725 -0
- icdev/tools/mcp/compliance_server.py +1407 -0
- icdev/tools/mcp/context_indexer.py +199 -0
- icdev/tools/mcp/context_server.py +305 -0
- icdev/tools/mcp/core_server.py +679 -0
- icdev/tools/mcp/devsecops_server.py +432 -0
- icdev/tools/mcp/gap_handlers.py +1079 -0
- icdev/tools/mcp/gateway_server.py +339 -0
- icdev/tools/mcp/generate_registry.py +623 -0
- icdev/tools/mcp/infra_server.py +264 -0
- icdev/tools/mcp/innovation_server.py +316 -0
- icdev/tools/mcp/integration_server.py +527 -0
- icdev/tools/mcp/knowledge_server.py +429 -0
- icdev/tools/mcp/maintenance_server.py +248 -0
- icdev/tools/mcp/marketplace_server.py +499 -0
- icdev/tools/mcp/mbse_server.py +398 -0
- icdev/tools/mcp/modernization_server.py +496 -0
- icdev/tools/mcp/observability_server.py +354 -0
- icdev/tools/mcp/requirements_server.py +415 -0
- icdev/tools/mcp/simulation_server.py +468 -0
- icdev/tools/mcp/standalone/__init__.py +2 -0
- icdev/tools/mcp/standalone/builder.py +59 -0
- icdev/tools/mcp/standalone/compliance.py +59 -0
- icdev/tools/mcp/standalone/core.py +59 -0
- icdev/tools/mcp/standalone/knowledge.py +59 -0
- icdev/tools/mcp/standalone/maintenance.py +59 -0
- icdev/tools/mcp/supply_chain_server.py +476 -0
- icdev/tools/mcp/tool_registry.py +2008 -0
- icdev/tools/mcp/unified_server.py +158 -0
- icdev/tools/memory/__init__.py +2 -0
- icdev/tools/memory/auto_capture.py +347 -0
- icdev/tools/memory/embed_memory.py +158 -0
- icdev/tools/memory/history_compressor.py +334 -0
- icdev/tools/memory/hybrid_search.py +236 -0
- icdev/tools/memory/maintenance_cron.py +289 -0
- icdev/tools/memory/memory_consolidation.py +444 -0
- icdev/tools/memory/memory_db.py +133 -0
- icdev/tools/memory/memory_read.py +102 -0
- icdev/tools/memory/memory_write.py +222 -0
- icdev/tools/memory/semantic_search.py +139 -0
- icdev/tools/memory/time_decay.py +435 -0
- icdev/tools/modernization/__init__.py +3 -0
- icdev/tools/modernization/architecture_extractor.py +734 -0
- icdev/tools/modernization/compliance_bridge.py +1499 -0
- icdev/tools/modernization/db_migration_planner.py +1385 -0
- icdev/tools/modernization/doc_generator.py +1428 -0
- icdev/tools/modernization/framework_migrator.py +1525 -0
- icdev/tools/modernization/legacy_analyzer.py +1948 -0
- icdev/tools/modernization/migration_code_generator.py +1639 -0
- icdev/tools/modernization/migration_report_generator.py +1653 -0
- icdev/tools/modernization/migration_tracker.py +1726 -0
- icdev/tools/modernization/monolith_decomposer.py +1508 -0
- icdev/tools/modernization/seven_r_assessor.py +1658 -0
- icdev/tools/modernization/strangler_fig_manager.py +1705 -0
- icdev/tools/modernization/ui_analyzer.py +771 -0
- icdev/tools/modernization/version_migrator.py +1392 -0
- icdev/tools/monitor/__init__.py +1 -0
- icdev/tools/monitor/alert_correlator.py +495 -0
- icdev/tools/monitor/auto_resolver.py +612 -0
- icdev/tools/monitor/health_checker.py +509 -0
- icdev/tools/monitor/heartbeat_daemon.py +792 -0
- icdev/tools/monitor/log_analyzer.py +516 -0
- icdev/tools/monitor/metric_collector.py +496 -0
- icdev/tools/mosa/__init__.py +10 -0
- icdev/tools/mosa/icd_generator.py +370 -0
- icdev/tools/mosa/modular_design_analyzer.py +683 -0
- icdev/tools/mosa/mosa_code_enforcer.py +349 -0
- icdev/tools/mosa/tsp_generator.py +265 -0
- icdev/tools/observability/__init__.py +100 -0
- icdev/tools/observability/genai_attributes.py +88 -0
- icdev/tools/observability/instrumentation.py +140 -0
- icdev/tools/observability/mlflow_exporter.py +194 -0
- icdev/tools/observability/otel_tracer.py +168 -0
- icdev/tools/observability/provenance/__init__.py +3 -0
- icdev/tools/observability/provenance/prov_recorder.py +324 -0
- icdev/tools/observability/shap/__init__.py +3 -0
- icdev/tools/observability/shap/agent_shap.py +275 -0
- icdev/tools/observability/sqlite_tracer.py +361 -0
- icdev/tools/observability/trace_context.py +205 -0
- icdev/tools/observability/tracer.py +230 -0
- icdev/tools/orchestration/__init__.py +2 -0
- icdev/tools/orchestration/workflow_composer.py +361 -0
- icdev/tools/project/__init__.py +1 -0
- icdev/tools/project/manifest_loader.py +418 -0
- icdev/tools/project/project_create.py +350 -0
- icdev/tools/project/project_list.py +174 -0
- icdev/tools/project/project_scaffold.py +1715 -0
- icdev/tools/project/project_status.py +479 -0
- icdev/tools/project/session_context_builder.py +757 -0
- icdev/tools/project/validate_manifest.py +55 -0
- icdev/tools/registry/__init__.py +10 -0
- icdev/tools/registry/absorption_engine.py +832 -0
- icdev/tools/registry/capability_evaluator.py +668 -0
- icdev/tools/registry/child_registry.py +617 -0
- icdev/tools/registry/cross_pollinator.py +1065 -0
- icdev/tools/registry/genome_manager.py +671 -0
- icdev/tools/registry/learning_collector.py +912 -0
- icdev/tools/registry/propagation_manager.py +942 -0
- icdev/tools/registry/staging_manager.py +742 -0
- icdev/tools/registry/telemetry_collector.py +423 -0
- icdev/tools/requirements/__init__.py +1 -0
- icdev/tools/requirements/ai_governance_scorer.py +208 -0
- icdev/tools/requirements/boundary_analyzer.py +1293 -0
- icdev/tools/requirements/clarification_engine.py +618 -0
- icdev/tools/requirements/complexity_scorer.py +387 -0
- icdev/tools/requirements/consistency_analyzer.py +803 -0
- icdev/tools/requirements/constitution_manager.py +605 -0
- icdev/tools/requirements/decomposition_engine.py +778 -0
- icdev/tools/requirements/document_extractor.py +1016 -0
- icdev/tools/requirements/elicitation_techniques.py +519 -0
- icdev/tools/requirements/gap_detector.py +271 -0
- icdev/tools/requirements/intake_engine.py +2188 -0
- icdev/tools/requirements/prd_generator.py +847 -0
- icdev/tools/requirements/prd_validator.py +595 -0
- icdev/tools/requirements/readiness_scorer.py +313 -0
- icdev/tools/requirements/spec_organizer.py +1029 -0
- icdev/tools/requirements/spec_quality_checker.py +1097 -0
- icdev/tools/requirements/traceability_builder.py +579 -0
- icdev/tools/resilience/__init__.py +34 -0
- icdev/tools/resilience/circuit_breaker.py +340 -0
- icdev/tools/resilience/correlation.py +150 -0
- icdev/tools/resilience/errors.py +81 -0
- icdev/tools/resilience/retry.py +95 -0
- icdev/tools/schemas/__init__.py +27 -0
- icdev/tools/schemas/chat.py +61 -0
- icdev/tools/schemas/compliance.py +56 -0
- icdev/tools/schemas/core.py +85 -0
- icdev/tools/schemas/innovation.py +37 -0
- icdev/tools/schemas/validation.py +109 -0
- icdev/tools/sdk/__init__.py +3 -0
- icdev/tools/sdk/icdev_client.py +218 -0
- icdev/tools/security/__init__.py +1 -0
- icdev/tools/security/agent_output_validator.py +330 -0
- icdev/tools/security/agent_trust_scorer.py +466 -0
- icdev/tools/security/ai_bom_generator.py +725 -0
- icdev/tools/security/ai_telemetry_logger.py +469 -0
- icdev/tools/security/atlas_red_team.py +543 -0
- icdev/tools/security/code_pattern_scanner.py +378 -0
- icdev/tools/security/confabulation_detector.py +271 -0
- icdev/tools/security/container_scanner.py +491 -0
- icdev/tools/security/dependency_auditor.py +944 -0
- icdev/tools/security/endpoint_security_scanner.py +579 -0
- icdev/tools/security/mcp_tool_authorizer.py +243 -0
- icdev/tools/security/prompt_injection_detector.py +737 -0
- icdev/tools/security/sast_runner.py +948 -0
- icdev/tools/security/secret_detector.py +378 -0
- icdev/tools/security/tool_chain_validator.py +357 -0
- icdev/tools/security/vuln_scanner.py +539 -0
- icdev/tools/simulation/__init__.py +2 -0
- icdev/tools/simulation/coa_generator.py +1552 -0
- icdev/tools/simulation/monte_carlo.py +758 -0
- icdev/tools/simulation/scenario_manager.py +1073 -0
- icdev/tools/simulation/simulation_engine.py +1104 -0
- icdev/tools/supply_chain/__init__.py +2 -0
- icdev/tools/supply_chain/cve_triager.py +705 -0
- icdev/tools/supply_chain/dependency_graph.py +645 -0
- icdev/tools/supply_chain/isa_manager.py +540 -0
- icdev/tools/supply_chain/scrm_assessor.py +546 -0
- icdev/tools/testing/__init__.py +2 -0
- icdev/tools/testing/acceptance_validator.py +411 -0
- icdev/tools/testing/claude_dir_validator.py +831 -0
- icdev/tools/testing/data_types.py +199 -0
- icdev/tools/testing/e2e_runner.py +715 -0
- icdev/tools/testing/fuzz_cli.py +306 -0
- icdev/tools/testing/health_check.py +483 -0
- icdev/tools/testing/platform_check.py +143 -0
- icdev/tools/testing/production_audit.py +1862 -0
- icdev/tools/testing/production_remediate.py +804 -0
- icdev/tools/testing/screenshot_validator.py +539 -0
- icdev/tools/testing/smoke_test.py +283 -0
- icdev/tools/testing/test_agent_models.py +117 -0
- icdev/tools/testing/test_orchestrator.py +957 -0
- icdev/tools/testing/utils.py +229 -0
- icdev/tools/translation/__init__.py +17 -0
- icdev/tools/translation/code_translator.py +550 -0
- icdev/tools/translation/dependency_mapper.py +277 -0
- icdev/tools/translation/feature_map.py +395 -0
- icdev/tools/translation/project_assembler.py +439 -0
- icdev/tools/translation/source_extractor.py +609 -0
- icdev/tools/translation/test_translator.py +333 -0
- icdev/tools/translation/translation_manager.py +582 -0
- icdev/tools/translation/translation_validator.py +662 -0
- icdev/tools/translation/type_checker.py +371 -0
- icdev-1.0.0.dist-info/METADATA +868 -0
- icdev-1.0.0.dist-info/RECORD +1105 -0
- icdev-1.0.0.dist-info/WHEEL +5 -0
- icdev-1.0.0.dist-info/entry_points.txt +9 -0
- icdev-1.0.0.dist-info/licenses/LICENSE +254 -0
- icdev-1.0.0.dist-info/licenses/NOTICE +268 -0
- icdev-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,962 @@
|
|
|
1
|
+
# [TEMPLATE: CUI // SP-CTI]
|
|
2
|
+
# ICDEV Dashboard UX Helpers
|
|
3
|
+
# Server-side utilities for user-friendly display
|
|
4
|
+
"""
|
|
5
|
+
UX Helpers for the ICDEV Dashboard
|
|
6
|
+
===================================
|
|
7
|
+
Provides server-side utilities that make the ICDEV dashboard intuitive for
|
|
8
|
+
non-technical government users: human-friendly timestamps, glossary tooltips,
|
|
9
|
+
score badges, error recovery guidance, quick-path workflows, and a getting-
|
|
10
|
+
started wizard.
|
|
11
|
+
|
|
12
|
+
All functions use Python stdlib only (datetime, re, html). No external
|
|
13
|
+
dependencies required.
|
|
14
|
+
|
|
15
|
+
Usage:
|
|
16
|
+
from icdev.tools.dashboard.ux_helpers import register_ux_filters
|
|
17
|
+
app = Flask(__name__)
|
|
18
|
+
register_ux_filters(app)
|
|
19
|
+
|
|
20
|
+
Then in Jinja2 templates:
|
|
21
|
+
{{ timestamp | friendly_time }}
|
|
22
|
+
{{ timestamp | short_time }}
|
|
23
|
+
{{ timestamp | time_ago }}
|
|
24
|
+
{{ "ATO" | glossary }}
|
|
25
|
+
{{ score_display(0.78, 0.7, "Readiness") }}
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
import html
|
|
29
|
+
import re
|
|
30
|
+
from datetime import datetime, timezone
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# ---------------------------------------------------------------------------
|
|
34
|
+
# Glossary of acronyms (used by glossary_term filter)
|
|
35
|
+
# ---------------------------------------------------------------------------
|
|
36
|
+
|
|
37
|
+
GLOSSARY = {
|
|
38
|
+
"ATO": "Authorization to Operate — formal approval to run a system",
|
|
39
|
+
"cATO": "Continuous Authorization to Operate — ongoing compliance monitoring",
|
|
40
|
+
"CAC": "Common Access Card — DoD smart card for authentication",
|
|
41
|
+
"CAT-I": "Category I — critical severity (STIG finding that must be fixed immediately)",
|
|
42
|
+
"CAT-II": "Category II — high severity (STIG finding that should be fixed soon)",
|
|
43
|
+
"CAT-III": "Category III — medium severity (STIG finding that should be tracked)",
|
|
44
|
+
"CMMC": "Cybersecurity Maturity Model Certification — DoD contractor security standard",
|
|
45
|
+
"COA": "Course of Action — a proposed plan option with cost/schedule/risk tradeoffs",
|
|
46
|
+
"CUI": "Controlled Unclassified Information — sensitive but not classified data",
|
|
47
|
+
"CVE": "Common Vulnerabilities and Exposures — a known security vulnerability",
|
|
48
|
+
"DES": "Digital Engineering Strategy — DoDI 5000.87 requirements for model-based engineering",
|
|
49
|
+
"eMASS": "Enterprise Mission Assurance Support Service — DoD compliance tracking system",
|
|
50
|
+
"FedRAMP": "Federal Risk and Authorization Management Program — cloud security standard",
|
|
51
|
+
"FIPS": "Federal Information Processing Standards — NIST cryptographic and categorization standards",
|
|
52
|
+
"FIPS 199": "Standards for Security Categorization — determines system impact level",
|
|
53
|
+
"FIPS 200": "Minimum Security Requirements — 17 security areas every federal system must address",
|
|
54
|
+
"IaC": "Infrastructure as Code — automated infrastructure provisioning (Terraform, Ansible)",
|
|
55
|
+
"IL2": "Impact Level 2 — public, non-sensitive data",
|
|
56
|
+
"IL4": "Impact Level 4 — CUI in AWS GovCloud",
|
|
57
|
+
"IL5": "Impact Level 5 — CUI on dedicated GovCloud infrastructure",
|
|
58
|
+
"IL6": "Impact Level 6 — SECRET / classified data on SIPR",
|
|
59
|
+
"ISA": "Interconnection Security Agreement — contract for data exchange between systems",
|
|
60
|
+
"ISSO": "Information System Security Officer — person responsible for system security",
|
|
61
|
+
"IV&V": "Independent Verification and Validation — IEEE 1012 testing standard",
|
|
62
|
+
"MBSE": "Model-Based Systems Engineering — using SysML models as source of truth",
|
|
63
|
+
"NIST": "National Institute of Standards and Technology — publishes security frameworks",
|
|
64
|
+
"OSCAL": "Open Security Controls Assessment Language — machine-readable compliance format",
|
|
65
|
+
"PIV": "Personal Identity Verification — federal employee smart card",
|
|
66
|
+
"POA&M": "Plan of Action and Milestones — documented plan to fix security gaps",
|
|
67
|
+
"POAM": "Plan of Action and Milestones — documented plan to fix security gaps",
|
|
68
|
+
"RICOAS": "Requirements Intake, COA & Approval System",
|
|
69
|
+
"RMF": "Risk Management Framework — NIST process for managing security risk",
|
|
70
|
+
"SAFe": "Scaled Agile Framework — enterprise agile methodology",
|
|
71
|
+
"SAST": "Static Application Security Testing — automated code vulnerability scanning",
|
|
72
|
+
"SBOM": "Software Bill of Materials — inventory of all software components",
|
|
73
|
+
"SCRM": "Supply Chain Risk Management — assessing vendor and dependency risks",
|
|
74
|
+
"SIPR": "Secret Internet Protocol Router Network — classified network",
|
|
75
|
+
"SLA": "Service Level Agreement — promised response/resolution times",
|
|
76
|
+
"SSP": "System Security Plan — primary ATO document describing security controls",
|
|
77
|
+
"STIG": "Security Technical Implementation Guide — DoD security configuration checklist",
|
|
78
|
+
"TDD": "Test-Driven Development — write tests first, then code to pass them",
|
|
79
|
+
"WSJF": "Weighted Shortest Job First — SAFe prioritization method",
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
# ---------------------------------------------------------------------------
|
|
84
|
+
# 1. Jinja2 Template Filters
|
|
85
|
+
# ---------------------------------------------------------------------------
|
|
86
|
+
|
|
87
|
+
def _format_time_12h(dt):
|
|
88
|
+
"""Format a datetime to '2:30 PM' style using only stdlib."""
|
|
89
|
+
hour = dt.hour % 12 or 12
|
|
90
|
+
minute = dt.strftime("%M")
|
|
91
|
+
ampm = "AM" if dt.hour < 12 else "PM"
|
|
92
|
+
return f"{hour}:{minute} {ampm}"
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def format_timestamp(value):
|
|
96
|
+
"""Convert ISO-8601 string to human-friendly format.
|
|
97
|
+
|
|
98
|
+
Examples:
|
|
99
|
+
"2026-02-18T14:30:00Z" -> "Feb 18, 2026 at 2:30 PM"
|
|
100
|
+
"2026-02-18T14:30:00" -> "Feb 18, 2026 at 2:30 PM"
|
|
101
|
+
None or "" -> "\u2014"
|
|
102
|
+
invalid -> original string
|
|
103
|
+
"""
|
|
104
|
+
if not value:
|
|
105
|
+
return "\u2014"
|
|
106
|
+
try:
|
|
107
|
+
dt = _parse_iso(value)
|
|
108
|
+
date_part = dt.strftime("%b %d, %Y")
|
|
109
|
+
time_part = _format_time_12h(dt)
|
|
110
|
+
return f"{date_part} at {time_part}"
|
|
111
|
+
except Exception:
|
|
112
|
+
return str(value)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def format_timestamp_short(value):
|
|
116
|
+
"""Convert ISO-8601 string to short date format.
|
|
117
|
+
|
|
118
|
+
Examples:
|
|
119
|
+
"2026-02-18T14:30:00Z" -> "Feb 18, 2026"
|
|
120
|
+
None or "" -> "\u2014"
|
|
121
|
+
"""
|
|
122
|
+
if not value:
|
|
123
|
+
return "\u2014"
|
|
124
|
+
try:
|
|
125
|
+
dt = _parse_iso(value)
|
|
126
|
+
return dt.strftime("%b %d, %Y")
|
|
127
|
+
except Exception:
|
|
128
|
+
return str(value)
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def format_time_ago(value):
|
|
132
|
+
"""Convert ISO-8601 string to relative time description.
|
|
133
|
+
|
|
134
|
+
Examples:
|
|
135
|
+
(now - 30 seconds) -> "just now"
|
|
136
|
+
(now - 5 minutes) -> "5 minutes ago"
|
|
137
|
+
(now - 3 hours) -> "3 hours ago"
|
|
138
|
+
(now - 2 days) -> "2 days ago"
|
|
139
|
+
(now - 2 weeks) -> "2 weeks ago"
|
|
140
|
+
(now - 60 days) -> "Feb 18, 2026"
|
|
141
|
+
"""
|
|
142
|
+
if not value:
|
|
143
|
+
return "\u2014"
|
|
144
|
+
try:
|
|
145
|
+
dt = _parse_iso(value)
|
|
146
|
+
now = datetime.now(timezone.utc)
|
|
147
|
+
# Ensure dt is timezone-aware for comparison
|
|
148
|
+
if dt.tzinfo is None:
|
|
149
|
+
dt = dt.replace(tzinfo=timezone.utc)
|
|
150
|
+
delta = now - dt
|
|
151
|
+
seconds = int(delta.total_seconds())
|
|
152
|
+
|
|
153
|
+
if seconds < 0:
|
|
154
|
+
# Future timestamp — just show the date
|
|
155
|
+
return format_timestamp_short(value)
|
|
156
|
+
if seconds < 60:
|
|
157
|
+
return "just now"
|
|
158
|
+
minutes = seconds // 60
|
|
159
|
+
if minutes < 60:
|
|
160
|
+
unit = "minute" if minutes == 1 else "minutes"
|
|
161
|
+
return f"{minutes} {unit} ago"
|
|
162
|
+
hours = minutes // 60
|
|
163
|
+
if hours < 24:
|
|
164
|
+
unit = "hour" if hours == 1 else "hours"
|
|
165
|
+
return f"{hours} {unit} ago"
|
|
166
|
+
days = hours // 24
|
|
167
|
+
if days < 7:
|
|
168
|
+
unit = "day" if days == 1 else "days"
|
|
169
|
+
return f"{days} {unit} ago"
|
|
170
|
+
weeks = days // 7
|
|
171
|
+
if days < 30:
|
|
172
|
+
unit = "week" if weeks == 1 else "weeks"
|
|
173
|
+
return f"{weeks} {unit} ago"
|
|
174
|
+
# Older than 30 days — show the short date
|
|
175
|
+
return format_timestamp_short(value)
|
|
176
|
+
except Exception:
|
|
177
|
+
return str(value)
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def glossary_term(text):
|
|
181
|
+
"""Wrap a known acronym in a glossary tooltip span.
|
|
182
|
+
|
|
183
|
+
If the text matches a known term in the GLOSSARY dict, returns an HTML
|
|
184
|
+
span with a data-glossary attribute for JavaScript tooltip activation.
|
|
185
|
+
Unknown terms are returned unchanged (HTML-escaped for safety).
|
|
186
|
+
|
|
187
|
+
Examples:
|
|
188
|
+
glossary_term("ATO") -> '<span data-glossary="ATO">ATO</span>'
|
|
189
|
+
glossary_term("foo") -> 'foo'
|
|
190
|
+
"""
|
|
191
|
+
if not text:
|
|
192
|
+
return ""
|
|
193
|
+
text_str = str(text).strip()
|
|
194
|
+
if text_str in GLOSSARY:
|
|
195
|
+
safe_text = html.escape(text_str)
|
|
196
|
+
return f'<span data-glossary="{safe_text}">{safe_text}</span>'
|
|
197
|
+
return html.escape(text_str)
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def score_display(value, threshold, label="Score"):
|
|
201
|
+
"""Return HTML for a color-coded score badge.
|
|
202
|
+
|
|
203
|
+
The badge color depends on how the value compares to the threshold:
|
|
204
|
+
- value >= threshold -> green (good)
|
|
205
|
+
- value >= threshold * 0.85 -> yellow (warning / almost ready)
|
|
206
|
+
- value < threshold * 0.85 -> red (poor / needs work)
|
|
207
|
+
|
|
208
|
+
Args:
|
|
209
|
+
value: Numeric score between 0.0 and 1.0.
|
|
210
|
+
threshold: The passing threshold (e.g. 0.7).
|
|
211
|
+
label: Human-readable label (e.g. "Readiness").
|
|
212
|
+
|
|
213
|
+
Returns:
|
|
214
|
+
HTML string with appropriate CSS class and icon.
|
|
215
|
+
|
|
216
|
+
Examples:
|
|
217
|
+
score_display(0.78, 0.7, "Readiness")
|
|
218
|
+
-> '<span class="score-display score-good">...'
|
|
219
|
+
score_display(0.62, 0.7, "Readiness")
|
|
220
|
+
-> '<span class="score-display score-warning">...'
|
|
221
|
+
score_display(0.45, 0.7, "Readiness")
|
|
222
|
+
-> '<span class="score-display score-poor">...'
|
|
223
|
+
"""
|
|
224
|
+
try:
|
|
225
|
+
val = float(value)
|
|
226
|
+
except (TypeError, ValueError):
|
|
227
|
+
return html.escape(str(value))
|
|
228
|
+
|
|
229
|
+
pct = int(round(val * 100))
|
|
230
|
+
|
|
231
|
+
if val >= threshold:
|
|
232
|
+
css = "score-good"
|
|
233
|
+
icon = "\u2713" # checkmark
|
|
234
|
+
status = "Ready"
|
|
235
|
+
elif val >= threshold * 0.85:
|
|
236
|
+
css = "score-warning"
|
|
237
|
+
icon = "\u26a0" # warning sign
|
|
238
|
+
status = "Almost ready"
|
|
239
|
+
else:
|
|
240
|
+
css = "score-poor"
|
|
241
|
+
icon = "\u2715" # multiplication x
|
|
242
|
+
status = "Needs work"
|
|
243
|
+
|
|
244
|
+
safe_label = html.escape(str(label))
|
|
245
|
+
return (
|
|
246
|
+
f'<span class="score-display {css}" title="{safe_label}: {pct}%">'
|
|
247
|
+
f'<span class="score-icon">{icon}</span> '
|
|
248
|
+
f'{pct}% \u2014 {status}'
|
|
249
|
+
f'</span>'
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
# ---------------------------------------------------------------------------
|
|
254
|
+
# 2. ISO-8601 parsing helper (stdlib only)
|
|
255
|
+
# ---------------------------------------------------------------------------
|
|
256
|
+
|
|
257
|
+
_ISO_RE = re.compile(
|
|
258
|
+
r"^(\d{4})-(\d{2})-(\d{2})" # date
|
|
259
|
+
r"[T ](\d{2}):(\d{2}):(\d{2})" # time
|
|
260
|
+
r"(?:\.(\d+))?" # optional fractional seconds
|
|
261
|
+
r"(Z|[+-]\d{2}:\d{2})?$" # optional timezone
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
def _parse_iso(value):
|
|
266
|
+
"""Parse an ISO-8601 datetime string into a timezone-aware datetime.
|
|
267
|
+
|
|
268
|
+
Handles:
|
|
269
|
+
2026-02-18T14:30:00Z
|
|
270
|
+
2026-02-18T14:30:00
|
|
271
|
+
2026-02-18T14:30:00.123456Z
|
|
272
|
+
2026-02-18T14:30:00+05:00
|
|
273
|
+
2026-02-18 14:30:00
|
|
274
|
+
"""
|
|
275
|
+
s = str(value).strip()
|
|
276
|
+
m = _ISO_RE.match(s)
|
|
277
|
+
if not m:
|
|
278
|
+
raise ValueError(f"Cannot parse ISO timestamp: {s}")
|
|
279
|
+
|
|
280
|
+
year, month, day = int(m.group(1)), int(m.group(2)), int(m.group(3))
|
|
281
|
+
hour, minute, second = int(m.group(4)), int(m.group(5)), int(m.group(6))
|
|
282
|
+
# Fractional seconds (truncate to microseconds)
|
|
283
|
+
frac = m.group(7)
|
|
284
|
+
microsecond = int(frac[:6].ljust(6, "0")) if frac else 0
|
|
285
|
+
# Timezone
|
|
286
|
+
tz_str = m.group(8)
|
|
287
|
+
if tz_str is None or tz_str == "":
|
|
288
|
+
tz = timezone.utc # treat naive as UTC
|
|
289
|
+
elif tz_str == "Z":
|
|
290
|
+
tz = timezone.utc
|
|
291
|
+
else:
|
|
292
|
+
sign = 1 if tz_str[0] == "+" else -1
|
|
293
|
+
tz_parts = tz_str[1:].split(":")
|
|
294
|
+
tz_hours = int(tz_parts[0])
|
|
295
|
+
tz_mins = int(tz_parts[1]) if len(tz_parts) > 1 else 0
|
|
296
|
+
from datetime import timedelta
|
|
297
|
+
tz = timezone(timedelta(hours=sign * tz_hours, minutes=sign * tz_mins))
|
|
298
|
+
|
|
299
|
+
return datetime(year, month, day, hour, minute, second, microsecond, tzinfo=tz)
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
# ---------------------------------------------------------------------------
|
|
303
|
+
# 3. Error Recovery Dictionary
|
|
304
|
+
# ---------------------------------------------------------------------------
|
|
305
|
+
|
|
306
|
+
ERROR_RECOVERY = {
|
|
307
|
+
"cat1_stig": {
|
|
308
|
+
"what": "A Critical (CAT-I) security finding was detected",
|
|
309
|
+
"why": (
|
|
310
|
+
"CAT-I findings block deployment \u2014 they represent "
|
|
311
|
+
"vulnerabilities that could be immediately exploited"
|
|
312
|
+
),
|
|
313
|
+
"fix": (
|
|
314
|
+
"1. Review the finding details in the STIG tab\n"
|
|
315
|
+
"2. Fix the underlying code vulnerability\n"
|
|
316
|
+
"3. Re-run security scan to verify fix\n"
|
|
317
|
+
"4. Document the fix in the audit trail"
|
|
318
|
+
),
|
|
319
|
+
"who": "Developer + Security team",
|
|
320
|
+
"time": "4-8 hours",
|
|
321
|
+
},
|
|
322
|
+
"readiness_below_threshold": {
|
|
323
|
+
"what": "Requirements readiness score is below the 70% threshold",
|
|
324
|
+
"why": (
|
|
325
|
+
"Proceeding with incomplete requirements leads to rework "
|
|
326
|
+
"and cost overruns"
|
|
327
|
+
),
|
|
328
|
+
"fix": (
|
|
329
|
+
"1. Check which dimension is lowest (completeness, clarity, "
|
|
330
|
+
"feasibility, compliance, testability)\n"
|
|
331
|
+
"2. For low COMPLETENESS: Add missing requirement areas\n"
|
|
332
|
+
"3. For low CLARITY: Replace vague terms ('fast', 'secure') "
|
|
333
|
+
"with measurable criteria\n"
|
|
334
|
+
"4. For low FEASIBILITY: Validate technical constraints with "
|
|
335
|
+
"architects\n"
|
|
336
|
+
"5. For low COMPLIANCE: Add NIST control mappings\n"
|
|
337
|
+
"6. For low TESTABILITY: Add acceptance criteria to each "
|
|
338
|
+
"requirement"
|
|
339
|
+
),
|
|
340
|
+
"who": "Requirements Analyst + Customer",
|
|
341
|
+
"time": "1-3 hours of additional intake",
|
|
342
|
+
},
|
|
343
|
+
"compliance_bridge_gap": {
|
|
344
|
+
"what": "ATO compliance coverage is below 95% during migration",
|
|
345
|
+
"why": (
|
|
346
|
+
"Operating below 95% compliance coverage risks losing "
|
|
347
|
+
"Authorization to Operate"
|
|
348
|
+
),
|
|
349
|
+
"fix": (
|
|
350
|
+
"1. Run crosswalk engine to identify missing controls\n"
|
|
351
|
+
"2. Map existing legacy controls to new system\n"
|
|
352
|
+
"3. Create POA&M items for controls that can't be immediately "
|
|
353
|
+
"migrated\n"
|
|
354
|
+
"4. Get ISSO approval for temporary coverage gap"
|
|
355
|
+
),
|
|
356
|
+
"who": "Compliance Officer + ISSO",
|
|
357
|
+
"time": "1-2 days",
|
|
358
|
+
},
|
|
359
|
+
"connection_validation_failed": {
|
|
360
|
+
"what": "System connection validation failed during build",
|
|
361
|
+
"why": (
|
|
362
|
+
"Your application can't connect to required services "
|
|
363
|
+
"(database, APIs, auth)"
|
|
364
|
+
),
|
|
365
|
+
"fix": (
|
|
366
|
+
"1. Check database connection string in environment variables\n"
|
|
367
|
+
"2. Verify API keys are set and not expired\n"
|
|
368
|
+
"3. Test network connectivity to external services\n"
|
|
369
|
+
"4. Check firewall rules allow outbound connections\n"
|
|
370
|
+
"5. Review logs for specific connection error messages"
|
|
371
|
+
),
|
|
372
|
+
"who": "Developer + Infrastructure team",
|
|
373
|
+
"time": "1-4 hours",
|
|
374
|
+
},
|
|
375
|
+
"deployment_gate_failed": {
|
|
376
|
+
"what": "Deployment blocked by security gates",
|
|
377
|
+
"why": "One or more required security checks did not pass",
|
|
378
|
+
"fix": (
|
|
379
|
+
"1. Check which gate failed (tests, coverage, STIG, "
|
|
380
|
+
"vulnerabilities, SBOM)\n"
|
|
381
|
+
"2. For failed TESTS: Fix failing tests, ensure 80%+ coverage\n"
|
|
382
|
+
"3. For STIG findings: Remediate CAT-I findings "
|
|
383
|
+
"(CAT-II/III can be POA&M'd)\n"
|
|
384
|
+
"4. For VULNERABILITIES: Update dependencies with known CVEs\n"
|
|
385
|
+
"5. For missing SBOM: Regenerate SBOM with latest dependencies"
|
|
386
|
+
),
|
|
387
|
+
"who": "Developer + Security team",
|
|
388
|
+
"time": "2-8 hours depending on findings",
|
|
389
|
+
},
|
|
390
|
+
"ato_boundary_red": {
|
|
391
|
+
"what": "Proposed change would invalidate the current ATO",
|
|
392
|
+
"why": (
|
|
393
|
+
"RED-tier changes (classification upgrade, boundary expansion) "
|
|
394
|
+
"require re-authorization \u2014 this is a full stop"
|
|
395
|
+
),
|
|
396
|
+
"fix": (
|
|
397
|
+
"1. Review the boundary impact assessment details\n"
|
|
398
|
+
"2. Generate alternative COAs that stay within current ATO "
|
|
399
|
+
"boundary\n"
|
|
400
|
+
"3. If no alternative exists, plan for re-authorization "
|
|
401
|
+
"(add 3-6 months)\n"
|
|
402
|
+
"4. Brief the ISSO and Authorizing Official on the impact\n"
|
|
403
|
+
"5. Consider splitting the requirement into ATO-safe and "
|
|
404
|
+
"ATO-impacting parts"
|
|
405
|
+
),
|
|
406
|
+
"who": "ISSO + Authorizing Official + Program Manager",
|
|
407
|
+
"time": "1-2 weeks for alternative COAs, 3-6 months for re-authorization",
|
|
408
|
+
},
|
|
409
|
+
"database_not_initialized": {
|
|
410
|
+
"what": "The ICDEV database has not been set up yet",
|
|
411
|
+
"why": (
|
|
412
|
+
"ICDEV needs its database to track projects, compliance, "
|
|
413
|
+
"and audit trails"
|
|
414
|
+
),
|
|
415
|
+
"fix": (
|
|
416
|
+
"Run this command:\n"
|
|
417
|
+
" python tools/db/init_icdev_db.py\n\n"
|
|
418
|
+
"This creates the database with all required tables. "
|
|
419
|
+
"It only needs to be done once."
|
|
420
|
+
),
|
|
421
|
+
"who": "Any team member",
|
|
422
|
+
"time": "Under 1 minute",
|
|
423
|
+
},
|
|
424
|
+
"session_not_found": {
|
|
425
|
+
"what": "The intake session was not found",
|
|
426
|
+
"why": (
|
|
427
|
+
"The session ID may be incorrect, or the session may have expired"
|
|
428
|
+
),
|
|
429
|
+
"fix": (
|
|
430
|
+
"1. Double-check the session ID\n"
|
|
431
|
+
"2. List active sessions: python tools/requirements/"
|
|
432
|
+
"intake_engine.py --project-id <id> --list\n"
|
|
433
|
+
"3. If session expired (>30 days), create a new session\n"
|
|
434
|
+
"4. Previous session data is preserved in the database"
|
|
435
|
+
),
|
|
436
|
+
"who": "Requirements Analyst",
|
|
437
|
+
"time": "5 minutes",
|
|
438
|
+
},
|
|
439
|
+
"fips199_required": {
|
|
440
|
+
"what": "FIPS 199 security categorization has not been completed",
|
|
441
|
+
"why": (
|
|
442
|
+
"Security categorization determines your baseline controls "
|
|
443
|
+
"\u2014 all compliance work depends on this"
|
|
444
|
+
),
|
|
445
|
+
"fix": (
|
|
446
|
+
"1. Run: python tools/compliance/fips199_categorizer.py "
|
|
447
|
+
"--project-id <id> --list-catalog\n"
|
|
448
|
+
"2. Select information types that match your system's data\n"
|
|
449
|
+
"3. Run categorization: python tools/compliance/"
|
|
450
|
+
"fips199_categorizer.py --project-id <id> --categorize\n"
|
|
451
|
+
"4. Review and approve the categorization result"
|
|
452
|
+
),
|
|
453
|
+
"who": "ISSO + System Owner",
|
|
454
|
+
"time": "30-60 minutes",
|
|
455
|
+
},
|
|
456
|
+
"cve_sla_breach": {
|
|
457
|
+
"what": "A vulnerability fix deadline has been missed",
|
|
458
|
+
"why": (
|
|
459
|
+
"Critical CVEs must be fixed within 48 hours per supply chain SLA"
|
|
460
|
+
),
|
|
461
|
+
"fix": (
|
|
462
|
+
"1. Review the CVE details and affected component\n"
|
|
463
|
+
"2. Check if a patched version is available\n"
|
|
464
|
+
"3. If patch available: Update dependency and test\n"
|
|
465
|
+
"4. If no patch: Implement compensating control and document "
|
|
466
|
+
"in POA&M\n"
|
|
467
|
+
"5. Notify ISSO of the SLA breach"
|
|
468
|
+
),
|
|
469
|
+
"who": "Developer + Security team + ISSO",
|
|
470
|
+
"time": "4-24 hours depending on complexity",
|
|
471
|
+
},
|
|
472
|
+
"framework_selection_unclear": {
|
|
473
|
+
"what": (
|
|
474
|
+
"It's unclear which compliance frameworks apply to your project"
|
|
475
|
+
),
|
|
476
|
+
"why": (
|
|
477
|
+
"Choosing the wrong frameworks wastes effort; missing a required "
|
|
478
|
+
"framework delays ATO"
|
|
479
|
+
),
|
|
480
|
+
"fix": (
|
|
481
|
+
"Answer these questions:\n"
|
|
482
|
+
"- Is this a cloud service? \u2192 FedRAMP required\n"
|
|
483
|
+
"- Is this for a DoD contractor? \u2192 CMMC Level 2+ required\n"
|
|
484
|
+
"- Does it handle CUI? \u2192 NIST 800-171 required\n"
|
|
485
|
+
"- What impact level? \u2192 IL4/IL5 = FedRAMP Moderate, "
|
|
486
|
+
"IL6 = FedRAMP High\n"
|
|
487
|
+
"- Most projects need: NIST 800-53 + FedRAMP + CMMC\n"
|
|
488
|
+
"- The crosswalk engine maps controls across frameworks "
|
|
489
|
+
"automatically"
|
|
490
|
+
),
|
|
491
|
+
"who": "ISSO + Contracting Officer",
|
|
492
|
+
"time": "15-30 minutes to decide",
|
|
493
|
+
},
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
# ---------------------------------------------------------------------------
|
|
498
|
+
# 4. Quick Path Definitions
|
|
499
|
+
# ---------------------------------------------------------------------------
|
|
500
|
+
|
|
501
|
+
QUICK_PATHS = [
|
|
502
|
+
{
|
|
503
|
+
"id": "quick_ato",
|
|
504
|
+
"title": "Quick ATO Package",
|
|
505
|
+
"icon": "\U0001f6e1",
|
|
506
|
+
"description": (
|
|
507
|
+
"Generate the minimum required ATO artifacts for your project. "
|
|
508
|
+
"Covers FIPS 199 categorization, SSP, POA&M, STIG checklist, "
|
|
509
|
+
"and SBOM."
|
|
510
|
+
),
|
|
511
|
+
"audience": "ISSO, Compliance Officer",
|
|
512
|
+
"estimated_time": "2-4 hours",
|
|
513
|
+
"steps": [
|
|
514
|
+
{
|
|
515
|
+
"name": "Categorize System",
|
|
516
|
+
"tool": "fips199_categorizer.py --categorize",
|
|
517
|
+
"desc": "Determine security impact level",
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
"name": "Validate Requirements",
|
|
521
|
+
"tool": "fips200_validator.py",
|
|
522
|
+
"desc": "Check all 17 security areas",
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"name": "Generate SSP",
|
|
526
|
+
"tool": "ssp_generator.py",
|
|
527
|
+
"desc": "Create System Security Plan",
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"name": "Create POA&M",
|
|
531
|
+
"tool": "poam_generator.py",
|
|
532
|
+
"desc": "Document security gaps with deadlines",
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
"name": "Run STIG Check",
|
|
536
|
+
"tool": "stig_checker.py",
|
|
537
|
+
"desc": "Evaluate security technical compliance",
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
"name": "Generate SBOM",
|
|
541
|
+
"tool": "sbom_generator.py",
|
|
542
|
+
"desc": "Inventory all software components",
|
|
543
|
+
},
|
|
544
|
+
],
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
"id": "build_and_ship",
|
|
548
|
+
"title": "Build & Ship",
|
|
549
|
+
"icon": "\U0001f680",
|
|
550
|
+
"description": (
|
|
551
|
+
"Scaffold a new project, write tests, build code, run security "
|
|
552
|
+
"scans, and generate deployment files \u2014 the complete "
|
|
553
|
+
"development pipeline."
|
|
554
|
+
),
|
|
555
|
+
"audience": "Developer, Architect",
|
|
556
|
+
"estimated_time": "4-8 hours",
|
|
557
|
+
"steps": [
|
|
558
|
+
{
|
|
559
|
+
"name": "Create Project",
|
|
560
|
+
"tool": "project_create.py",
|
|
561
|
+
"desc": "Initialize project with compliance scaffolding",
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
"name": "Write Tests",
|
|
565
|
+
"tool": "test_writer.py",
|
|
566
|
+
"desc": "Generate test cases from requirements",
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
"name": "Build Code",
|
|
570
|
+
"tool": "code_generator.py",
|
|
571
|
+
"desc": "TDD: write code to pass tests",
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"name": "Run Security Scans",
|
|
575
|
+
"tool": "sast_runner.py + dependency_auditor.py",
|
|
576
|
+
"desc": "Check for vulnerabilities",
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
"name": "Generate IaC",
|
|
580
|
+
"tool": "terraform_generator.py + k8s_generator.py",
|
|
581
|
+
"desc": "Create deployment infrastructure",
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
"name": "Deploy",
|
|
585
|
+
"tool": "pipeline_generator.py",
|
|
586
|
+
"desc": "Generate CI/CD pipeline",
|
|
587
|
+
},
|
|
588
|
+
],
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
"id": "intake_to_approval",
|
|
592
|
+
"title": "Requirements to Approval",
|
|
593
|
+
"icon": "\U0001f4cb",
|
|
594
|
+
"description": (
|
|
595
|
+
"Capture requirements through AI-guided conversation, analyze "
|
|
596
|
+
"gaps, decompose into work items, generate COAs, and route for "
|
|
597
|
+
"approval."
|
|
598
|
+
),
|
|
599
|
+
"audience": "Program Manager, Requirements Analyst",
|
|
600
|
+
"estimated_time": "2-6 hours",
|
|
601
|
+
"steps": [
|
|
602
|
+
{
|
|
603
|
+
"name": "Start Intake Session",
|
|
604
|
+
"tool": "intake_engine.py --new",
|
|
605
|
+
"desc": "AI-guided requirements conversation",
|
|
606
|
+
},
|
|
607
|
+
{
|
|
608
|
+
"name": "Upload Documents",
|
|
609
|
+
"tool": "document_extractor.py --upload",
|
|
610
|
+
"desc": "Extract requirements from SOW/CDD",
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
"name": "Detect Gaps",
|
|
614
|
+
"tool": "gap_detector.py",
|
|
615
|
+
"desc": "Find missing or vague requirements",
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
"name": "Score Readiness",
|
|
619
|
+
"tool": "readiness_scorer.py",
|
|
620
|
+
"desc": "Check if requirements are complete",
|
|
621
|
+
},
|
|
622
|
+
{
|
|
623
|
+
"name": "Decompose Work",
|
|
624
|
+
"tool": "decomposition_engine.py",
|
|
625
|
+
"desc": "Break into epics, features, stories",
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"name": "Generate COAs",
|
|
629
|
+
"tool": "coa_generator.py",
|
|
630
|
+
"desc": "Create 3 cost/schedule options",
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
"name": "Submit for Approval",
|
|
634
|
+
"tool": "approval_manager.py",
|
|
635
|
+
"desc": "Route to reviewers",
|
|
636
|
+
},
|
|
637
|
+
],
|
|
638
|
+
},
|
|
639
|
+
{
|
|
640
|
+
"id": "modernize_legacy",
|
|
641
|
+
"title": "Modernize Legacy App",
|
|
642
|
+
"icon": "\U0001f504",
|
|
643
|
+
"description": (
|
|
644
|
+
"Analyze a legacy application, assess the best migration "
|
|
645
|
+
"strategy (7Rs), create a migration plan, and generate "
|
|
646
|
+
"modernized code while maintaining ATO compliance."
|
|
647
|
+
),
|
|
648
|
+
"audience": "Architect, Developer, ISSO",
|
|
649
|
+
"estimated_time": "1-3 weeks",
|
|
650
|
+
"steps": [
|
|
651
|
+
{
|
|
652
|
+
"name": "Register & Analyze",
|
|
653
|
+
"tool": "legacy_analyzer.py",
|
|
654
|
+
"desc": "Scan codebase for complexity and tech debt",
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
"name": "Extract Architecture",
|
|
658
|
+
"tool": "architecture_extractor.py",
|
|
659
|
+
"desc": "Map components, dependencies, data flows",
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
"name": "UI Analysis",
|
|
663
|
+
"tool": "ui_analyzer.py",
|
|
664
|
+
"desc": "Analyze UI screenshots for complexity",
|
|
665
|
+
},
|
|
666
|
+
{
|
|
667
|
+
"name": "7R Assessment",
|
|
668
|
+
"tool": "seven_r_assessor.py",
|
|
669
|
+
"desc": "Score: Rehost, Replatform, Refactor, Rearchitect...",
|
|
670
|
+
},
|
|
671
|
+
{
|
|
672
|
+
"name": "Create Migration Plan",
|
|
673
|
+
"tool": "migration_code_generator.py",
|
|
674
|
+
"desc": "Generate migration code and plan",
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
"name": "Validate Compliance",
|
|
678
|
+
"tool": "compliance_bridge.py",
|
|
679
|
+
"desc": "Ensure ATO coverage maintained",
|
|
680
|
+
},
|
|
681
|
+
],
|
|
682
|
+
},
|
|
683
|
+
]
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
# ---------------------------------------------------------------------------
|
|
687
|
+
# 5. Wizard Logic Data
|
|
688
|
+
# ---------------------------------------------------------------------------
|
|
689
|
+
|
|
690
|
+
WIZARD_STEPS = [
|
|
691
|
+
{
|
|
692
|
+
"question": "What are you trying to do?",
|
|
693
|
+
"options": [
|
|
694
|
+
{
|
|
695
|
+
"id": "build",
|
|
696
|
+
"icon": "\U0001f528",
|
|
697
|
+
"title": "Build a New Application",
|
|
698
|
+
"desc": "Start a new project from scratch with compliance built in",
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
"id": "modernize",
|
|
702
|
+
"icon": "\U0001f504",
|
|
703
|
+
"title": "Modernize a Legacy App",
|
|
704
|
+
"desc": "Migrate an existing system to modern architecture",
|
|
705
|
+
},
|
|
706
|
+
{
|
|
707
|
+
"id": "comply",
|
|
708
|
+
"icon": "\U0001f6e1",
|
|
709
|
+
"title": "Get ATO / Compliance",
|
|
710
|
+
"desc": "Generate security artifacts and pass compliance gates",
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
"id": "requirements",
|
|
714
|
+
"icon": "\U0001f4cb",
|
|
715
|
+
"title": "Capture Requirements",
|
|
716
|
+
"desc": "Gather and structure requirements from stakeholders",
|
|
717
|
+
},
|
|
718
|
+
],
|
|
719
|
+
},
|
|
720
|
+
{
|
|
721
|
+
"question": "What is your role?",
|
|
722
|
+
"options": [
|
|
723
|
+
{
|
|
724
|
+
"id": "pm",
|
|
725
|
+
"icon": "\U0001f4ca",
|
|
726
|
+
"title": "Program Manager",
|
|
727
|
+
"desc": "I manage timelines, budgets, and stakeholders",
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
"id": "developer",
|
|
731
|
+
"icon": "\U0001f4bb",
|
|
732
|
+
"title": "Developer / Architect",
|
|
733
|
+
"desc": "I write code and design systems",
|
|
734
|
+
},
|
|
735
|
+
{
|
|
736
|
+
"id": "isso",
|
|
737
|
+
"icon": "\U0001f510",
|
|
738
|
+
"title": "ISSO / Security Officer",
|
|
739
|
+
"desc": "I manage security and compliance",
|
|
740
|
+
},
|
|
741
|
+
{
|
|
742
|
+
"id": "co",
|
|
743
|
+
"icon": "\U0001f4dd",
|
|
744
|
+
"title": "Contracting Officer",
|
|
745
|
+
"desc": "I manage contracts and vendor requirements",
|
|
746
|
+
},
|
|
747
|
+
{
|
|
748
|
+
"id": "analyst",
|
|
749
|
+
"icon": "\U0001f50d",
|
|
750
|
+
"title": "Analyst",
|
|
751
|
+
"desc": "I research data, requirements, and threats",
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
"id": "solutions_architect",
|
|
755
|
+
"icon": "\U0001f3d7",
|
|
756
|
+
"title": "Solutions Architect",
|
|
757
|
+
"desc": "I design technical solutions and architectures",
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
"id": "sales_engineer",
|
|
761
|
+
"icon": "\U0001f4e1",
|
|
762
|
+
"title": "Sales Engineer",
|
|
763
|
+
"desc": "I demo capabilities and support proposals",
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
"id": "innovator",
|
|
767
|
+
"icon": "\U0001f4a1",
|
|
768
|
+
"title": "Innovator",
|
|
769
|
+
"desc": "I explore emerging tech and prototype ideas",
|
|
770
|
+
},
|
|
771
|
+
{
|
|
772
|
+
"id": "biz_dev",
|
|
773
|
+
"icon": "\U0001f91d",
|
|
774
|
+
"title": "Business Development",
|
|
775
|
+
"desc": "I identify opportunities and grow partnerships",
|
|
776
|
+
},
|
|
777
|
+
],
|
|
778
|
+
},
|
|
779
|
+
{
|
|
780
|
+
"question": "What classification level?",
|
|
781
|
+
"options": [
|
|
782
|
+
{
|
|
783
|
+
"id": "il2",
|
|
784
|
+
"icon": "\U0001f310",
|
|
785
|
+
"title": "IL2 \u2014 Public",
|
|
786
|
+
"desc": "Non-sensitive data, commercial cloud OK",
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
"id": "il4",
|
|
790
|
+
"icon": "\U0001f512",
|
|
791
|
+
"title": "IL4 \u2014 CUI (GovCloud)",
|
|
792
|
+
"desc": "Controlled Unclassified Information in AWS GovCloud",
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
"id": "il5",
|
|
796
|
+
"icon": "\U0001f510",
|
|
797
|
+
"title": "IL5 \u2014 CUI (Dedicated)",
|
|
798
|
+
"desc": "CUI requiring dedicated GovCloud infrastructure",
|
|
799
|
+
},
|
|
800
|
+
{
|
|
801
|
+
"id": "il6",
|
|
802
|
+
"icon": "\U0001f6d1",
|
|
803
|
+
"title": "IL6 \u2014 SECRET",
|
|
804
|
+
"desc": "Classified data requiring SIPR network",
|
|
805
|
+
},
|
|
806
|
+
],
|
|
807
|
+
},
|
|
808
|
+
]
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
# ---------------------------------------------------------------------------
|
|
812
|
+
# 6. Path Recommendation Logic
|
|
813
|
+
# ---------------------------------------------------------------------------
|
|
814
|
+
|
|
815
|
+
# Lookup table: (goal, role) -> path_id
|
|
816
|
+
# When the combination has a special override, it is listed here.
|
|
817
|
+
# Otherwise the default goal-based mapping applies.
|
|
818
|
+
_GOAL_ROLE_OVERRIDES = {
|
|
819
|
+
("build", "pm"): "intake_to_approval",
|
|
820
|
+
("build", "sales_engineer"): "intake_to_approval",
|
|
821
|
+
("build", "biz_dev"): "intake_to_approval",
|
|
822
|
+
("comply", "developer"): "build_and_ship",
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
# Default mapping: goal -> path_id
|
|
826
|
+
_GOAL_DEFAULTS = {
|
|
827
|
+
"build": "build_and_ship",
|
|
828
|
+
"comply": "quick_ato",
|
|
829
|
+
"requirements": "intake_to_approval",
|
|
830
|
+
"modernize": "modernize_legacy",
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
# Classification-specific notes
|
|
834
|
+
_CLASSIFICATION_NOTES = {
|
|
835
|
+
"il2": "IL2 (public) has the fewest compliance requirements. FedRAMP Low may apply.",
|
|
836
|
+
"il4": "IL4 (CUI / GovCloud) requires FedRAMP Moderate and NIST 800-171.",
|
|
837
|
+
"il5": "IL5 (CUI / Dedicated) requires FedRAMP Moderate+ on dedicated infrastructure.",
|
|
838
|
+
"il6": (
|
|
839
|
+
"IL6 (SECRET) requires SIPR network, NSA Type 1 encryption, FedRAMP High, "
|
|
840
|
+
"and air-gapped CI/CD. Plan for additional lead time."
|
|
841
|
+
),
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
def _find_path(path_id):
|
|
846
|
+
"""Return the QUICK_PATHS entry matching *path_id*, or None."""
|
|
847
|
+
for p in QUICK_PATHS:
|
|
848
|
+
if p["id"] == path_id:
|
|
849
|
+
return p
|
|
850
|
+
return None
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
def recommend_path(goal, role, classification):
|
|
854
|
+
"""Given wizard answers, return a recommended quick path and first steps.
|
|
855
|
+
|
|
856
|
+
Args:
|
|
857
|
+
goal: One of "build", "modernize", "comply", "requirements".
|
|
858
|
+
role: One of "pm", "developer", "isso", "co".
|
|
859
|
+
classification: One of "il2", "il4", "il5", "il6".
|
|
860
|
+
|
|
861
|
+
Returns:
|
|
862
|
+
dict with keys:
|
|
863
|
+
path_id - id of the recommended QUICK_PATHS entry
|
|
864
|
+
path_name - human-readable title
|
|
865
|
+
steps - list of step dicts from the quick path
|
|
866
|
+
first_command - suggested CLI command to start
|
|
867
|
+
notes - classification-specific advisory text
|
|
868
|
+
"""
|
|
869
|
+
goal = str(goal).lower().strip()
|
|
870
|
+
role = str(role).lower().strip()
|
|
871
|
+
classification = str(classification).lower().strip()
|
|
872
|
+
|
|
873
|
+
# Determine path_id: check overrides first, then goal defaults
|
|
874
|
+
path_id = _GOAL_ROLE_OVERRIDES.get((goal, role))
|
|
875
|
+
if path_id is None:
|
|
876
|
+
path_id = _GOAL_DEFAULTS.get(goal, "build_and_ship")
|
|
877
|
+
|
|
878
|
+
path = _find_path(path_id)
|
|
879
|
+
if path is None:
|
|
880
|
+
# Fallback to build_and_ship if somehow nothing matched
|
|
881
|
+
path = _find_path("build_and_ship") or QUICK_PATHS[0]
|
|
882
|
+
path_id = path["id"]
|
|
883
|
+
|
|
884
|
+
# Build the first command suggestion
|
|
885
|
+
first_step = path["steps"][0] if path["steps"] else {}
|
|
886
|
+
tool_name = first_step.get("tool", "")
|
|
887
|
+
first_command = f"python tools/... {tool_name}" if tool_name else ""
|
|
888
|
+
|
|
889
|
+
# Specific first-command overrides for common workflows
|
|
890
|
+
_FIRST_COMMANDS = {
|
|
891
|
+
"quick_ato": (
|
|
892
|
+
"python tools/compliance/fips199_categorizer.py "
|
|
893
|
+
"--project-id <your-project-id> --list-catalog"
|
|
894
|
+
),
|
|
895
|
+
"build_and_ship": (
|
|
896
|
+
"python tools/project/project_create.py "
|
|
897
|
+
"--name <app-name> --type microservice"
|
|
898
|
+
),
|
|
899
|
+
"intake_to_approval": (
|
|
900
|
+
"python tools/requirements/intake_engine.py "
|
|
901
|
+
"--project-id <your-project-id> --customer-name <name> "
|
|
902
|
+
"--customer-org <org> --impact-level "
|
|
903
|
+
+ classification.upper()
|
|
904
|
+
+ " --json"
|
|
905
|
+
),
|
|
906
|
+
"modernize_legacy": (
|
|
907
|
+
"python tools/modernization/legacy_analyzer.py "
|
|
908
|
+
"--project-id <your-project-id> --app-id <app-id> "
|
|
909
|
+
"--source-path /path/to/legacy"
|
|
910
|
+
),
|
|
911
|
+
}
|
|
912
|
+
first_command = _FIRST_COMMANDS.get(path_id, first_command)
|
|
913
|
+
|
|
914
|
+
notes = _CLASSIFICATION_NOTES.get(classification, "")
|
|
915
|
+
|
|
916
|
+
return {
|
|
917
|
+
"path_id": path_id,
|
|
918
|
+
"path_name": path["title"],
|
|
919
|
+
"steps": path["steps"],
|
|
920
|
+
"first_command": first_command,
|
|
921
|
+
"notes": notes,
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
# ---------------------------------------------------------------------------
|
|
926
|
+
# 7. Flask Registration
|
|
927
|
+
# ---------------------------------------------------------------------------
|
|
928
|
+
|
|
929
|
+
def register_ux_filters(app):
|
|
930
|
+
"""Register all UX helpers with a Flask application.
|
|
931
|
+
|
|
932
|
+
Adds Jinja2 template filters and global variables so templates can use:
|
|
933
|
+
{{ value | friendly_time }}
|
|
934
|
+
{{ value | short_time }}
|
|
935
|
+
{{ value | time_ago }}
|
|
936
|
+
{{ "ATO" | glossary }}
|
|
937
|
+
{{ score_display(0.78, 0.7, "Readiness") }}
|
|
938
|
+
{{ ERROR_RECOVERY["cat1_stig"]["fix"] }}
|
|
939
|
+
{{ QUICK_PATHS[0]["title"] }}
|
|
940
|
+
{{ WIZARD_STEPS[0]["question"] }}
|
|
941
|
+
|
|
942
|
+
Args:
|
|
943
|
+
app: A Flask application instance.
|
|
944
|
+
"""
|
|
945
|
+
# Template filters (used with the pipe operator: {{ val | filter }})
|
|
946
|
+
app.jinja_env.filters["friendly_time"] = format_timestamp
|
|
947
|
+
app.jinja_env.filters["short_time"] = format_timestamp_short
|
|
948
|
+
app.jinja_env.filters["time_ago"] = format_time_ago
|
|
949
|
+
app.jinja_env.filters["glossary"] = glossary_term
|
|
950
|
+
|
|
951
|
+
# Template globals (callable directly in templates)
|
|
952
|
+
app.jinja_env.globals["score_display"] = score_display
|
|
953
|
+
app.jinja_env.globals["ERROR_RECOVERY"] = ERROR_RECOVERY
|
|
954
|
+
app.jinja_env.globals["QUICK_PATHS"] = QUICK_PATHS
|
|
955
|
+
app.jinja_env.globals["WIZARD_STEPS"] = WIZARD_STEPS
|
|
956
|
+
app.jinja_env.globals["GLOSSARY"] = GLOSSARY
|
|
957
|
+
app.jinja_env.globals["recommend_path"] = recommend_path
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
# ---------------------------------------------------------------------------
|
|
961
|
+
# CUI // SP-CTI
|
|
962
|
+
# ---------------------------------------------------------------------------
|