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,1734 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# CUI // SP-CTI
|
|
3
|
+
# Controlled by: Department of Defense
|
|
4
|
+
# CUI Category: CTI
|
|
5
|
+
# Distribution: D
|
|
6
|
+
# POC: ICDEV System Administrator
|
|
7
|
+
"""Dynamic CLAUDE.md Generator - creates adaptive documentation for child apps.
|
|
8
|
+
|
|
9
|
+
Architecture Decision D26: Jinja2 templates produce CLAUDE.md that documents
|
|
10
|
+
only present capabilities. Never references tools, agents, or features not
|
|
11
|
+
included in the child app.
|
|
12
|
+
|
|
13
|
+
Consumes a blueprint JSON (output of tools/builder/app_blueprint.py) and
|
|
14
|
+
renders a project-specific CLAUDE.md file. When Jinja2 is available the full
|
|
15
|
+
template engine is used; otherwise a deterministic string-based fallback
|
|
16
|
+
produces equivalent output.
|
|
17
|
+
|
|
18
|
+
Usage:
|
|
19
|
+
# Render to stdout
|
|
20
|
+
python tools/builder/claude_md_generator.py --blueprint /path/to/blueprint.json
|
|
21
|
+
|
|
22
|
+
# Render to file
|
|
23
|
+
python tools/builder/claude_md_generator.py --blueprint /path/to/blueprint.json \
|
|
24
|
+
--output /path/to/child-app/CLAUDE.md
|
|
25
|
+
|
|
26
|
+
# JSON envelope (metadata + content)
|
|
27
|
+
python tools/builder/claude_md_generator.py --blueprint /path/to/blueprint.json --json
|
|
28
|
+
|
|
29
|
+
Classification: CUI // SP-CTI
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
import argparse
|
|
33
|
+
import hashlib
|
|
34
|
+
import json
|
|
35
|
+
import logging
|
|
36
|
+
import sys
|
|
37
|
+
from datetime import datetime, timezone
|
|
38
|
+
from pathlib import Path
|
|
39
|
+
from typing import Any, Dict, List
|
|
40
|
+
from icdev._paths import get_project_root
|
|
41
|
+
|
|
42
|
+
# ---------------------------------------------------------------------------
|
|
43
|
+
# Configuration
|
|
44
|
+
# ---------------------------------------------------------------------------
|
|
45
|
+
|
|
46
|
+
BASE_DIR = get_project_root()
|
|
47
|
+
logger = logging.getLogger("icdev.claude_md_generator")
|
|
48
|
+
|
|
49
|
+
try:
|
|
50
|
+
from jinja2 import Environment, BaseLoader
|
|
51
|
+
_HAS_JINJA2 = True
|
|
52
|
+
except ImportError:
|
|
53
|
+
_HAS_JINJA2 = False
|
|
54
|
+
Environment = None # type: ignore[assignment,misc]
|
|
55
|
+
|
|
56
|
+
try:
|
|
57
|
+
from icdev.tools.audit.audit_logger import log_event as audit_log_event
|
|
58
|
+
except ImportError:
|
|
59
|
+
def audit_log_event(**kwargs): # type: ignore[misc]
|
|
60
|
+
logger.debug("audit_logger unavailable -- skipping audit event")
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
# ===========================================================================
|
|
64
|
+
# JINJA2 TEMPLATE
|
|
65
|
+
# ===========================================================================
|
|
66
|
+
# The template is stored as a Python string constant so the tool remains a
|
|
67
|
+
# single self-contained file with zero filesystem dependencies beyond the
|
|
68
|
+
# blueprint JSON.
|
|
69
|
+
#
|
|
70
|
+
# Template variables come directly from the blueprint dict produced by
|
|
71
|
+
# tools/builder/app_blueprint.py. All sections are conditionally rendered
|
|
72
|
+
# so the output never references capabilities, agents, or tools that are
|
|
73
|
+
# absent from the child app.
|
|
74
|
+
# ===========================================================================
|
|
75
|
+
|
|
76
|
+
CLAUDE_MD_TEMPLATE = r"""# CLAUDE.md
|
|
77
|
+
|
|
78
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with {{ app_name }}.
|
|
79
|
+
{% if demo_mode %}
|
|
80
|
+
|
|
81
|
+
> **DEMONSTRATION ONLY** — This application is a demo. It uses PUBLIC classification
|
|
82
|
+
> and must NOT be used for operational, classified, or sensitive data. All CUI/SECRET
|
|
83
|
+
> banners and compliance artifacts are simulated for demonstration purposes.
|
|
84
|
+
{% endif %}
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Quick Reference
|
|
89
|
+
|
|
90
|
+
### Commands
|
|
91
|
+
```bash
|
|
92
|
+
# Memory system
|
|
93
|
+
python tools/memory/memory_read.py --format markdown # Load all memory
|
|
94
|
+
python tools/memory/memory_write.py --content "text" --type event # Write to daily log + DB
|
|
95
|
+
python tools/memory/memory_write.py --content "text" --type fact --importance 7 # Store a fact
|
|
96
|
+
python tools/memory/memory_write.py --update-memory --content "text" --section user_preferences # Update MEMORY.md
|
|
97
|
+
python tools/memory/memory_db.py --action search --query "keyword" # Keyword search
|
|
98
|
+
python tools/memory/semantic_search.py --query "concept" # Semantic search (requires OpenAI key)
|
|
99
|
+
python tools/memory/hybrid_search.py --query "query" # Best: combined keyword + semantic
|
|
100
|
+
python tools/memory/embed_memory.py --all # Generate embeddings for all entries
|
|
101
|
+
```
|
|
102
|
+
{% if capabilities.get("testing", False) %}
|
|
103
|
+
|
|
104
|
+
### Testing Commands
|
|
105
|
+
```bash
|
|
106
|
+
python tools/testing/health_check.py # Full system health check
|
|
107
|
+
python tools/testing/health_check.py --json # JSON output
|
|
108
|
+
python tools/testing/test_orchestrator.py --project-dir /path/to/project
|
|
109
|
+
python tools/testing/e2e_runner.py --discover # List available E2E test specs
|
|
110
|
+
python tools/testing/e2e_runner.py --run-all # Execute all E2E tests
|
|
111
|
+
```
|
|
112
|
+
{% endif %}
|
|
113
|
+
{% if capabilities.get("compliance", False) %}
|
|
114
|
+
|
|
115
|
+
### Compliance Commands
|
|
116
|
+
```bash
|
|
117
|
+
python tools/compliance/ssp_generator.py --project-id "{{ app_name }}"
|
|
118
|
+
python tools/compliance/poam_generator.py --project-id "{{ app_name }}"
|
|
119
|
+
python tools/compliance/stig_checker.py --project-id "{{ app_name }}"
|
|
120
|
+
python tools/compliance/sbom_generator.py --project-dir "/path/to/project"
|
|
121
|
+
python tools/compliance/cui_marker.py --file "/path/to/file" --marking "{{ classification }} // SP-CTI"
|
|
122
|
+
python tools/compliance/nist_lookup.py --control "AC-2"
|
|
123
|
+
python tools/compliance/control_mapper.py --activity "code.commit" --project-id "{{ app_name }}"
|
|
124
|
+
python tools/compliance/crosswalk_engine.py --control AC-2
|
|
125
|
+
python tools/compliance/crosswalk_engine.py --project-id "{{ app_name }}" --coverage
|
|
126
|
+
python tools/compliance/fedramp_assessor.py --project-id "{{ app_name }}" --baseline moderate
|
|
127
|
+
python tools/compliance/cmmc_assessor.py --project-id "{{ app_name }}" --level 2
|
|
128
|
+
python tools/compliance/oscal_generator.py --project-id "{{ app_name }}" --artifact ssp
|
|
129
|
+
python tools/compliance/classification_manager.py --impact-level {{ impact_level }}
|
|
130
|
+
```
|
|
131
|
+
{% endif %}
|
|
132
|
+
{% if capabilities.get("security", False) %}
|
|
133
|
+
|
|
134
|
+
### Security Commands
|
|
135
|
+
```bash
|
|
136
|
+
python tools/security/sast_runner.py --project-dir "/path"
|
|
137
|
+
python tools/security/dependency_auditor.py --project-dir "/path"
|
|
138
|
+
python tools/security/secret_detector.py --project-dir "/path"
|
|
139
|
+
python tools/security/container_scanner.py --image "{{ app_name }}:latest"
|
|
140
|
+
```
|
|
141
|
+
{% endif %}
|
|
142
|
+
{% if capabilities.get("ai_security", False) %}
|
|
143
|
+
|
|
144
|
+
### AI Security Commands
|
|
145
|
+
```bash
|
|
146
|
+
python tools/security/prompt_injection_detector.py --text "input" --json
|
|
147
|
+
python tools/security/prompt_injection_detector.py --project-dir /path --gate --json
|
|
148
|
+
python tools/security/ai_telemetry_logger.py --summary --json
|
|
149
|
+
python tools/security/ai_telemetry_logger.py --anomalies --window-hours 24 --json
|
|
150
|
+
python tools/security/ai_bom_generator.py --project-id "{{ app_name }}" --project-dir . --json
|
|
151
|
+
python tools/compliance/atlas_assessor.py --project-id "{{ app_name }}" --json
|
|
152
|
+
python tools/compliance/owasp_llm_assessor.py --project-id "{{ app_name }}" --json
|
|
153
|
+
python tools/compliance/owasp_agentic_assessor.py --project-id "{{ app_name }}" --json
|
|
154
|
+
python tools/security/agent_trust_scorer.py --all --json
|
|
155
|
+
```
|
|
156
|
+
{% endif %}
|
|
157
|
+
{% if capabilities.get("ricoas", False) %}
|
|
158
|
+
|
|
159
|
+
### Requirements Intake (RICOAS) Commands
|
|
160
|
+
```bash
|
|
161
|
+
python tools/requirements/intake_engine.py --project-id "{{ app_name }}" --customer-name "Name" --customer-org "Org" --impact-level {{ impact_level }} --json
|
|
162
|
+
python tools/requirements/gap_detector.py --session-id "<id>" --check-security --check-compliance --json
|
|
163
|
+
python tools/requirements/readiness_scorer.py --session-id "<id>" --json
|
|
164
|
+
python tools/requirements/decomposition_engine.py --session-id "<id>" --level story --generate-bdd --json
|
|
165
|
+
python tools/requirements/boundary_analyzer.py --project-id "{{ app_name }}" --list-assessments --json
|
|
166
|
+
python tools/supply_chain/dependency_graph.py --project-id "{{ app_name }}" --build-graph --json
|
|
167
|
+
python tools/supply_chain/scrm_assessor.py --project-id "{{ app_name }}" --aggregate --json
|
|
168
|
+
python tools/supply_chain/cve_triager.py --project-id "{{ app_name }}" --sla-check --json
|
|
169
|
+
python tools/simulation/simulation_engine.py --project-id "{{ app_name }}" --create-scenario --scenario-name "Scenario" --scenario-type what_if --json
|
|
170
|
+
python tools/simulation/monte_carlo.py --scenario-id "<id>" --dimension schedule --iterations 10000 --json
|
|
171
|
+
python tools/simulation/coa_generator.py --session-id "<id>" --generate-3-coas --simulate --json
|
|
172
|
+
```
|
|
173
|
+
{% endif %}
|
|
174
|
+
{% if capabilities.get("devsecops_zta", False) %}
|
|
175
|
+
|
|
176
|
+
### DevSecOps & ZTA Commands
|
|
177
|
+
```bash
|
|
178
|
+
python tools/devsecops/profile_manager.py --project-id "{{ app_name }}" --assess --json
|
|
179
|
+
python tools/devsecops/pipeline_security_generator.py --project-id "{{ app_name }}" --json
|
|
180
|
+
python tools/devsecops/policy_generator.py --project-id "{{ app_name }}" --engine kyverno --json
|
|
181
|
+
python tools/devsecops/zta_maturity_scorer.py --project-id "{{ app_name }}" --all --json
|
|
182
|
+
python tools/compliance/nist_800_207_assessor.py --project-id "{{ app_name }}" --json
|
|
183
|
+
python tools/devsecops/service_mesh_generator.py --project-id "{{ app_name }}" --mesh istio --json
|
|
184
|
+
```
|
|
185
|
+
{% endif %}
|
|
186
|
+
{% if capabilities.get("observability", False) %}
|
|
187
|
+
|
|
188
|
+
### Observability & XAI Commands
|
|
189
|
+
```bash
|
|
190
|
+
python tools/observability/shap/agent_shap.py --project-id "{{ app_name }}" --last-n 10 --json
|
|
191
|
+
python tools/observability/provenance/prov_query.py --entity-id "<id>" --direction backward --json
|
|
192
|
+
python tools/observability/provenance/prov_export.py --project-id "{{ app_name }}" --json
|
|
193
|
+
python tools/compliance/xai_assessor.py --project-id "{{ app_name }}" --json
|
|
194
|
+
```
|
|
195
|
+
{% endif %}
|
|
196
|
+
{% if capabilities.get("code_intelligence", False) %}
|
|
197
|
+
|
|
198
|
+
### Code Intelligence Commands
|
|
199
|
+
```bash
|
|
200
|
+
python tools/analysis/code_analyzer.py --project-dir tools/ --json
|
|
201
|
+
python tools/analysis/code_analyzer.py --project-dir tools/ --store --json
|
|
202
|
+
python tools/analysis/code_analyzer.py --project-dir tools/ --trend --json
|
|
203
|
+
python tools/analysis/runtime_feedback.py --health --function analyze_code --json
|
|
204
|
+
```
|
|
205
|
+
{% endif %}
|
|
206
|
+
{% if capabilities.get("mbse", False) %}
|
|
207
|
+
|
|
208
|
+
### MBSE Commands
|
|
209
|
+
```bash
|
|
210
|
+
python tools/mbse/xmi_parser.py --project-id "{{ app_name }}" --file /path/model.xmi --json
|
|
211
|
+
python tools/mbse/reqif_parser.py --project-id "{{ app_name }}" --file /path/reqs.reqif --json
|
|
212
|
+
python tools/mbse/digital_thread.py --project-id "{{ app_name }}" auto-link --json
|
|
213
|
+
python tools/mbse/digital_thread.py --project-id "{{ app_name }}" coverage --json
|
|
214
|
+
python tools/mbse/model_code_generator.py --project-id "{{ app_name }}" --language python --output ./src
|
|
215
|
+
python tools/mbse/sync_engine.py --project-id "{{ app_name }}" detect-drift --json
|
|
216
|
+
python tools/mbse/des_assessor.py --project-id "{{ app_name }}" --project-dir /path --json
|
|
217
|
+
```
|
|
218
|
+
{% endif %}
|
|
219
|
+
{% if capabilities.get("infra", False) %}
|
|
220
|
+
|
|
221
|
+
### Infrastructure Commands
|
|
222
|
+
```bash
|
|
223
|
+
python tools/infra/terraform_generator.py --project-id "{{ app_name }}"
|
|
224
|
+
python tools/infra/ansible_generator.py --project-id "{{ app_name }}"
|
|
225
|
+
python tools/infra/k8s_generator.py --project-id "{{ app_name }}"
|
|
226
|
+
python tools/infra/pipeline_generator.py --project-id "{{ app_name }}"
|
|
227
|
+
python tools/infra/rollback.py --deployment-id "deploy-123"
|
|
228
|
+
```
|
|
229
|
+
{% endif %}
|
|
230
|
+
{% if capabilities.get("cicd", False) %}
|
|
231
|
+
|
|
232
|
+
### CI/CD Commands
|
|
233
|
+
```bash
|
|
234
|
+
python tools/ci/triggers/webhook_server.py # Start webhook server
|
|
235
|
+
python tools/ci/triggers/poll_trigger.py # Start issue polling
|
|
236
|
+
python tools/ci/workflows/icdev_sdlc.py 123 # Run full SDLC pipeline
|
|
237
|
+
```
|
|
238
|
+
{% endif %}
|
|
239
|
+
{% if capabilities.get("dashboard", False) %}
|
|
240
|
+
|
|
241
|
+
### Dashboard
|
|
242
|
+
```bash
|
|
243
|
+
python tools/dashboard/app.py # Start web dashboard on port 5000
|
|
244
|
+
```
|
|
245
|
+
{% endif %}
|
|
246
|
+
|
|
247
|
+
{% if app_description %}
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## {{ app_name }} — Overview
|
|
251
|
+
|
|
252
|
+
{{ app_description }}
|
|
253
|
+
{% endif %}
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Architecture: GOTCHA Framework
|
|
258
|
+
|
|
259
|
+
This is a 6-layer agentic system. The AI (you) is the orchestration layer -- you read goals, call tools, apply args, reference context, and use hard prompts. You never execute work directly; you delegate to deterministic Python scripts.
|
|
260
|
+
|
|
261
|
+
**Why:** LLMs are probabilistic. Business logic must be deterministic. 90% accuracy/step = ~59% over 5 steps. Separation of concerns fixes this.
|
|
262
|
+
|
|
263
|
+
### The 6 Layers
|
|
264
|
+
|
|
265
|
+
| Layer | Directory | Role |
|
|
266
|
+
|-------|-----------|------|
|
|
267
|
+
| **Goals** | `goals/` | Process definitions -- what to achieve, which tools to use, expected outputs, edge cases |
|
|
268
|
+
| **Orchestration** | *(you)* | Read goal -> decide tool order -> apply args -> reference context -> handle errors |
|
|
269
|
+
| **Tools** | `tools/` | Python scripts, one job each. Deterministic. Don't think, just execute. |
|
|
270
|
+
| **Args** | `args/` | YAML/JSON behavior settings (themes, modes, schedules). Change behavior without editing goals/tools |
|
|
271
|
+
| **Context** | `context/` | Static reference material (tone rules, writing samples, ICP descriptions, case studies) |
|
|
272
|
+
| **Hard Prompts** | `hardprompts/` | Reusable LLM instruction templates (outline->post, rewrite-in-voice, summarize) |
|
|
273
|
+
|
|
274
|
+
### Key Files
|
|
275
|
+
|
|
276
|
+
- `goals/manifest.md` -- Index of all goal workflows. Check before starting any task.
|
|
277
|
+
- `tools/manifest.md` -- Master list of all tools. Check before writing a new script.
|
|
278
|
+
- `memory/MEMORY.md` -- Curated long-term facts/preferences, read at session start.
|
|
279
|
+
- `memory/logs/YYYY-MM-DD.md` -- Daily session logs.
|
|
280
|
+
- `.env` -- API keys and environment variables.
|
|
281
|
+
- `.tmp/` -- Disposable scratch work. Never store important data here.
|
|
282
|
+
|
|
283
|
+
### Memory System Architecture
|
|
284
|
+
|
|
285
|
+
Dual storage: markdown files (human-readable) + SQLite databases (searchable).
|
|
286
|
+
|
|
287
|
+
**Databases:**
|
|
288
|
+
- `data/memory.db` -- `memory_entries` (with embeddings), `daily_logs`, `memory_access_log`
|
|
289
|
+
- `data/activity.db` -- `tasks` table for tracking
|
|
290
|
+
|
|
291
|
+
**Memory types:** fact, preference, event, insight, task, relationship
|
|
292
|
+
|
|
293
|
+
**Search ranking:** Hybrid search uses 0.7 * BM25 (keyword) + 0.3 * semantic (vector). Configurable via `--bm25-weight` and `--semantic-weight` flags.
|
|
294
|
+
|
|
295
|
+
**Embeddings:** OpenAI text-embedding-3-small (1536 dims), stored as BLOBs in SQLite.
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## How to Operate
|
|
300
|
+
|
|
301
|
+
1. **Check goals first** -- Read `goals/manifest.md` before starting a task. If a goal exists, follow it.
|
|
302
|
+
2. **Check tools first** -- Read `tools/manifest.md` before writing new code. If you create a new tool, add it to the manifest.
|
|
303
|
+
3. **When tools fail** -- Read the error, fix the tool, update the goal with what you learned (rate limits, batching, timing).
|
|
304
|
+
4. **Goals are living docs** -- Update when better approaches emerge. Never modify/create goals without explicit permission.
|
|
305
|
+
5. **When stuck** -- Explain what is missing and what you need. Do not guess or invent capabilities.
|
|
306
|
+
|
|
307
|
+
### Session Start Protocol
|
|
308
|
+
|
|
309
|
+
1. Read `memory/MEMORY.md` for long-term context
|
|
310
|
+
2. Read today's daily log (`memory/logs/YYYY-MM-DD.md`)
|
|
311
|
+
3. Read yesterday's log for continuity
|
|
312
|
+
4. Or run: `python tools/memory/memory_read.py --format markdown`
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## {{ app_name }} System
|
|
317
|
+
{% if classification %}
|
|
318
|
+
|
|
319
|
+
### Classification
|
|
320
|
+
|
|
321
|
+
**Impact Level:** {{ impact_level }}
|
|
322
|
+
**Classification:** {{ classification }}{% if classification == "CUI" %} // SP-CTI{% endif %}
|
|
323
|
+
|
|
324
|
+
All generated artifacts MUST include classification markings appropriate to impact level.
|
|
325
|
+
{% endif %}
|
|
326
|
+
|
|
327
|
+
### Multi-Agent Architecture ({{ agents | length }} Agents)
|
|
328
|
+
|
|
329
|
+
| Tier | Agent | Port | Role |
|
|
330
|
+
|------|-------|------|------|
|
|
331
|
+
{% for agent in agents %}| {{ agent.tier }} | {{ agent.name | capitalize }} | {{ agent.port }} | {{ agent.role }} |
|
|
332
|
+
{% endfor %}
|
|
333
|
+
|
|
334
|
+
Agents communicate via **A2A protocol** (JSON-RPC 2.0 over mutual TLS within K8s). Each publishes an Agent Card at `/.well-known/agent.json`.
|
|
335
|
+
{% if mcp_servers %}
|
|
336
|
+
|
|
337
|
+
### MCP Servers ({{ mcp_servers | length }} stdio servers for Claude Code)
|
|
338
|
+
|
|
339
|
+
| Server | Tools |
|
|
340
|
+
|--------|-------|
|
|
341
|
+
{% for server in mcp_servers %}| {{ server.name }} | {{ server.tools }} |
|
|
342
|
+
{% endfor %}{% endif %}
|
|
343
|
+
{% if capabilities.get("compliance", False) %}
|
|
344
|
+
|
|
345
|
+
### Compliance Frameworks Supported
|
|
346
|
+
|
|
347
|
+
| Framework | Description |
|
|
348
|
+
|-----------|-------------|
|
|
349
|
+
| NIST 800-53 Rev 5 | Federal information systems baseline |
|
|
350
|
+
| FedRAMP Moderate/High | Cloud services authorization |
|
|
351
|
+
| NIST 800-171 | CUI protection requirements |
|
|
352
|
+
| CMMC Level 2/3 | Cybersecurity maturity certification |
|
|
353
|
+
| DoD CSSP (DI 8530.01) | Cybersecurity service provider |
|
|
354
|
+
| CISA Secure by Design | Secure development principles |
|
|
355
|
+
| IEEE 1012 IV&V | Independent verification and validation |
|
|
356
|
+
| DoDI 5000.87 DES | Digital engineering strategy |
|
|
357
|
+
|
|
358
|
+
**Control Crosswalk:** Implementing one NIST 800-53 control auto-populates FedRAMP, CMMC, and 800-171 status via the crosswalk engine.
|
|
359
|
+
{% endif %}
|
|
360
|
+
{% if capabilities.get("mbse", False) %}
|
|
361
|
+
|
|
362
|
+
### MBSE Integration
|
|
363
|
+
|
|
364
|
+
Model-Based Systems Engineering: SysML XMI import, DOORS NG ReqIF import, digital thread traceability, model-to-code generation, drift detection, and DES compliance assessment.
|
|
365
|
+
|
|
366
|
+
- Import models: `xmi_parser.py`, `reqif_parser.py`
|
|
367
|
+
- Digital thread: `digital_thread.py` (auto-link, coverage, report)
|
|
368
|
+
- Code generation: `model_code_generator.py`
|
|
369
|
+
- Drift detection: `sync_engine.py`
|
|
370
|
+
- DES compliance: `des_assessor.py`, `des_report_generator.py`
|
|
371
|
+
{% endif %}
|
|
372
|
+
{% if capabilities.get("ricoas", False) %}
|
|
373
|
+
|
|
374
|
+
### RICOAS — Requirements Intake, COA & Approval System
|
|
375
|
+
|
|
376
|
+
AI-driven conversational requirements intake with gap detection, SAFe decomposition, boundary impact assessment, supply chain intelligence, and Digital Program Twin simulation.
|
|
377
|
+
|
|
378
|
+
- Requirements intake: `intake_engine.py` (5-stage pipeline)
|
|
379
|
+
- Gap detection: `gap_detector.py`, `readiness_scorer.py` (7-dimension scoring)
|
|
380
|
+
- Decomposition: `decomposition_engine.py` (SAFe hierarchy with BDD)
|
|
381
|
+
- Boundary analysis: `boundary_analyzer.py` (4-tier ATO impact: GREEN/YELLOW/ORANGE/RED)
|
|
382
|
+
- Supply chain: `dependency_graph.py`, `scrm_assessor.py`, `cve_triager.py`
|
|
383
|
+
- Simulation: `simulation_engine.py`, `monte_carlo.py`, `coa_generator.py`
|
|
384
|
+
{% endif %}
|
|
385
|
+
{% if capabilities.get("devsecops_zta", False) %}
|
|
386
|
+
|
|
387
|
+
### DevSecOps & Zero Trust Architecture
|
|
388
|
+
|
|
389
|
+
DevSecOps pipeline security with policy-as-code (Kyverno/OPA), service mesh generation, and NIST SP 800-207 Zero Trust maturity scoring across 7 pillars.
|
|
390
|
+
|
|
391
|
+
- Profile management: `profile_manager.py` (5 maturity levels)
|
|
392
|
+
- Pipeline security: `pipeline_security_generator.py`
|
|
393
|
+
- Policy-as-code: `policy_generator.py` (Kyverno/OPA)
|
|
394
|
+
- ZTA maturity: `zta_maturity_scorer.py` (7-pillar DoD ZTA Strategy)
|
|
395
|
+
- NIST 800-207: `nist_800_207_assessor.py`
|
|
396
|
+
- Service mesh: `service_mesh_generator.py` (Istio/Linkerd)
|
|
397
|
+
{% endif %}
|
|
398
|
+
{% if capabilities.get("ai_security", False) %}
|
|
399
|
+
|
|
400
|
+
### AI Security
|
|
401
|
+
|
|
402
|
+
MITRE ATLAS threat defense, OWASP LLM Top 10, prompt injection detection, AI telemetry with privacy-preserving hashing, and agentic security (behavioral drift, tool chain validation, trust scoring).
|
|
403
|
+
|
|
404
|
+
- Prompt injection: `prompt_injection_detector.py` (5 detection categories)
|
|
405
|
+
- AI telemetry: `ai_telemetry_logger.py` (SHA-256 hashed prompts/responses)
|
|
406
|
+
- ATLAS: `atlas_assessor.py`, `atlas_red_team.py`
|
|
407
|
+
- OWASP: `owasp_llm_assessor.py`, `owasp_agentic_assessor.py`
|
|
408
|
+
- Trust scoring: `agent_trust_scorer.py`, `tool_chain_validator.py`
|
|
409
|
+
{% endif %}
|
|
410
|
+
{% if capabilities.get("observability", False) %}
|
|
411
|
+
|
|
412
|
+
### Observability & Explainable AI
|
|
413
|
+
|
|
414
|
+
Distributed tracing (OTel+SQLite), W3C PROV provenance, AgentSHAP tool attribution, and XAI compliance assessment.
|
|
415
|
+
|
|
416
|
+
- Tracing: Dual-mode tracer (OTel production, SQLite air-gapped)
|
|
417
|
+
- Provenance: `prov_query.py`, `prov_export.py` (W3C PROV-AGENT)
|
|
418
|
+
- Attribution: `agent_shap.py` (Monte Carlo Shapley values)
|
|
419
|
+
- XAI assessment: `xai_assessor.py` (10 compliance checks)
|
|
420
|
+
{% endif %}
|
|
421
|
+
{% if capabilities.get("code_intelligence", False) %}
|
|
422
|
+
|
|
423
|
+
### Code Intelligence
|
|
424
|
+
|
|
425
|
+
AST-based code quality metrics, smell detection, deterministic maintainability scoring, and runtime feedback from test results.
|
|
426
|
+
|
|
427
|
+
- Code analyzer: `code_analyzer.py` (cyclomatic/cognitive complexity, nesting, params)
|
|
428
|
+
- Smell detection: 5 smell types (long function, deep nesting, high complexity, too many params, god class)
|
|
429
|
+
- Runtime feedback: `runtime_feedback.py` (test-to-source mapping)
|
|
430
|
+
{% endif %}
|
|
431
|
+
|
|
432
|
+
### ATLAS Workflow
|
|
433
|
+
|
|
434
|
+
Build process follows the ATLAS methodology:
|
|
435
|
+
{% if atlas_config.get("model_phase", False) %}
|
|
436
|
+
1. **Model** -- Import/validate SysML and DOORS models (M-ATLAS pre-phase)
|
|
437
|
+
{% endif %}
|
|
438
|
+
{% for phase in atlas_phases %}{{ loop.index }}. **{{ phase | capitalize }}** -- {{ atlas_phase_descriptions.get(phase, phase) }}
|
|
439
|
+
{% endfor %}
|
|
440
|
+
{% if capabilities.get("testing", False) %}
|
|
441
|
+
|
|
442
|
+
### Testing Framework
|
|
443
|
+
|
|
444
|
+
**Testing Architecture (7-step pipeline):**
|
|
445
|
+
1. **py_compile** -- Python syntax validation
|
|
446
|
+
2. **Ruff** -- Ultra-fast Python linter
|
|
447
|
+
3. **pytest** (tests/) -- Unit/integration tests with coverage
|
|
448
|
+
4. **behave/Gherkin** (features/) -- BDD scenario tests
|
|
449
|
+
5. **Bandit** -- SAST security scan
|
|
450
|
+
6. **Playwright MCP** (.claude/commands/e2e/*.md) -- Browser automation E2E tests
|
|
451
|
+
7. **Security + Compliance gates** -- CUI markings, STIG, secret detection
|
|
452
|
+
{% endif %}
|
|
453
|
+
|
|
454
|
+
### Database
|
|
455
|
+
|
|
456
|
+
| Database | Purpose |
|
|
457
|
+
|----------|---------|
|
|
458
|
+
| `data/{{ db_name }}` | Main operational DB: projects, agents, audit trail{% if capabilities.get("compliance", False) %}, compliance{% endif %}{% if capabilities.get("mbse", False) %}, MBSE{% endif %}{% if capabilities.get("ricoas", False) %}, RICOAS{% endif %}{% if capabilities.get("ai_security", False) %}, AI security{% endif %}{% if capabilities.get("ai_governance", False) %}, AI governance{% endif %}{% if capabilities.get("observability", False) %}, observability{% endif %}{% if capabilities.get("devsecops_zta", False) %}, DevSecOps/ZTA{% endif %}{% if capabilities.get("code_intelligence", False) %}, code intelligence{% endif %} |
|
|
459
|
+
| `data/memory.db` | Memory system: entries, daily logs, access log |
|
|
460
|
+
| `data/activity.db` | Task tracking |
|
|
461
|
+
|
|
462
|
+
**Audit trail is append-only/immutable** -- no UPDATE/DELETE operations. Satisfies NIST 800-53 AU controls.
|
|
463
|
+
{% if goals_list %}
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
## Existing Goals
|
|
468
|
+
|
|
469
|
+
| Goal | File | Purpose |
|
|
470
|
+
|------|------|---------|
|
|
471
|
+
{% for goal in goals_list %}| {{ goal.name }} | `goals/{{ goal.file }}` | {{ goal.purpose }} |
|
|
472
|
+
{% endfor %}{% endif %}
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## Guardrails
|
|
477
|
+
|
|
478
|
+
- Always check `tools/manifest.md` before writing a new script
|
|
479
|
+
- Verify tool output format before chaining into another tool
|
|
480
|
+
- Do not assume APIs support batch operations -- check first
|
|
481
|
+
- When a workflow fails mid-execution, preserve intermediate outputs before retrying
|
|
482
|
+
- Read the full goal before starting a task -- do not skim
|
|
483
|
+
- Audit trail is append-only -- NEVER add UPDATE/DELETE operations to audit tables
|
|
484
|
+
- Never store secrets in code or config -- use secrets manager or K8s secrets
|
|
485
|
+
- All containers must run as non-root with read-only root filesystem
|
|
486
|
+
{% if capabilities.get("compliance", False) %}- All generated artifacts MUST include classification markings appropriate to impact level
|
|
487
|
+
- SBOM must be regenerated on every build
|
|
488
|
+
- When implementing a NIST 800-53 control, always call crosswalk engine to auto-populate FedRAMP/CMMC/800-171 status
|
|
489
|
+
{% endif %}{% if capabilities.get("security", False) %}- Security gates block on: CAT1 STIG findings, critical/high vulnerabilities, failed tests, missing markings
|
|
490
|
+
{% endif %}{% if capabilities.get("ai_security", False) %}- AI Security gates block on: prompt injection defense inactive, AI telemetry disabled, AI BOM missing, ATLAS coverage < 80%
|
|
491
|
+
{% endif %}{% if capabilities.get("devsecops_zta", False) %}- ZTA gates block on: maturity < Advanced for IL4+, mTLS not enforced with service mesh, no default-deny NetworkPolicy
|
|
492
|
+
{% endif %}{% if capabilities.get("ricoas", False) %}- RICOAS gates block on: readiness score < 0.7, unresolved critical gaps, RED requirements without alternative COAs
|
|
493
|
+
{% endif %}{% if capabilities.get("observability", False) %}- Observability gates block on: tracing not active, provenance graph empty, XAI assessment not completed
|
|
494
|
+
{% endif %}{% if capabilities.get("code_intelligence", False) %}- Code Quality gates block on: average cyclomatic complexity > 25
|
|
495
|
+
{% endif %}- **This application CANNOT generate child applications** -- it is a generated child app of ICDEV. The agentic fitness assessor, app blueprint engine, and child app generator are intentionally excluded.
|
|
496
|
+
{% if parent_callback.get("enabled", False) %}
|
|
497
|
+
|
|
498
|
+
### A2A Parent Callback
|
|
499
|
+
|
|
500
|
+
When this application needs capabilities not included locally, it calls back to parent ICDEV:
|
|
501
|
+
- **Callback URL:** {{ parent_callback.url }}
|
|
502
|
+
- **Auth method:** {{ parent_callback.auth }}
|
|
503
|
+
- **Excluded capabilities:** app generation, modernization
|
|
504
|
+
{% endif %}
|
|
505
|
+
{% if cloud_provider.get("mcp_servers") %}
|
|
506
|
+
|
|
507
|
+
### Cloud Service Provider Integration
|
|
508
|
+
|
|
509
|
+
**Target:** {{ cloud_provider.provider | upper }} ({{ cloud_provider.region }})
|
|
510
|
+
{% if cloud_provider.get("govcloud", False) %}**Partition:** GovCloud
|
|
511
|
+
{% endif %}
|
|
512
|
+
**MCP Servers:**
|
|
513
|
+
{% for server in cloud_provider.mcp_servers %}- {{ server }}
|
|
514
|
+
{% endfor %}{% endif %}
|
|
515
|
+
{% if key_decisions %}
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
## Key Architecture Decisions
|
|
520
|
+
|
|
521
|
+
{% for decision in key_decisions %}- **{{ decision.id }}:** {{ decision.text }}
|
|
522
|
+
{% endfor %}{% endif %}
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
## Continuous Improvement
|
|
527
|
+
|
|
528
|
+
Every failure strengthens the system: identify what broke -> fix the tool -> test it -> update the goal -> next run succeeds automatically.
|
|
529
|
+
|
|
530
|
+
Be direct. Be reliable. Get it done.
|
|
531
|
+
"""
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
# ===========================================================================
|
|
535
|
+
# ATLAS phase descriptions -- used by both Jinja2 and fallback renderers
|
|
536
|
+
# ===========================================================================
|
|
537
|
+
|
|
538
|
+
ATLAS_PHASE_DESCRIPTIONS: Dict[str, str] = {
|
|
539
|
+
"architect": "System design, component decomposition, interface contracts",
|
|
540
|
+
"trace": "Requirements traceability matrix, compliance mapping",
|
|
541
|
+
"link": "Wire components together, dependency injection, A2A registration",
|
|
542
|
+
"assemble": "Build, test (TDD RED->GREEN->REFACTOR), integrate",
|
|
543
|
+
"stress_test": "Load testing, security scanning, compliance gate checks",
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
# ===========================================================================
|
|
548
|
+
# GOAL METADATA -- purpose descriptions keyed by goal file stem
|
|
549
|
+
# ===========================================================================
|
|
550
|
+
|
|
551
|
+
GOAL_METADATA: Dict[str, Dict[str, str]] = {
|
|
552
|
+
"build_app": {
|
|
553
|
+
"name": "ATLAS Workflow",
|
|
554
|
+
"purpose": "5-step build: Architect -> Trace -> Link -> Assemble -> Stress-test",
|
|
555
|
+
},
|
|
556
|
+
"tdd_workflow": {
|
|
557
|
+
"name": "TDD Workflow",
|
|
558
|
+
"purpose": "RED->GREEN->REFACTOR cycle with Cucumber/Gherkin",
|
|
559
|
+
},
|
|
560
|
+
"compliance_workflow": {
|
|
561
|
+
"name": "Compliance Workflow",
|
|
562
|
+
"purpose": "Generate SSP, POAM, STIG, SBOM, CUI markings",
|
|
563
|
+
},
|
|
564
|
+
"security_scan": {
|
|
565
|
+
"name": "Security Scan",
|
|
566
|
+
"purpose": "SAST, dependency audit, secret detection, container scan",
|
|
567
|
+
},
|
|
568
|
+
"deploy_workflow": {
|
|
569
|
+
"name": "Deploy Workflow",
|
|
570
|
+
"purpose": "IaC generation, pipeline, staging, production deploy",
|
|
571
|
+
},
|
|
572
|
+
"monitoring": {
|
|
573
|
+
"name": "Monitoring",
|
|
574
|
+
"purpose": "Log analysis, metrics, alerts, health checks",
|
|
575
|
+
},
|
|
576
|
+
"self_healing": {
|
|
577
|
+
"name": "Self-Healing",
|
|
578
|
+
"purpose": "Pattern detection, root cause analysis, auto-remediation",
|
|
579
|
+
},
|
|
580
|
+
"agent_management": {
|
|
581
|
+
"name": "Agent Management",
|
|
582
|
+
"purpose": "A2A agent lifecycle, registration, health",
|
|
583
|
+
},
|
|
584
|
+
"integration_testing": {
|
|
585
|
+
"name": "Integration Testing",
|
|
586
|
+
"purpose": "Multi-layer testing: unit, BDD, E2E (Playwright), gates",
|
|
587
|
+
},
|
|
588
|
+
"cicd_integration": {
|
|
589
|
+
"name": "CI/CD Integration",
|
|
590
|
+
"purpose": "GitHub + GitLab dual-platform webhooks, polling, workflow automation",
|
|
591
|
+
},
|
|
592
|
+
"dashboard": {
|
|
593
|
+
"name": "Dashboard",
|
|
594
|
+
"purpose": "Web UI for project status, compliance, security",
|
|
595
|
+
},
|
|
596
|
+
"mbse_integration": {
|
|
597
|
+
"name": "MBSE Integration",
|
|
598
|
+
"purpose": "SysML, DOORS NG, digital thread, model-code sync, DES compliance",
|
|
599
|
+
},
|
|
600
|
+
"sbd_ivv_workflow": {
|
|
601
|
+
"name": "SbD & IV&V Workflow",
|
|
602
|
+
"purpose": "Secure by Design assessment + IV&V certification",
|
|
603
|
+
},
|
|
604
|
+
"maintenance_audit": {
|
|
605
|
+
"name": "Maintenance Audit",
|
|
606
|
+
"purpose": "Dependency scanning, vulnerability checking, SLA enforcement",
|
|
607
|
+
},
|
|
608
|
+
"ato_acceleration": {
|
|
609
|
+
"name": "ATO Acceleration",
|
|
610
|
+
"purpose": "Multi-framework ATO: FedRAMP + CMMC + OSCAL + eMASS + cATO",
|
|
611
|
+
},
|
|
612
|
+
# D-CHILD-1: Enterprise-grade goal metadata
|
|
613
|
+
"requirements_intake": {
|
|
614
|
+
"name": "Requirements Intake (RICOAS)",
|
|
615
|
+
"purpose": "AI-driven conversational intake, gap detection, SAFe decomposition",
|
|
616
|
+
},
|
|
617
|
+
"boundary_supply_chain": {
|
|
618
|
+
"name": "Boundary & Supply Chain",
|
|
619
|
+
"purpose": "ATO boundary impact, supply chain dependency graph, CVE triage",
|
|
620
|
+
},
|
|
621
|
+
"simulation_engine": {
|
|
622
|
+
"name": "Digital Program Twin Simulation",
|
|
623
|
+
"purpose": "6-dimension what-if simulation, Monte Carlo, COA generation",
|
|
624
|
+
},
|
|
625
|
+
"devsecops_workflow": {
|
|
626
|
+
"name": "DevSecOps Workflow",
|
|
627
|
+
"purpose": "DevSecOps profile, pipeline security, policy-as-code",
|
|
628
|
+
},
|
|
629
|
+
"zero_trust_architecture": {
|
|
630
|
+
"name": "Zero Trust Architecture",
|
|
631
|
+
"purpose": "ZTA 7-pillar maturity, NIST 800-207, service mesh",
|
|
632
|
+
},
|
|
633
|
+
"mosa_workflow": {
|
|
634
|
+
"name": "MOSA Workflow",
|
|
635
|
+
"purpose": "DoD MOSA modularity analysis, ICD/TSP generation",
|
|
636
|
+
},
|
|
637
|
+
"observability_traceability_xai": {
|
|
638
|
+
"name": "Observability & XAI",
|
|
639
|
+
"purpose": "Distributed tracing, provenance, AgentSHAP, XAI assessment",
|
|
640
|
+
},
|
|
641
|
+
"ai_transparency": {
|
|
642
|
+
"name": "AI Transparency",
|
|
643
|
+
"purpose": "Model/system cards, AI inventory, fairness, confabulation detection",
|
|
644
|
+
},
|
|
645
|
+
"ai_accountability": {
|
|
646
|
+
"name": "AI Accountability",
|
|
647
|
+
"purpose": "Oversight plans, CAIO, appeals, incident response, ethics reviews",
|
|
648
|
+
},
|
|
649
|
+
"owasp_agentic_security": {
|
|
650
|
+
"name": "OWASP Agentic Security",
|
|
651
|
+
"purpose": "Behavioral drift, tool chain validation, trust scoring, RBAC",
|
|
652
|
+
},
|
|
653
|
+
"code_intelligence": {
|
|
654
|
+
"name": "Code Intelligence",
|
|
655
|
+
"purpose": "AST metrics, smell detection, maintainability scoring",
|
|
656
|
+
},
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
# ===========================================================================
|
|
661
|
+
# HELPER FUNCTIONS
|
|
662
|
+
# ===========================================================================
|
|
663
|
+
|
|
664
|
+
def _compute_content_hash(content: str) -> str:
|
|
665
|
+
"""Compute SHA-256 hash of the generated CLAUDE.md content.
|
|
666
|
+
|
|
667
|
+
Args:
|
|
668
|
+
content: Rendered CLAUDE.md string.
|
|
669
|
+
|
|
670
|
+
Returns:
|
|
671
|
+
Hex-encoded SHA-256 hash.
|
|
672
|
+
"""
|
|
673
|
+
return hashlib.sha256(content.encode("utf-8")).hexdigest()
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
def _load_blueprint(path: str) -> Dict[str, Any]:
|
|
677
|
+
"""Load a blueprint JSON file.
|
|
678
|
+
|
|
679
|
+
Args:
|
|
680
|
+
path: Filesystem path to the blueprint JSON.
|
|
681
|
+
|
|
682
|
+
Returns:
|
|
683
|
+
Parsed blueprint dict.
|
|
684
|
+
|
|
685
|
+
Raises:
|
|
686
|
+
FileNotFoundError: If the file does not exist.
|
|
687
|
+
json.JSONDecodeError: If the file is not valid JSON.
|
|
688
|
+
ValueError: If the file does not contain a JSON object.
|
|
689
|
+
"""
|
|
690
|
+
blueprint_path = Path(path)
|
|
691
|
+
if not blueprint_path.exists():
|
|
692
|
+
raise FileNotFoundError(f"Blueprint not found: {path}")
|
|
693
|
+
|
|
694
|
+
with open(blueprint_path, encoding="utf-8") as f:
|
|
695
|
+
data = json.load(f)
|
|
696
|
+
|
|
697
|
+
if not isinstance(data, dict):
|
|
698
|
+
raise ValueError(
|
|
699
|
+
f"Blueprint must be a JSON object, got {type(data).__name__}"
|
|
700
|
+
)
|
|
701
|
+
|
|
702
|
+
# Validate minimal required fields
|
|
703
|
+
required = ("app_name", "capabilities", "agents")
|
|
704
|
+
missing = [k for k in required if k not in data]
|
|
705
|
+
if missing:
|
|
706
|
+
raise ValueError(
|
|
707
|
+
f"Blueprint missing required fields: {', '.join(missing)}"
|
|
708
|
+
)
|
|
709
|
+
|
|
710
|
+
return data
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
def _derive_agent_tier(agent: Dict[str, Any]) -> str:
|
|
714
|
+
"""Derive the tier label for an agent based on its name.
|
|
715
|
+
|
|
716
|
+
Core agents (orchestrator, architect, builder, knowledge, monitor) are
|
|
717
|
+
labeled by their functional tier. Domain agents get 'Domain'.
|
|
718
|
+
Support agents get 'Support'.
|
|
719
|
+
|
|
720
|
+
Args:
|
|
721
|
+
agent: Agent spec dict from the blueprint.
|
|
722
|
+
|
|
723
|
+
Returns:
|
|
724
|
+
Tier label string.
|
|
725
|
+
"""
|
|
726
|
+
name = agent.get("name", "").lower()
|
|
727
|
+
core_map = {
|
|
728
|
+
"orchestrator": "Core",
|
|
729
|
+
"architect": "Core",
|
|
730
|
+
}
|
|
731
|
+
domain_map = {
|
|
732
|
+
"builder": "Domain",
|
|
733
|
+
"compliance": "Domain",
|
|
734
|
+
"security": "Domain",
|
|
735
|
+
"infrastructure": "Domain",
|
|
736
|
+
"mbse": "Domain",
|
|
737
|
+
}
|
|
738
|
+
support_map = {
|
|
739
|
+
"knowledge": "Support",
|
|
740
|
+
"monitor": "Support",
|
|
741
|
+
}
|
|
742
|
+
if name in core_map:
|
|
743
|
+
return core_map[name]
|
|
744
|
+
if name in domain_map:
|
|
745
|
+
return domain_map[name]
|
|
746
|
+
if name in support_map:
|
|
747
|
+
return support_map[name]
|
|
748
|
+
# Default heuristic: core flag from blueprint
|
|
749
|
+
if agent.get("core", False):
|
|
750
|
+
return "Core"
|
|
751
|
+
return "Domain"
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
def _build_template_context(blueprint: Dict[str, Any]) -> Dict[str, Any]:
|
|
755
|
+
"""Transform a raw blueprint dict into the template rendering context.
|
|
756
|
+
|
|
757
|
+
Enriches the blueprint data with derived values needed by the Jinja2
|
|
758
|
+
template (agent tiers, goal metadata, ATLAS phase descriptions, etc.).
|
|
759
|
+
|
|
760
|
+
Args:
|
|
761
|
+
blueprint: Raw blueprint dict from app_blueprint.py.
|
|
762
|
+
|
|
763
|
+
Returns:
|
|
764
|
+
Template context dict ready for Jinja2 or fallback rendering.
|
|
765
|
+
"""
|
|
766
|
+
app_name = blueprint.get("app_name", "child-app")
|
|
767
|
+
capabilities = blueprint.get("capabilities", {})
|
|
768
|
+
classification = blueprint.get("classification", "CUI")
|
|
769
|
+
impact_level = blueprint.get("impact_level", "IL4")
|
|
770
|
+
agents_raw = blueprint.get("agents", [])
|
|
771
|
+
atlas_config = blueprint.get("atlas_config", {})
|
|
772
|
+
parent_callback = blueprint.get("parent_callback", {})
|
|
773
|
+
cloud_provider = blueprint.get("cloud_provider", {})
|
|
774
|
+
goals_config = blueprint.get("goals_config", [])
|
|
775
|
+
db_config = blueprint.get("db_config", {})
|
|
776
|
+
|
|
777
|
+
# Enrich agents with tier labels
|
|
778
|
+
agents = []
|
|
779
|
+
for agent in agents_raw:
|
|
780
|
+
enriched = dict(agent)
|
|
781
|
+
enriched["tier"] = _derive_agent_tier(agent)
|
|
782
|
+
agents.append(enriched)
|
|
783
|
+
|
|
784
|
+
# Build MCP server list from agent roster
|
|
785
|
+
mcp_servers = _derive_mcp_servers(agents, capabilities)
|
|
786
|
+
|
|
787
|
+
# Determine ATLAS phases (exclude fitness assessment)
|
|
788
|
+
atlas_phases = atlas_config.get("phases", [
|
|
789
|
+
"architect", "trace", "link", "assemble", "stress_test",
|
|
790
|
+
])
|
|
791
|
+
# Ensure fitness is never present
|
|
792
|
+
atlas_phases = [p for p in atlas_phases if p != "fitness"]
|
|
793
|
+
|
|
794
|
+
# Build goals list with metadata
|
|
795
|
+
goals_list = []
|
|
796
|
+
for goal_stem in goals_config:
|
|
797
|
+
meta = GOAL_METADATA.get(goal_stem, {})
|
|
798
|
+
goals_list.append({
|
|
799
|
+
"name": meta.get("name", goal_stem.replace("_", " ").title()),
|
|
800
|
+
"file": f"{goal_stem}.md",
|
|
801
|
+
"purpose": meta.get("purpose", goal_stem.replace("_", " ")),
|
|
802
|
+
})
|
|
803
|
+
|
|
804
|
+
# Key architecture decisions for the child app
|
|
805
|
+
key_decisions = _build_key_decisions(blueprint)
|
|
806
|
+
|
|
807
|
+
# Database name
|
|
808
|
+
db_name = db_config.get("name", f"{app_name}.db")
|
|
809
|
+
|
|
810
|
+
# Extract app description from scorecard spec or blueprint fields
|
|
811
|
+
scorecard = blueprint.get("fitness_scorecard", {})
|
|
812
|
+
app_description = (
|
|
813
|
+
blueprint.get("description", "")
|
|
814
|
+
or blueprint.get("purpose", "")
|
|
815
|
+
or scorecard.get("spec", "")
|
|
816
|
+
)
|
|
817
|
+
|
|
818
|
+
# Extract LLM config hints
|
|
819
|
+
llm_config = blueprint.get("llm_config", {})
|
|
820
|
+
|
|
821
|
+
# Demo mode flag
|
|
822
|
+
demo_mode = blueprint.get("demo_mode", False)
|
|
823
|
+
|
|
824
|
+
return {
|
|
825
|
+
"app_name": app_name,
|
|
826
|
+
"capabilities": capabilities,
|
|
827
|
+
"classification": classification,
|
|
828
|
+
"impact_level": impact_level,
|
|
829
|
+
"agents": agents,
|
|
830
|
+
"mcp_servers": mcp_servers,
|
|
831
|
+
"atlas_config": atlas_config,
|
|
832
|
+
"atlas_phases": atlas_phases,
|
|
833
|
+
"atlas_phase_descriptions": ATLAS_PHASE_DESCRIPTIONS,
|
|
834
|
+
"parent_callback": parent_callback,
|
|
835
|
+
"cloud_provider": cloud_provider,
|
|
836
|
+
"goals_list": goals_list,
|
|
837
|
+
"goals_config": goals_config,
|
|
838
|
+
"db_config": db_config,
|
|
839
|
+
"db_name": db_name,
|
|
840
|
+
"key_decisions": key_decisions,
|
|
841
|
+
"app_description": app_description,
|
|
842
|
+
"llm_config": llm_config,
|
|
843
|
+
"demo_mode": demo_mode,
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
|
|
847
|
+
def _derive_mcp_servers(
|
|
848
|
+
agents: List[Dict[str, Any]],
|
|
849
|
+
capabilities: Dict[str, bool],
|
|
850
|
+
) -> List[Dict[str, str]]:
|
|
851
|
+
"""Derive the MCP server documentation table from agents and capabilities.
|
|
852
|
+
|
|
853
|
+
Each agent that has an associated MCP server gets an entry. The tool
|
|
854
|
+
list is a representative subset -- not exhaustive.
|
|
855
|
+
|
|
856
|
+
Args:
|
|
857
|
+
agents: Enriched agent list with tier labels.
|
|
858
|
+
capabilities: Capability map from the blueprint.
|
|
859
|
+
|
|
860
|
+
Returns:
|
|
861
|
+
List of dicts with 'name' and 'tools' keys for the MCP table.
|
|
862
|
+
"""
|
|
863
|
+
agent_mcp_map: Dict[str, Dict[str, str]] = {
|
|
864
|
+
"orchestrator": {
|
|
865
|
+
"name": "core",
|
|
866
|
+
"tools": "project_create, project_list, project_status, task_dispatch, agent_status",
|
|
867
|
+
},
|
|
868
|
+
"builder": {
|
|
869
|
+
"name": "builder",
|
|
870
|
+
"tools": "scaffold, generate_code, write_tests, run_tests, lint, format",
|
|
871
|
+
},
|
|
872
|
+
"compliance": {
|
|
873
|
+
"name": "compliance",
|
|
874
|
+
"tools": "ssp_generate, poam_generate, stig_check, sbom_generate, cui_mark, control_map, nist_lookup",
|
|
875
|
+
},
|
|
876
|
+
"security": {
|
|
877
|
+
"name": "security",
|
|
878
|
+
"tools": "sast_scan, dep_audit, secret_detect, container_scan",
|
|
879
|
+
},
|
|
880
|
+
"knowledge": {
|
|
881
|
+
"name": "knowledge",
|
|
882
|
+
"tools": "search_knowledge, add_pattern, get_recommendations, self_heal",
|
|
883
|
+
},
|
|
884
|
+
"monitor": {
|
|
885
|
+
"name": "monitor",
|
|
886
|
+
"tools": "log_analyze, health_check, metrics_query, alert_manage",
|
|
887
|
+
},
|
|
888
|
+
"architect": {
|
|
889
|
+
"name": "architect",
|
|
890
|
+
"tools": "design_system, decompose, interface_contract",
|
|
891
|
+
},
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
# Only include capability-specific MCP servers when enabled
|
|
895
|
+
if capabilities.get("mbse", False):
|
|
896
|
+
agent_mcp_map["mbse"] = {
|
|
897
|
+
"name": "mbse",
|
|
898
|
+
"tools": "import_xmi, import_reqif, trace_forward, trace_backward, detect_drift, sync_model",
|
|
899
|
+
}
|
|
900
|
+
# D-CHILD-1: Enterprise capability MCP servers
|
|
901
|
+
if capabilities.get("ricoas", False):
|
|
902
|
+
agent_mcp_map["requirements_analyst"] = {
|
|
903
|
+
"name": "requirements",
|
|
904
|
+
"tools": "create_intake_session, process_intake_turn, detect_gaps, score_readiness, decompose_requirements",
|
|
905
|
+
}
|
|
906
|
+
agent_mcp_map["supply_chain"] = {
|
|
907
|
+
"name": "supply-chain",
|
|
908
|
+
"tools": "add_vendor, build_dependency_graph, assess_scrm, triage_cve, manage_isa",
|
|
909
|
+
}
|
|
910
|
+
agent_mcp_map["simulation"] = {
|
|
911
|
+
"name": "simulation",
|
|
912
|
+
"tools": "create_scenario, run_simulation, run_monte_carlo, generate_coas, compare_coas",
|
|
913
|
+
}
|
|
914
|
+
if capabilities.get("devsecops_zta", False):
|
|
915
|
+
agent_mcp_map["devsecops_zta"] = {
|
|
916
|
+
"name": "devsecops",
|
|
917
|
+
"tools": "devsecops_profile_create, zta_maturity_score, pipeline_security_generate, policy_generate, service_mesh_generate",
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
servers: List[Dict[str, str]] = []
|
|
921
|
+
agent_names = {a.get("name", "").lower() for a in agents}
|
|
922
|
+
for agent_name in sorted(agent_names):
|
|
923
|
+
mapping = agent_mcp_map.get(agent_name)
|
|
924
|
+
if mapping:
|
|
925
|
+
servers.append(mapping)
|
|
926
|
+
|
|
927
|
+
return servers
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
def _build_key_decisions(blueprint: Dict[str, Any]) -> List[Dict[str, str]]:
|
|
931
|
+
"""Build the key architecture decisions section for the child app.
|
|
932
|
+
|
|
933
|
+
Decisions are filtered based on which capabilities are enabled. Child
|
|
934
|
+
apps never include decisions about fitness assessment, modernization,
|
|
935
|
+
or grandchild generation.
|
|
936
|
+
|
|
937
|
+
Args:
|
|
938
|
+
blueprint: Blueprint dict.
|
|
939
|
+
|
|
940
|
+
Returns:
|
|
941
|
+
List of dicts with 'id' and 'text' keys.
|
|
942
|
+
"""
|
|
943
|
+
capabilities = blueprint.get("capabilities", {})
|
|
944
|
+
decisions: List[Dict[str, str]] = []
|
|
945
|
+
|
|
946
|
+
# Always-included decisions
|
|
947
|
+
decisions.append({
|
|
948
|
+
"id": "D1",
|
|
949
|
+
"text": "SQLite for internal operational data (zero-config portability)",
|
|
950
|
+
})
|
|
951
|
+
decisions.append({
|
|
952
|
+
"id": "D2",
|
|
953
|
+
"text": "Stdio for MCP (Claude Code); HTTPS+mTLS for A2A (K8s inter-agent)",
|
|
954
|
+
})
|
|
955
|
+
decisions.append({
|
|
956
|
+
"id": "D5",
|
|
957
|
+
"text": "CUI markings applied at generation time (inline, not post-processing)",
|
|
958
|
+
})
|
|
959
|
+
decisions.append({
|
|
960
|
+
"id": "D6",
|
|
961
|
+
"text": "Audit trail is append-only/immutable (no UPDATE/DELETE -- NIST AU compliance)",
|
|
962
|
+
})
|
|
963
|
+
|
|
964
|
+
if capabilities.get("dashboard", False):
|
|
965
|
+
decisions.append({
|
|
966
|
+
"id": "D3",
|
|
967
|
+
"text": "Flask over FastAPI (simpler, fewer deps, auditable SSR, smaller STIG surface)",
|
|
968
|
+
})
|
|
969
|
+
|
|
970
|
+
if capabilities.get("knowledge", False):
|
|
971
|
+
decisions.append({
|
|
972
|
+
"id": "D4",
|
|
973
|
+
"text": "Statistical methods for pattern detection; Bedrock LLM for root cause analysis",
|
|
974
|
+
})
|
|
975
|
+
|
|
976
|
+
if capabilities.get("mbse", False):
|
|
977
|
+
decisions.append({
|
|
978
|
+
"id": "D7",
|
|
979
|
+
"text": "Python stdlib xml.etree.ElementTree for XMI/ReqIF parsing (zero deps, air-gap safe)",
|
|
980
|
+
})
|
|
981
|
+
decisions.append({
|
|
982
|
+
"id": "D8",
|
|
983
|
+
"text": "Normalized DB tables for model elements (enables SQL joins across digital thread)",
|
|
984
|
+
})
|
|
985
|
+
decisions.append({
|
|
986
|
+
"id": "D9",
|
|
987
|
+
"text": "M-ATLAS adds Model pre-phase to ATLAS (backward compatible -- skips if no model)",
|
|
988
|
+
})
|
|
989
|
+
decisions.append({
|
|
990
|
+
"id": "D12",
|
|
991
|
+
"text": "N:M digital thread links (one block -> many code modules; one control -> many requirements)",
|
|
992
|
+
})
|
|
993
|
+
|
|
994
|
+
# D-CHILD-1: Enterprise capability decisions
|
|
995
|
+
if capabilities.get("ricoas", False):
|
|
996
|
+
decisions.append({
|
|
997
|
+
"id": "D21",
|
|
998
|
+
"text": "Readiness scoring uses deterministic weighted average (reproducible, not probabilistic)",
|
|
999
|
+
})
|
|
1000
|
+
decisions.append({
|
|
1001
|
+
"id": "D22",
|
|
1002
|
+
"text": "Monte Carlo uses Python stdlib random (zero deps, air-gap safe)",
|
|
1003
|
+
})
|
|
1004
|
+
decisions.append({
|
|
1005
|
+
"id": "D27",
|
|
1006
|
+
"text": "Supply chain graph stored as SQL adjacency list (no graph DB needed)",
|
|
1007
|
+
})
|
|
1008
|
+
|
|
1009
|
+
if capabilities.get("devsecops_zta", False):
|
|
1010
|
+
decisions.append({
|
|
1011
|
+
"id": "D117",
|
|
1012
|
+
"text": "DevSecOps/ZTA Agent with hard veto on pipeline_configuration and zero_trust_policy",
|
|
1013
|
+
})
|
|
1014
|
+
decisions.append({
|
|
1015
|
+
"id": "D120",
|
|
1016
|
+
"text": "ZTA maturity model uses DoD 7-pillar scoring (Traditional -> Advanced -> Optimal)",
|
|
1017
|
+
})
|
|
1018
|
+
|
|
1019
|
+
if capabilities.get("ai_security", False):
|
|
1020
|
+
decisions.append({
|
|
1021
|
+
"id": "D215",
|
|
1022
|
+
"text": "Prompt injection detector uses 5 detection categories",
|
|
1023
|
+
})
|
|
1024
|
+
decisions.append({
|
|
1025
|
+
"id": "D216",
|
|
1026
|
+
"text": "AI telemetry hashes prompts/responses with SHA-256 (privacy-preserving audit)",
|
|
1027
|
+
})
|
|
1028
|
+
|
|
1029
|
+
if capabilities.get("observability", False):
|
|
1030
|
+
decisions.append({
|
|
1031
|
+
"id": "D280",
|
|
1032
|
+
"text": "Pluggable Tracer ABC: OTelTracer (production), SQLiteTracer (air-gapped), NullTracer (fallback)",
|
|
1033
|
+
})
|
|
1034
|
+
decisions.append({
|
|
1035
|
+
"id": "D287",
|
|
1036
|
+
"text": "PROV-AGENT provenance in 3 append-only SQLite tables (W3C PROV standard)",
|
|
1037
|
+
})
|
|
1038
|
+
|
|
1039
|
+
if capabilities.get("code_intelligence", False):
|
|
1040
|
+
decisions.append({
|
|
1041
|
+
"id": "D331",
|
|
1042
|
+
"text": "Code quality metrics are read-only, advisory-only -- never modifies source files",
|
|
1043
|
+
})
|
|
1044
|
+
|
|
1045
|
+
# Grandchild prevention is always documented
|
|
1046
|
+
decisions.append({
|
|
1047
|
+
"id": "D52",
|
|
1048
|
+
"text": "This is a generated child app -- grandchild app generation is disabled by design",
|
|
1049
|
+
})
|
|
1050
|
+
|
|
1051
|
+
return decisions
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
# ===========================================================================
|
|
1055
|
+
# JINJA2 RENDERER
|
|
1056
|
+
# ===========================================================================
|
|
1057
|
+
|
|
1058
|
+
def _generate_with_jinja2(blueprint: Dict[str, Any]) -> str:
|
|
1059
|
+
"""Render CLAUDE.md using the Jinja2 template engine.
|
|
1060
|
+
|
|
1061
|
+
Args:
|
|
1062
|
+
blueprint: Blueprint dict from app_blueprint.py.
|
|
1063
|
+
|
|
1064
|
+
Returns:
|
|
1065
|
+
Rendered CLAUDE.md content string.
|
|
1066
|
+
|
|
1067
|
+
Raises:
|
|
1068
|
+
RuntimeError: If Jinja2 is not available (caller should use fallback).
|
|
1069
|
+
"""
|
|
1070
|
+
if not _HAS_JINJA2:
|
|
1071
|
+
raise RuntimeError("Jinja2 is not installed")
|
|
1072
|
+
|
|
1073
|
+
context = _build_template_context(blueprint)
|
|
1074
|
+
|
|
1075
|
+
env = Environment( # nosec B701 — generates Markdown, not HTML
|
|
1076
|
+
loader=BaseLoader(),
|
|
1077
|
+
keep_trailing_newline=True,
|
|
1078
|
+
trim_blocks=True,
|
|
1079
|
+
lstrip_blocks=True,
|
|
1080
|
+
)
|
|
1081
|
+
template = env.from_string(CLAUDE_MD_TEMPLATE)
|
|
1082
|
+
rendered = template.render(**context)
|
|
1083
|
+
|
|
1084
|
+
# Clean up excessive blank lines (more than 2 consecutive)
|
|
1085
|
+
lines = rendered.split("\n")
|
|
1086
|
+
cleaned: List[str] = []
|
|
1087
|
+
blank_count = 0
|
|
1088
|
+
for line in lines:
|
|
1089
|
+
if line.strip() == "":
|
|
1090
|
+
blank_count += 1
|
|
1091
|
+
if blank_count <= 2:
|
|
1092
|
+
cleaned.append(line)
|
|
1093
|
+
else:
|
|
1094
|
+
blank_count = 0
|
|
1095
|
+
cleaned.append(line)
|
|
1096
|
+
|
|
1097
|
+
return "\n".join(cleaned)
|
|
1098
|
+
|
|
1099
|
+
|
|
1100
|
+
# ===========================================================================
|
|
1101
|
+
# FALLBACK RENDERER (no Jinja2)
|
|
1102
|
+
# ===========================================================================
|
|
1103
|
+
|
|
1104
|
+
def _generate_fallback(blueprint: Dict[str, Any]) -> str:
|
|
1105
|
+
"""Render CLAUDE.md using basic string operations when Jinja2 is absent.
|
|
1106
|
+
|
|
1107
|
+
Produces equivalent output to the Jinja2 renderer but uses simple
|
|
1108
|
+
conditionals and string formatting instead of a template engine.
|
|
1109
|
+
|
|
1110
|
+
Args:
|
|
1111
|
+
blueprint: Blueprint dict from app_blueprint.py.
|
|
1112
|
+
|
|
1113
|
+
Returns:
|
|
1114
|
+
Rendered CLAUDE.md content string.
|
|
1115
|
+
"""
|
|
1116
|
+
ctx = _build_template_context(blueprint)
|
|
1117
|
+
sections: List[str] = []
|
|
1118
|
+
|
|
1119
|
+
# -- Header --
|
|
1120
|
+
sections.append("# CLAUDE.md\n")
|
|
1121
|
+
sections.append(
|
|
1122
|
+
f"This file provides guidance to Claude Code (claude.ai/code) "
|
|
1123
|
+
f"when working with {ctx['app_name']}.\n"
|
|
1124
|
+
)
|
|
1125
|
+
|
|
1126
|
+
if ctx.get("demo_mode"):
|
|
1127
|
+
sections.append(
|
|
1128
|
+
"> **DEMONSTRATION ONLY** — This application is a demo. "
|
|
1129
|
+
"It uses PUBLIC classification\n"
|
|
1130
|
+
"> and must NOT be used for operational, classified, or sensitive data. "
|
|
1131
|
+
"All CUI/SECRET\n"
|
|
1132
|
+
"> banners and compliance artifacts are simulated for demonstration purposes.\n"
|
|
1133
|
+
)
|
|
1134
|
+
|
|
1135
|
+
sections.append("---\n")
|
|
1136
|
+
|
|
1137
|
+
# -- Quick Reference --
|
|
1138
|
+
sections.append("## Quick Reference\n")
|
|
1139
|
+
sections.append(_build_commands_section(ctx))
|
|
1140
|
+
|
|
1141
|
+
# -- App Description (from blueprint spec) --
|
|
1142
|
+
if ctx.get("app_description"):
|
|
1143
|
+
sections.append("---\n")
|
|
1144
|
+
sections.append(f"## {ctx['app_name']} — Overview\n")
|
|
1145
|
+
sections.append(f"{ctx['app_description']}\n")
|
|
1146
|
+
|
|
1147
|
+
# -- GOTCHA Framework --
|
|
1148
|
+
sections.append("---\n")
|
|
1149
|
+
sections.append(_build_gotcha_section())
|
|
1150
|
+
|
|
1151
|
+
# -- How to Operate --
|
|
1152
|
+
sections.append("---\n")
|
|
1153
|
+
sections.append(_build_operate_section())
|
|
1154
|
+
|
|
1155
|
+
# -- App System --
|
|
1156
|
+
sections.append("---\n")
|
|
1157
|
+
sections.append(_build_system_section(ctx))
|
|
1158
|
+
|
|
1159
|
+
# -- Goals --
|
|
1160
|
+
if ctx["goals_list"]:
|
|
1161
|
+
sections.append("---\n")
|
|
1162
|
+
sections.append(_build_goals_section(ctx))
|
|
1163
|
+
|
|
1164
|
+
# -- Guardrails --
|
|
1165
|
+
sections.append("---\n")
|
|
1166
|
+
sections.append(_build_guardrails_section(ctx))
|
|
1167
|
+
|
|
1168
|
+
# -- Key Decisions --
|
|
1169
|
+
if ctx["key_decisions"]:
|
|
1170
|
+
sections.append("---\n")
|
|
1171
|
+
sections.append(_build_decisions_section(ctx))
|
|
1172
|
+
|
|
1173
|
+
# -- Continuous Improvement --
|
|
1174
|
+
sections.append("---\n")
|
|
1175
|
+
sections.append("## Continuous Improvement\n")
|
|
1176
|
+
sections.append(
|
|
1177
|
+
"Every failure strengthens the system: identify what broke -> "
|
|
1178
|
+
"fix the tool -> test it -> update the goal -> next run succeeds "
|
|
1179
|
+
"automatically.\n"
|
|
1180
|
+
)
|
|
1181
|
+
sections.append("Be direct. Be reliable. Get it done.\n")
|
|
1182
|
+
|
|
1183
|
+
content = "\n".join(sections)
|
|
1184
|
+
# Normalize excessive blank lines
|
|
1185
|
+
while "\n\n\n\n" in content:
|
|
1186
|
+
content = content.replace("\n\n\n\n", "\n\n\n")
|
|
1187
|
+
return content
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
def _build_commands_section(ctx: Dict[str, Any]) -> str:
|
|
1191
|
+
"""Build the commands section for fallback rendering."""
|
|
1192
|
+
parts: List[str] = []
|
|
1193
|
+
|
|
1194
|
+
# Memory commands -- always present
|
|
1195
|
+
parts.append("### Commands\n")
|
|
1196
|
+
parts.append("```bash")
|
|
1197
|
+
parts.append("# Memory system")
|
|
1198
|
+
parts.append('python tools/memory/memory_read.py --format markdown # Load all memory')
|
|
1199
|
+
parts.append('python tools/memory/memory_write.py --content "text" --type event # Write to daily log + DB')
|
|
1200
|
+
parts.append('python tools/memory/memory_write.py --content "text" --type fact --importance 7 # Store a fact')
|
|
1201
|
+
parts.append('python tools/memory/memory_write.py --update-memory --content "text" --section user_preferences # Update MEMORY.md')
|
|
1202
|
+
parts.append('python tools/memory/memory_db.py --action search --query "keyword" # Keyword search')
|
|
1203
|
+
parts.append('python tools/memory/semantic_search.py --query "concept" # Semantic search (requires OpenAI key)')
|
|
1204
|
+
parts.append('python tools/memory/hybrid_search.py --query "query" # Best: combined keyword + semantic')
|
|
1205
|
+
parts.append('python tools/memory/embed_memory.py --all # Generate embeddings for all entries')
|
|
1206
|
+
parts.append("```\n")
|
|
1207
|
+
|
|
1208
|
+
caps = ctx["capabilities"]
|
|
1209
|
+
app = ctx["app_name"]
|
|
1210
|
+
classification = ctx["classification"]
|
|
1211
|
+
impact_level = ctx["impact_level"]
|
|
1212
|
+
|
|
1213
|
+
if caps.get("testing", False):
|
|
1214
|
+
parts.append("### Testing Commands\n")
|
|
1215
|
+
parts.append("```bash")
|
|
1216
|
+
parts.append("python tools/testing/health_check.py # Full system health check")
|
|
1217
|
+
parts.append("python tools/testing/health_check.py --json # JSON output")
|
|
1218
|
+
parts.append("python tools/testing/test_orchestrator.py --project-dir /path/to/project")
|
|
1219
|
+
parts.append("python tools/testing/e2e_runner.py --discover # List available E2E test specs")
|
|
1220
|
+
parts.append("python tools/testing/e2e_runner.py --run-all # Execute all E2E tests")
|
|
1221
|
+
parts.append("```\n")
|
|
1222
|
+
|
|
1223
|
+
if caps.get("compliance", False):
|
|
1224
|
+
parts.append("### Compliance Commands\n")
|
|
1225
|
+
parts.append("```bash")
|
|
1226
|
+
parts.append(f'python tools/compliance/ssp_generator.py --project-id "{app}"')
|
|
1227
|
+
parts.append(f'python tools/compliance/poam_generator.py --project-id "{app}"')
|
|
1228
|
+
parts.append(f'python tools/compliance/stig_checker.py --project-id "{app}"')
|
|
1229
|
+
parts.append('python tools/compliance/sbom_generator.py --project-dir "/path/to/project"')
|
|
1230
|
+
parts.append(f'python tools/compliance/cui_marker.py --file "/path/to/file" --marking "{classification} // SP-CTI"')
|
|
1231
|
+
parts.append('python tools/compliance/nist_lookup.py --control "AC-2"')
|
|
1232
|
+
parts.append(f'python tools/compliance/control_mapper.py --activity "code.commit" --project-id "{app}"')
|
|
1233
|
+
parts.append("python tools/compliance/crosswalk_engine.py --control AC-2")
|
|
1234
|
+
parts.append(f'python tools/compliance/crosswalk_engine.py --project-id "{app}" --coverage')
|
|
1235
|
+
parts.append(f'python tools/compliance/fedramp_assessor.py --project-id "{app}" --baseline moderate')
|
|
1236
|
+
parts.append(f'python tools/compliance/cmmc_assessor.py --project-id "{app}" --level 2')
|
|
1237
|
+
parts.append(f'python tools/compliance/oscal_generator.py --project-id "{app}" --artifact ssp')
|
|
1238
|
+
parts.append(f"python tools/compliance/classification_manager.py --impact-level {impact_level}")
|
|
1239
|
+
parts.append("```\n")
|
|
1240
|
+
|
|
1241
|
+
if caps.get("security", False):
|
|
1242
|
+
parts.append("### Security Commands\n")
|
|
1243
|
+
parts.append("```bash")
|
|
1244
|
+
parts.append('python tools/security/sast_runner.py --project-dir "/path"')
|
|
1245
|
+
parts.append('python tools/security/dependency_auditor.py --project-dir "/path"')
|
|
1246
|
+
parts.append('python tools/security/secret_detector.py --project-dir "/path"')
|
|
1247
|
+
parts.append(f'python tools/security/container_scanner.py --image "{app}:latest"')
|
|
1248
|
+
parts.append("```\n")
|
|
1249
|
+
|
|
1250
|
+
if caps.get("mbse", False):
|
|
1251
|
+
parts.append("### MBSE Commands\n")
|
|
1252
|
+
parts.append("```bash")
|
|
1253
|
+
parts.append(f'python tools/mbse/xmi_parser.py --project-id "{app}" --file /path/model.xmi --json')
|
|
1254
|
+
parts.append(f'python tools/mbse/reqif_parser.py --project-id "{app}" --file /path/reqs.reqif --json')
|
|
1255
|
+
parts.append(f'python tools/mbse/digital_thread.py --project-id "{app}" auto-link --json')
|
|
1256
|
+
parts.append(f'python tools/mbse/digital_thread.py --project-id "{app}" coverage --json')
|
|
1257
|
+
parts.append(f'python tools/mbse/model_code_generator.py --project-id "{app}" --language python --output ./src')
|
|
1258
|
+
parts.append(f'python tools/mbse/sync_engine.py --project-id "{app}" detect-drift --json')
|
|
1259
|
+
parts.append(f'python tools/mbse/des_assessor.py --project-id "{app}" --project-dir /path --json')
|
|
1260
|
+
parts.append("```\n")
|
|
1261
|
+
|
|
1262
|
+
if caps.get("infra", False):
|
|
1263
|
+
parts.append("### Infrastructure Commands\n")
|
|
1264
|
+
parts.append("```bash")
|
|
1265
|
+
parts.append(f'python tools/infra/terraform_generator.py --project-id "{app}"')
|
|
1266
|
+
parts.append(f'python tools/infra/ansible_generator.py --project-id "{app}"')
|
|
1267
|
+
parts.append(f'python tools/infra/k8s_generator.py --project-id "{app}"')
|
|
1268
|
+
parts.append(f'python tools/infra/pipeline_generator.py --project-id "{app}"')
|
|
1269
|
+
parts.append('python tools/infra/rollback.py --deployment-id "deploy-123"')
|
|
1270
|
+
parts.append("```\n")
|
|
1271
|
+
|
|
1272
|
+
if caps.get("cicd", False):
|
|
1273
|
+
parts.append("### CI/CD Commands\n")
|
|
1274
|
+
parts.append("```bash")
|
|
1275
|
+
parts.append("python tools/ci/triggers/webhook_server.py # Start webhook server")
|
|
1276
|
+
parts.append("python tools/ci/triggers/poll_trigger.py # Start issue polling")
|
|
1277
|
+
parts.append("python tools/ci/workflows/icdev_sdlc.py 123 # Run full SDLC pipeline")
|
|
1278
|
+
parts.append("```\n")
|
|
1279
|
+
|
|
1280
|
+
if caps.get("dashboard", False):
|
|
1281
|
+
parts.append("### Dashboard\n")
|
|
1282
|
+
parts.append("```bash")
|
|
1283
|
+
parts.append("python tools/dashboard/app.py # Start web dashboard on port 5000")
|
|
1284
|
+
parts.append("```\n")
|
|
1285
|
+
|
|
1286
|
+
return "\n".join(parts)
|
|
1287
|
+
|
|
1288
|
+
|
|
1289
|
+
def _build_gotcha_section() -> str:
|
|
1290
|
+
"""Build the GOTCHA framework section for fallback rendering."""
|
|
1291
|
+
return """## Architecture: GOTCHA Framework
|
|
1292
|
+
|
|
1293
|
+
This is a 6-layer agentic system. The AI (you) is the orchestration layer -- you read goals, call tools, apply args, reference context, and use hard prompts. You never execute work directly; you delegate to deterministic Python scripts.
|
|
1294
|
+
|
|
1295
|
+
**Why:** LLMs are probabilistic. Business logic must be deterministic. 90% accuracy/step = ~59% over 5 steps. Separation of concerns fixes this.
|
|
1296
|
+
|
|
1297
|
+
### The 6 Layers
|
|
1298
|
+
|
|
1299
|
+
| Layer | Directory | Role |
|
|
1300
|
+
|-------|-----------|------|
|
|
1301
|
+
| **Goals** | `goals/` | Process definitions -- what to achieve, which tools to use, expected outputs, edge cases |
|
|
1302
|
+
| **Orchestration** | *(you)* | Read goal -> decide tool order -> apply args -> reference context -> handle errors |
|
|
1303
|
+
| **Tools** | `tools/` | Python scripts, one job each. Deterministic. Don't think, just execute. |
|
|
1304
|
+
| **Args** | `args/` | YAML/JSON behavior settings (themes, modes, schedules). Change behavior without editing goals/tools |
|
|
1305
|
+
| **Context** | `context/` | Static reference material (tone rules, writing samples, ICP descriptions, case studies) |
|
|
1306
|
+
| **Hard Prompts** | `hardprompts/` | Reusable LLM instruction templates (outline->post, rewrite-in-voice, summarize) |
|
|
1307
|
+
|
|
1308
|
+
### Key Files
|
|
1309
|
+
|
|
1310
|
+
- `goals/manifest.md` -- Index of all goal workflows. Check before starting any task.
|
|
1311
|
+
- `tools/manifest.md` -- Master list of all tools. Check before writing a new script.
|
|
1312
|
+
- `memory/MEMORY.md` -- Curated long-term facts/preferences, read at session start.
|
|
1313
|
+
- `memory/logs/YYYY-MM-DD.md` -- Daily session logs.
|
|
1314
|
+
- `.env` -- API keys and environment variables.
|
|
1315
|
+
- `.tmp/` -- Disposable scratch work. Never store important data here.
|
|
1316
|
+
|
|
1317
|
+
### Memory System Architecture
|
|
1318
|
+
|
|
1319
|
+
Dual storage: markdown files (human-readable) + SQLite databases (searchable).
|
|
1320
|
+
|
|
1321
|
+
**Databases:**
|
|
1322
|
+
- `data/memory.db` -- `memory_entries` (with embeddings), `daily_logs`, `memory_access_log`
|
|
1323
|
+
- `data/activity.db` -- `tasks` table for tracking
|
|
1324
|
+
|
|
1325
|
+
**Memory types:** fact, preference, event, insight, task, relationship
|
|
1326
|
+
|
|
1327
|
+
**Search ranking:** Hybrid search uses 0.7 * BM25 (keyword) + 0.3 * semantic (vector). Configurable via `--bm25-weight` and `--semantic-weight` flags.
|
|
1328
|
+
|
|
1329
|
+
**Embeddings:** OpenAI text-embedding-3-small (1536 dims), stored as BLOBs in SQLite.
|
|
1330
|
+
"""
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
def _build_operate_section() -> str:
|
|
1334
|
+
"""Build the How to Operate section for fallback rendering."""
|
|
1335
|
+
return """## How to Operate
|
|
1336
|
+
|
|
1337
|
+
1. **Check goals first** -- Read `goals/manifest.md` before starting a task. If a goal exists, follow it.
|
|
1338
|
+
2. **Check tools first** -- Read `tools/manifest.md` before writing new code. If you create a new tool, add it to the manifest.
|
|
1339
|
+
3. **When tools fail** -- Read the error, fix the tool, update the goal with what you learned (rate limits, batching, timing).
|
|
1340
|
+
4. **Goals are living docs** -- Update when better approaches emerge. Never modify/create goals without explicit permission.
|
|
1341
|
+
5. **When stuck** -- Explain what is missing and what you need. Do not guess or invent capabilities.
|
|
1342
|
+
|
|
1343
|
+
### Session Start Protocol
|
|
1344
|
+
|
|
1345
|
+
1. Read `memory/MEMORY.md` for long-term context
|
|
1346
|
+
2. Read today's daily log (`memory/logs/YYYY-MM-DD.md`)
|
|
1347
|
+
3. Read yesterday's log for continuity
|
|
1348
|
+
4. Or run: `python tools/memory/memory_read.py --format markdown`
|
|
1349
|
+
"""
|
|
1350
|
+
|
|
1351
|
+
|
|
1352
|
+
def _build_system_section(ctx: Dict[str, Any]) -> str:
|
|
1353
|
+
"""Build the app system section for fallback rendering."""
|
|
1354
|
+
parts: List[str] = []
|
|
1355
|
+
app_name = ctx["app_name"]
|
|
1356
|
+
caps = ctx["capabilities"]
|
|
1357
|
+
|
|
1358
|
+
parts.append(f"## {app_name} System\n")
|
|
1359
|
+
|
|
1360
|
+
# Classification
|
|
1361
|
+
classification = ctx["classification"]
|
|
1362
|
+
impact_level = ctx["impact_level"]
|
|
1363
|
+
if classification:
|
|
1364
|
+
parts.append("### Classification\n")
|
|
1365
|
+
marking = f"{classification} // SP-CTI" if classification == "CUI" else classification
|
|
1366
|
+
parts.append(f"**Impact Level:** {impact_level}")
|
|
1367
|
+
parts.append(f"**Classification:** {marking}\n")
|
|
1368
|
+
parts.append("All generated artifacts MUST include classification markings appropriate to impact level.\n")
|
|
1369
|
+
|
|
1370
|
+
# Agent table
|
|
1371
|
+
agents = ctx["agents"]
|
|
1372
|
+
parts.append(f"### Multi-Agent Architecture ({len(agents)} Agents)\n")
|
|
1373
|
+
parts.append(_build_agent_table(agents))
|
|
1374
|
+
parts.append("")
|
|
1375
|
+
parts.append("Agents communicate via **A2A protocol** (JSON-RPC 2.0 over mutual TLS within K8s). Each publishes an Agent Card at `/.well-known/agent.json`.\n")
|
|
1376
|
+
|
|
1377
|
+
# MCP servers
|
|
1378
|
+
mcp_servers = ctx["mcp_servers"]
|
|
1379
|
+
if mcp_servers:
|
|
1380
|
+
parts.append(f"### MCP Servers ({len(mcp_servers)} stdio servers for Claude Code)\n")
|
|
1381
|
+
parts.append("| Server | Tools |")
|
|
1382
|
+
parts.append("|--------|-------|")
|
|
1383
|
+
for server in mcp_servers:
|
|
1384
|
+
parts.append(f"| {server['name']} | {server['tools']} |")
|
|
1385
|
+
parts.append("")
|
|
1386
|
+
|
|
1387
|
+
# Compliance frameworks
|
|
1388
|
+
if caps.get("compliance", False):
|
|
1389
|
+
parts.append("### Compliance Frameworks Supported\n")
|
|
1390
|
+
parts.append("| Framework | Description |")
|
|
1391
|
+
parts.append("|-----------|-------------|")
|
|
1392
|
+
parts.append("| NIST 800-53 Rev 5 | Federal information systems baseline |")
|
|
1393
|
+
parts.append("| FedRAMP Moderate/High | Cloud services authorization |")
|
|
1394
|
+
parts.append("| NIST 800-171 | CUI protection requirements |")
|
|
1395
|
+
parts.append("| CMMC Level 2/3 | Cybersecurity maturity certification |")
|
|
1396
|
+
parts.append("| DoD CSSP (DI 8530.01) | Cybersecurity service provider |")
|
|
1397
|
+
parts.append("| CISA Secure by Design | Secure development principles |")
|
|
1398
|
+
parts.append("| IEEE 1012 IV&V | Independent verification and validation |")
|
|
1399
|
+
parts.append("| DoDI 5000.87 DES | Digital engineering strategy |")
|
|
1400
|
+
parts.append("")
|
|
1401
|
+
parts.append("**Control Crosswalk:** Implementing one NIST 800-53 control auto-populates FedRAMP, CMMC, and 800-171 status via the crosswalk engine.\n")
|
|
1402
|
+
|
|
1403
|
+
# MBSE
|
|
1404
|
+
if caps.get("mbse", False):
|
|
1405
|
+
parts.append("### MBSE Integration\n")
|
|
1406
|
+
parts.append(
|
|
1407
|
+
"Model-Based Systems Engineering: SysML XMI import, DOORS NG ReqIF import, "
|
|
1408
|
+
"digital thread traceability, model-to-code generation, drift detection, "
|
|
1409
|
+
"and DES compliance assessment.\n"
|
|
1410
|
+
)
|
|
1411
|
+
parts.append("- Import models: `xmi_parser.py`, `reqif_parser.py`")
|
|
1412
|
+
parts.append("- Digital thread: `digital_thread.py` (auto-link, coverage, report)")
|
|
1413
|
+
parts.append("- Code generation: `model_code_generator.py`")
|
|
1414
|
+
parts.append("- Drift detection: `sync_engine.py`")
|
|
1415
|
+
parts.append("- DES compliance: `des_assessor.py`, `des_report_generator.py`\n")
|
|
1416
|
+
|
|
1417
|
+
# ATLAS workflow
|
|
1418
|
+
atlas_phases = ctx["atlas_phases"]
|
|
1419
|
+
parts.append("### ATLAS Workflow\n")
|
|
1420
|
+
parts.append("Build process follows the ATLAS methodology:\n")
|
|
1421
|
+
idx = 1
|
|
1422
|
+
if ctx["atlas_config"].get("model_phase", False):
|
|
1423
|
+
parts.append(f"{idx}. **Model** -- Import/validate SysML and DOORS models (M-ATLAS pre-phase)")
|
|
1424
|
+
idx += 1
|
|
1425
|
+
for phase in atlas_phases:
|
|
1426
|
+
desc = ATLAS_PHASE_DESCRIPTIONS.get(phase, phase)
|
|
1427
|
+
parts.append(f"{idx}. **{phase.capitalize()}** -- {desc}")
|
|
1428
|
+
idx += 1
|
|
1429
|
+
parts.append("")
|
|
1430
|
+
|
|
1431
|
+
# Testing
|
|
1432
|
+
if caps.get("testing", False):
|
|
1433
|
+
parts.append("### Testing Framework\n")
|
|
1434
|
+
parts.append("**Testing Architecture (7-step pipeline):**")
|
|
1435
|
+
parts.append("1. **py_compile** -- Python syntax validation")
|
|
1436
|
+
parts.append("2. **Ruff** -- Ultra-fast Python linter")
|
|
1437
|
+
parts.append("3. **pytest** (tests/) -- Unit/integration tests with coverage")
|
|
1438
|
+
parts.append("4. **behave/Gherkin** (features/) -- BDD scenario tests")
|
|
1439
|
+
parts.append("5. **Bandit** -- SAST security scan")
|
|
1440
|
+
parts.append("6. **Playwright MCP** (.claude/commands/e2e/*.md) -- Browser automation E2E tests")
|
|
1441
|
+
parts.append("7. **Security + Compliance gates** -- CUI markings, STIG, secret detection\n")
|
|
1442
|
+
|
|
1443
|
+
# Database
|
|
1444
|
+
db_name = ctx["db_name"]
|
|
1445
|
+
parts.append("### Database\n")
|
|
1446
|
+
parts.append("| Database | Purpose |")
|
|
1447
|
+
parts.append("|----------|---------|")
|
|
1448
|
+
purpose_parts = ["projects, agents, audit trail"]
|
|
1449
|
+
if caps.get("compliance", False):
|
|
1450
|
+
purpose_parts.append("compliance")
|
|
1451
|
+
if caps.get("mbse", False):
|
|
1452
|
+
purpose_parts.append("MBSE")
|
|
1453
|
+
if caps.get("ricoas", False):
|
|
1454
|
+
purpose_parts.append("RICOAS")
|
|
1455
|
+
if caps.get("ai_security", False):
|
|
1456
|
+
purpose_parts.append("AI security")
|
|
1457
|
+
if caps.get("ai_governance", False):
|
|
1458
|
+
purpose_parts.append("AI governance")
|
|
1459
|
+
if caps.get("observability", False):
|
|
1460
|
+
purpose_parts.append("observability")
|
|
1461
|
+
if caps.get("devsecops_zta", False):
|
|
1462
|
+
purpose_parts.append("DevSecOps/ZTA")
|
|
1463
|
+
if caps.get("code_intelligence", False):
|
|
1464
|
+
purpose_parts.append("code intelligence")
|
|
1465
|
+
parts.append(f"| `data/{db_name}` | Main operational DB: {', '.join(purpose_parts)} |")
|
|
1466
|
+
parts.append("| `data/memory.db` | Memory system: entries, daily logs, access log |")
|
|
1467
|
+
parts.append("| `data/activity.db` | Task tracking |")
|
|
1468
|
+
parts.append("")
|
|
1469
|
+
parts.append("**Audit trail is append-only/immutable** -- no UPDATE/DELETE operations. Satisfies NIST 800-53 AU controls.\n")
|
|
1470
|
+
|
|
1471
|
+
return "\n".join(parts)
|
|
1472
|
+
|
|
1473
|
+
|
|
1474
|
+
def _build_agent_table(agents: List[Dict[str, Any]]) -> str:
|
|
1475
|
+
"""Build a markdown table of agents.
|
|
1476
|
+
|
|
1477
|
+
Args:
|
|
1478
|
+
agents: Enriched agent list with tier labels.
|
|
1479
|
+
|
|
1480
|
+
Returns:
|
|
1481
|
+
Markdown table string.
|
|
1482
|
+
"""
|
|
1483
|
+
lines = [
|
|
1484
|
+
"| Tier | Agent | Port | Role |",
|
|
1485
|
+
"|------|-------|------|------|",
|
|
1486
|
+
]
|
|
1487
|
+
for agent in agents:
|
|
1488
|
+
name = agent.get("name", "unknown").capitalize()
|
|
1489
|
+
tier = agent.get("tier", "Domain")
|
|
1490
|
+
port = agent.get("port", "N/A")
|
|
1491
|
+
role = agent.get("role", "")
|
|
1492
|
+
lines.append(f"| {tier} | {name} | {port} | {role} |")
|
|
1493
|
+
return "\n".join(lines)
|
|
1494
|
+
|
|
1495
|
+
|
|
1496
|
+
def _build_goals_section(ctx: Dict[str, Any]) -> str:
|
|
1497
|
+
"""Build the goals section for fallback rendering."""
|
|
1498
|
+
parts: List[str] = []
|
|
1499
|
+
parts.append("## Existing Goals\n")
|
|
1500
|
+
parts.append("| Goal | File | Purpose |")
|
|
1501
|
+
parts.append("|------|------|---------|")
|
|
1502
|
+
for goal in ctx["goals_list"]:
|
|
1503
|
+
parts.append(f"| {goal['name']} | `goals/{goal['file']}` | {goal['purpose']} |")
|
|
1504
|
+
parts.append("")
|
|
1505
|
+
return "\n".join(parts)
|
|
1506
|
+
|
|
1507
|
+
|
|
1508
|
+
def _build_guardrails_section(ctx: Dict[str, Any]) -> str:
|
|
1509
|
+
"""Build the guardrails section for fallback rendering."""
|
|
1510
|
+
caps = ctx["capabilities"]
|
|
1511
|
+
parts: List[str] = []
|
|
1512
|
+
parts.append("## Guardrails\n")
|
|
1513
|
+
parts.append("- Always check `tools/manifest.md` before writing a new script")
|
|
1514
|
+
parts.append("- Verify tool output format before chaining into another tool")
|
|
1515
|
+
parts.append("- Do not assume APIs support batch operations -- check first")
|
|
1516
|
+
parts.append("- When a workflow fails mid-execution, preserve intermediate outputs before retrying")
|
|
1517
|
+
parts.append("- Read the full goal before starting a task -- do not skim")
|
|
1518
|
+
parts.append("- Audit trail is append-only -- NEVER add UPDATE/DELETE operations to audit tables")
|
|
1519
|
+
parts.append("- Never store secrets in code or config -- use secrets manager or K8s secrets")
|
|
1520
|
+
parts.append("- All containers must run as non-root with read-only root filesystem")
|
|
1521
|
+
|
|
1522
|
+
if caps.get("compliance", False):
|
|
1523
|
+
parts.append("- All generated artifacts MUST include classification markings appropriate to impact level")
|
|
1524
|
+
parts.append("- SBOM must be regenerated on every build")
|
|
1525
|
+
parts.append("- When implementing a NIST 800-53 control, always call crosswalk engine to auto-populate FedRAMP/CMMC/800-171 status")
|
|
1526
|
+
|
|
1527
|
+
if caps.get("security", False):
|
|
1528
|
+
parts.append("- Security gates block on: CAT1 STIG findings, critical/high vulnerabilities, failed tests, missing markings")
|
|
1529
|
+
if caps.get("ai_security", False):
|
|
1530
|
+
parts.append("- AI Security gates block on: prompt injection defense inactive, AI telemetry disabled, AI BOM missing, ATLAS coverage < 80%")
|
|
1531
|
+
if caps.get("devsecops_zta", False):
|
|
1532
|
+
parts.append("- ZTA gates block on: maturity < Advanced for IL4+, mTLS not enforced with service mesh, no default-deny NetworkPolicy")
|
|
1533
|
+
if caps.get("ricoas", False):
|
|
1534
|
+
parts.append("- RICOAS gates block on: readiness score < 0.7, unresolved critical gaps, RED requirements without alternative COAs")
|
|
1535
|
+
if caps.get("observability", False):
|
|
1536
|
+
parts.append("- Observability gates block on: tracing not active, provenance graph empty, XAI assessment not completed")
|
|
1537
|
+
if caps.get("code_intelligence", False):
|
|
1538
|
+
parts.append("- Code Quality gates block on: average cyclomatic complexity > 25")
|
|
1539
|
+
|
|
1540
|
+
parts.append(
|
|
1541
|
+
"- **This application CANNOT generate child applications** -- it is a generated "
|
|
1542
|
+
"child app of ICDEV. The agentic fitness assessor, app blueprint engine, and "
|
|
1543
|
+
"child app generator are intentionally excluded."
|
|
1544
|
+
)
|
|
1545
|
+
|
|
1546
|
+
# Parent callback
|
|
1547
|
+
parent = ctx["parent_callback"]
|
|
1548
|
+
if parent.get("enabled", False):
|
|
1549
|
+
parts.append("")
|
|
1550
|
+
parts.append("### A2A Parent Callback\n")
|
|
1551
|
+
parts.append("When this application needs capabilities not included locally, it calls back to parent ICDEV:")
|
|
1552
|
+
parts.append(f"- **Callback URL:** {parent.get('url', 'N/A')}")
|
|
1553
|
+
parts.append(f"- **Auth method:** {parent.get('auth', 'N/A')}")
|
|
1554
|
+
parts.append("- **Excluded capabilities:** app generation, modernization")
|
|
1555
|
+
|
|
1556
|
+
# Cloud provider
|
|
1557
|
+
cloud = ctx["cloud_provider"]
|
|
1558
|
+
if cloud.get("mcp_servers"):
|
|
1559
|
+
parts.append("")
|
|
1560
|
+
parts.append("### Cloud Service Provider Integration\n")
|
|
1561
|
+
provider = cloud.get("provider", "aws").upper()
|
|
1562
|
+
region = cloud.get("region", "N/A")
|
|
1563
|
+
parts.append(f"**Target:** {provider} ({region})")
|
|
1564
|
+
if cloud.get("govcloud", False):
|
|
1565
|
+
parts.append("**Partition:** GovCloud")
|
|
1566
|
+
parts.append("\n**MCP Servers:**")
|
|
1567
|
+
for server in cloud["mcp_servers"]:
|
|
1568
|
+
parts.append(f"- {server}")
|
|
1569
|
+
|
|
1570
|
+
parts.append("")
|
|
1571
|
+
return "\n".join(parts)
|
|
1572
|
+
|
|
1573
|
+
|
|
1574
|
+
def _build_decisions_section(ctx: Dict[str, Any]) -> str:
|
|
1575
|
+
"""Build the key architecture decisions section for fallback rendering."""
|
|
1576
|
+
parts: List[str] = []
|
|
1577
|
+
parts.append("## Key Architecture Decisions\n")
|
|
1578
|
+
for decision in ctx["key_decisions"]:
|
|
1579
|
+
parts.append(f"- **{decision['id']}:** {decision['text']}")
|
|
1580
|
+
parts.append("")
|
|
1581
|
+
return "\n".join(parts)
|
|
1582
|
+
|
|
1583
|
+
|
|
1584
|
+
# ===========================================================================
|
|
1585
|
+
# PUBLIC API
|
|
1586
|
+
# ===========================================================================
|
|
1587
|
+
|
|
1588
|
+
def generate_claude_md(blueprint: Dict[str, Any]) -> str:
|
|
1589
|
+
"""Generate CLAUDE.md content from a blueprint.
|
|
1590
|
+
|
|
1591
|
+
Uses Jinja2 if available, falls back to simple string formatting.
|
|
1592
|
+
Both renderers produce functionally equivalent output.
|
|
1593
|
+
|
|
1594
|
+
Args:
|
|
1595
|
+
blueprint: Blueprint dict from app_blueprint.py.
|
|
1596
|
+
|
|
1597
|
+
Returns:
|
|
1598
|
+
Rendered CLAUDE.md content string.
|
|
1599
|
+
"""
|
|
1600
|
+
if _HAS_JINJA2:
|
|
1601
|
+
logger.info("Rendering CLAUDE.md with Jinja2 template engine")
|
|
1602
|
+
return _generate_with_jinja2(blueprint)
|
|
1603
|
+
else:
|
|
1604
|
+
logger.info("Jinja2 not available -- using fallback string renderer")
|
|
1605
|
+
return _generate_fallback(blueprint)
|
|
1606
|
+
|
|
1607
|
+
|
|
1608
|
+
# ===========================================================================
|
|
1609
|
+
# CLI ENTRY POINT
|
|
1610
|
+
# ===========================================================================
|
|
1611
|
+
|
|
1612
|
+
def main():
|
|
1613
|
+
"""CLI entry point for the CLAUDE.md generator."""
|
|
1614
|
+
logging.basicConfig(
|
|
1615
|
+
level=logging.INFO,
|
|
1616
|
+
format="%(asctime)s [%(name)s] %(levelname)s: %(message)s",
|
|
1617
|
+
)
|
|
1618
|
+
|
|
1619
|
+
parser = argparse.ArgumentParser(
|
|
1620
|
+
description=(
|
|
1621
|
+
"Dynamic CLAUDE.md Generator -- creates adaptive documentation "
|
|
1622
|
+
"for child apps from a deployment blueprint."
|
|
1623
|
+
),
|
|
1624
|
+
)
|
|
1625
|
+
parser.add_argument(
|
|
1626
|
+
"--blueprint",
|
|
1627
|
+
required=True,
|
|
1628
|
+
help="Path to blueprint JSON file (output of app_blueprint.py)",
|
|
1629
|
+
)
|
|
1630
|
+
parser.add_argument(
|
|
1631
|
+
"--output",
|
|
1632
|
+
default=None,
|
|
1633
|
+
help="Write CLAUDE.md to this file path (default: stdout)",
|
|
1634
|
+
)
|
|
1635
|
+
parser.add_argument(
|
|
1636
|
+
"--json",
|
|
1637
|
+
action="store_true",
|
|
1638
|
+
dest="json_output",
|
|
1639
|
+
help="Wrap output in JSON envelope with metadata",
|
|
1640
|
+
)
|
|
1641
|
+
parser.add_argument(
|
|
1642
|
+
"--verbose", "-v",
|
|
1643
|
+
action="store_true",
|
|
1644
|
+
help="Enable debug logging",
|
|
1645
|
+
)
|
|
1646
|
+
|
|
1647
|
+
args = parser.parse_args()
|
|
1648
|
+
|
|
1649
|
+
if args.verbose:
|
|
1650
|
+
logging.getLogger().setLevel(logging.DEBUG)
|
|
1651
|
+
|
|
1652
|
+
# Load blueprint
|
|
1653
|
+
try:
|
|
1654
|
+
blueprint = _load_blueprint(args.blueprint)
|
|
1655
|
+
except (FileNotFoundError, json.JSONDecodeError, ValueError) as e:
|
|
1656
|
+
logger.error("Failed to load blueprint: %s", e)
|
|
1657
|
+
sys.exit(1)
|
|
1658
|
+
|
|
1659
|
+
# Generate content
|
|
1660
|
+
try:
|
|
1661
|
+
content = generate_claude_md(blueprint)
|
|
1662
|
+
except Exception as e:
|
|
1663
|
+
logger.error("Failed to generate CLAUDE.md: %s", e)
|
|
1664
|
+
sys.exit(1)
|
|
1665
|
+
|
|
1666
|
+
content_hash = _compute_content_hash(content)
|
|
1667
|
+
line_count = content.count("\n") + 1
|
|
1668
|
+
renderer = "jinja2" if _HAS_JINJA2 else "fallback"
|
|
1669
|
+
|
|
1670
|
+
logger.info(
|
|
1671
|
+
"Generated CLAUDE.md: %d lines, hash=%s, renderer=%s",
|
|
1672
|
+
line_count,
|
|
1673
|
+
content_hash[:16] + "...",
|
|
1674
|
+
renderer,
|
|
1675
|
+
)
|
|
1676
|
+
|
|
1677
|
+
# Audit trail
|
|
1678
|
+
try:
|
|
1679
|
+
audit_log_event(
|
|
1680
|
+
event_type="claude_md.generated",
|
|
1681
|
+
actor="builder/claude_md_generator",
|
|
1682
|
+
action=f"Generated CLAUDE.md for '{blueprint.get('app_name', 'unknown')}'",
|
|
1683
|
+
project_id=blueprint.get("blueprint_id", ""),
|
|
1684
|
+
details=json.dumps({
|
|
1685
|
+
"app_name": blueprint.get("app_name"),
|
|
1686
|
+
"blueprint_id": blueprint.get("blueprint_id"),
|
|
1687
|
+
"blueprint_hash": blueprint.get("blueprint_hash", "")[:32],
|
|
1688
|
+
"content_hash": content_hash[:32],
|
|
1689
|
+
"line_count": line_count,
|
|
1690
|
+
"renderer": renderer,
|
|
1691
|
+
"capabilities_enabled": sum(
|
|
1692
|
+
1 for v in blueprint.get("capabilities", {}).values() if v
|
|
1693
|
+
),
|
|
1694
|
+
"agent_count": len(blueprint.get("agents", [])),
|
|
1695
|
+
}),
|
|
1696
|
+
)
|
|
1697
|
+
except Exception as e:
|
|
1698
|
+
logger.debug("Audit log failed: %s", e)
|
|
1699
|
+
|
|
1700
|
+
# Output
|
|
1701
|
+
if args.json_output:
|
|
1702
|
+
envelope = {
|
|
1703
|
+
"status": "success",
|
|
1704
|
+
"generator": "icdev/claude_md_generator",
|
|
1705
|
+
"blueprint_id": blueprint.get("blueprint_id", ""),
|
|
1706
|
+
"app_name": blueprint.get("app_name", ""),
|
|
1707
|
+
"renderer": renderer,
|
|
1708
|
+
"content_hash": content_hash,
|
|
1709
|
+
"line_count": line_count,
|
|
1710
|
+
"generated_at": datetime.now(tz=timezone.utc).isoformat(),
|
|
1711
|
+
"content": content,
|
|
1712
|
+
}
|
|
1713
|
+
output_json = json.dumps(envelope, indent=2, ensure_ascii=False)
|
|
1714
|
+
|
|
1715
|
+
if args.output:
|
|
1716
|
+
output_path = Path(args.output)
|
|
1717
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
1718
|
+
output_path.write_text(output_json, encoding="utf-8")
|
|
1719
|
+
logger.info("JSON envelope written to %s", args.output)
|
|
1720
|
+
else:
|
|
1721
|
+
print(output_json)
|
|
1722
|
+
|
|
1723
|
+
else:
|
|
1724
|
+
if args.output:
|
|
1725
|
+
output_path = Path(args.output)
|
|
1726
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
1727
|
+
output_path.write_text(content, encoding="utf-8")
|
|
1728
|
+
logger.info("CLAUDE.md written to %s", args.output)
|
|
1729
|
+
else:
|
|
1730
|
+
print(content)
|
|
1731
|
+
|
|
1732
|
+
|
|
1733
|
+
if __name__ == "__main__":
|
|
1734
|
+
main()
|