icdev 0.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- args/agent_config.yaml +113 -0
- args/audit_regimes/cisa_sbd.json +381 -0
- args/audit_regimes/cmmc_l2.json +906 -0
- args/audit_regimes/dod_cssp.json +393 -0
- args/audit_regimes/dodi_5000_87.json +297 -0
- args/audit_regimes/fedramp_moderate.json +650 -0
- args/audit_regimes/ieee_1012.json +373 -0
- args/audit_regimes/nist_800_171.json +624 -0
- args/audit_regimes/nist_800_53.json +907 -0
- args/cloudforge_blueprints/aws_commercial.yaml +29 -0
- args/cloudforge_blueprints/aws_govcloud_il4.yaml +34 -0
- args/cloudforge_blueprints/aws_govcloud_il5.yaml +38 -0
- args/cloudforge_blueprints/azure_commercial.yaml +28 -0
- args/cloudforge_blueprints/azure_gov_il4.yaml +32 -0
- args/cloudforge_blueprints/azure_gov_il5.yaml +36 -0
- args/cloudforge_blueprints/gcp_commercial.yaml +28 -0
- args/cloudforge_blueprints/oci_commercial.yaml +28 -0
- args/cloudforge_config.yaml +231 -0
- args/cloudforge_runbook_templates/backup_verify.yaml +98 -0
- args/cloudforge_runbook_templates/dr_failover.yaml +107 -0
- args/cloudforge_runbook_templates/health_check.yaml +97 -0
- args/cloudforge_runbook_templates/incident_response.yaml +101 -0
- args/cloudforge_runbook_templates/migration_cutover.yaml +105 -0
- args/cloudforge_runbook_templates/patch_rollout.yaml +92 -0
- args/cloudforge_runbook_templates/zone_provision.yaml +93 -0
- args/code_pattern_config.yaml +151 -0
- args/code_quality_config.yaml +47 -0
- args/compliance_config.yaml +17 -0
- args/control_inheritance.yaml +177 -0
- args/csp_mcp_config.yaml +41 -0
- args/cui_markings.yaml +35 -0
- args/databridge_config.yaml +232 -0
- args/db_config.yaml +116 -0
- args/decision_tables/agent_trust_decision.yaml +143 -0
- args/decision_tables/ato_boundary_impact.yaml +132 -0
- args/decision_tables/deployment_approval.yaml +152 -0
- args/degradation_matrix.yaml +163 -0
- args/devsecops_config.yaml +286 -0
- args/endpoint_security_config.yaml +207 -0
- args/exit_criteria.yaml +102 -0
- args/feature_flags.yaml +235 -0
- args/file_access_tiers.yaml +88 -0
- args/forge_studio/blueprint_config.yaml +27 -0
- args/forge_studio/component_catalog.json +411 -0
- args/forge_studio/workflow_templates.yaml +103 -0
- args/govcon_config.yaml +41 -0
- args/harness_config.yaml +67 -0
- args/innovation_config.yaml +321 -0
- args/knowledge_graph_config.yaml +113 -0
- args/llm_config.yaml +222 -0
- args/marketplace_config.yaml +260 -0
- args/monitoring_config.yaml +127 -0
- args/mosa_config.yaml +190 -0
- args/observability_tracing_config.yaml +170 -0
- args/owasp_agentic_config.yaml +171 -0
- args/pipeline_gates.yaml +197 -0
- args/project_defaults.yaml +235 -0
- args/prompt_chains.yaml +163 -0
- args/rag_config.yaml +167 -0
- args/research_config.yaml +89 -0
- args/resilience_config.yaml +197 -0
- args/ricoas_config.yaml +191 -0
- args/security_gates.yaml +763 -0
- args/storage_config.yaml +63 -0
- args/writeguard_config.yaml +131 -0
- args/zta_config.yaml +247 -0
- context/__init__.py +6 -0
- context/agent/__init__.py +6 -0
- context/agent/response_schemas/__init__.py +6 -0
- context/agent/response_schemas/debate_position.json +46 -0
- context/agent/response_schemas/fitness_scorecard.json +74 -0
- context/agent/response_schemas/review_decision.json +39 -0
- context/agent/response_schemas/task_decomposition.json +82 -0
- context/agent/response_schemas/veto_decision.json +40 -0
- context/agentic/__init__.py +6 -0
- context/agentic/architecture_patterns.md +269 -0
- context/agentic/capability_registry.yaml +223 -0
- context/agentic/csp_integration.md +30 -0
- context/agentic/csp_mcp_registry.yaml +280 -0
- context/agentic/fitness_rubric.md +56 -0
- context/agentic/governance_baseline.md +205 -0
- context/ci/__init__.py +6 -0
- context/ci/worktree_templates.json +44 -0
- context/cloud/__init__.py +6 -0
- context/cloud/csp_service_registry.json +739 -0
- context/compliance/__init__.py +6 -0
- context/compliance/ai_rmf_crosswalk.yaml +226 -0
- context/compliance/atlas_mitigations.json +293 -0
- context/compliance/atlas_techniques.json +833 -0
- context/compliance/cisa_sbd_requirements.json +477 -0
- context/compliance/cjis_security_policy.json +522 -0
- context/compliance/cmmc_practices.json +2494 -0
- context/compliance/cmmc_report_template.md +142 -0
- context/compliance/cnssi_1253_overlay.json +109 -0
- context/compliance/control_crosswalk.json +1914 -0
- context/compliance/control_families/__init__.py +6 -0
- context/compliance/csp_certifications.json +251 -0
- context/compliance/cssp_report_template.md +193 -0
- context/compliance/cui_templates/__init__.py +6 -0
- context/compliance/cui_templates/banner_block.txt +4 -0
- context/compliance/cui_templates/code_header.txt +8 -0
- context/compliance/cui_templates/document_template.md +35 -0
- context/compliance/data_type_framework_map.json +321 -0
- context/compliance/data_type_registry.json +147 -0
- context/compliance/dod_cssp_8530.json +463 -0
- context/compliance/eu_ai_act_annex_iii.json +108 -0
- context/compliance/export_templates/__init__.py +6 -0
- context/compliance/export_templates/emass_controls.csv.j2 +4 -0
- context/compliance/export_templates/evidence_package.md.j2 +39 -0
- context/compliance/export_templates/executive_summary.md.j2 +55 -0
- context/compliance/export_templates/poam_tracking.csv.j2 +4 -0
- context/compliance/fedramp_20x_ksi_schemas.json +133 -0
- context/compliance/fedramp_high_baseline.json +4370 -0
- context/compliance/fedramp_moderate_baseline.json +2183 -0
- context/compliance/fedramp_report_template.md +181 -0
- context/compliance/fips_200_areas.json +362 -0
- context/compliance/gao_ai_accountability.json +262 -0
- context/compliance/hipaa_security_rule.json +720 -0
- context/compliance/hitrust_csf_v11.json +930 -0
- context/compliance/impact_level_profiles.json +251 -0
- context/compliance/incident_response_template.md +1110 -0
- context/compliance/iso27001_2022_controls.json +750 -0
- context/compliance/iso27001_nist_bridge.json +382 -0
- context/compliance/iso42001_controls.json +254 -0
- context/compliance/ivv_checklist_template.md +80 -0
- context/compliance/ivv_report_template.md +116 -0
- context/compliance/ivv_requirements.json +372 -0
- context/compliance/mosa_crosswalk.json +327 -0
- context/compliance/mosa_framework.json +250 -0
- context/compliance/narrative_templates/AC.md.j2 +101 -0
- context/compliance/narrative_templates/AU.md.j2 +106 -0
- context/compliance/narrative_templates/IA.md.j2 +104 -0
- context/compliance/narrative_templates/SC.md.j2 +102 -0
- context/compliance/narrative_templates/SI.md.j2 +111 -0
- context/compliance/narrative_templates/__init__.py +6 -0
- context/compliance/narrative_templates/default.md.j2 +50 -0
- context/compliance/narrative_templates/executive_summary.j2 +27 -0
- context/compliance/narrative_templates/poam_milestone.j2 +19 -0
- context/compliance/narrative_templates/ssp_section.j2 +11 -0
- context/compliance/nist_800_171_controls.json +1552 -0
- context/compliance/nist_800_207_crosswalk.json +399 -0
- context/compliance/nist_800_207_zta.json +258 -0
- context/compliance/nist_800_53.json +324 -0
- context/compliance/nist_ai_600_1_genai.json +326 -0
- context/compliance/nist_ai_rmf.json +206 -0
- context/compliance/nist_sp_800_60_types.json +1667 -0
- context/compliance/omb_m25_21_high_impact_ai.json +248 -0
- context/compliance/omb_m26_04_unbiased_ai.json +262 -0
- context/compliance/owasp_agentic_asi.json +133 -0
- context/compliance/owasp_agentic_threats.json +285 -0
- context/compliance/owasp_llm_top10.json +274 -0
- context/compliance/pci_dss_v4.json +510 -0
- context/compliance/poam_template.md +117 -0
- context/compliance/safeai_controls.json +512 -0
- context/compliance/sbd_report_template.md +77 -0
- context/compliance/siem_config_templates/__init__.py +6 -0
- context/compliance/siem_config_templates/filebeat.yml +213 -0
- context/compliance/siem_config_templates/log_sources.json +208 -0
- context/compliance/soc2_trust_criteria.json +661 -0
- context/compliance/ssp_template.md +432 -0
- context/compliance/stig_templates/__init__.py +6 -0
- context/compliance/stig_templates/webapp_stig.json +139 -0
- context/compliance/xai_requirements.json +108 -0
- context/dashboard/__init__.py +6 -0
- context/dashboard/nlq_examples.json +50 -0
- context/dashboard/schema_descriptions.json +23 -0
- context/icdev_methodology.md +100 -0
- context/integration/__init__.py +6 -0
- context/integration/approval_workflows.json +32 -0
- context/integration/gitlab_field_mappings.json +33 -0
- context/integration/jira_field_mappings.json +32 -0
- context/integration/reqif_export_schema.json +23 -0
- context/integration/servicenow_field_mappings.json +22 -0
- context/languages/__init__.py +6 -0
- context/languages/framework_patterns.json +205 -0
- context/languages/language_registry.json +279 -0
- context/llm/__init__.py +6 -0
- context/llm/example_provider.py +89 -0
- context/marketplace/assets/writeguard-core.yaml +100 -0
- context/marketplace/assets/writeguard-govcon.yaml +45 -0
- context/marketplace/assets/writeguard-style-guides.yaml +44 -0
- context/mbse/__init__.py +6 -0
- context/mbse/des_report_template.md +162 -0
- context/mbse/des_requirements.json +411 -0
- context/mbse/digital_thread_patterns.json +403 -0
- context/mbse/reqif_schema.json +280 -0
- context/mbse/sysml_element_types.json +432 -0
- context/oscal/NIST_SP-800-53_rev5_catalog.json +254987 -0
- context/oscal/README.md +43 -0
- context/patterns/__init__.py +6 -0
- context/profiles/__init__.py +6 -0
- context/profiles/dod_baseline_v1.yaml +145 -0
- context/profiles/fedramp_baseline_v1.yaml +143 -0
- context/profiles/financial_baseline_v1.yaml +142 -0
- context/profiles/healthcare_baseline_v1.yaml +135 -0
- context/profiles/law_enforcement_v1.yaml +129 -0
- context/profiles/startup_v1.yaml +134 -0
- context/rag/source_mappings.json +42 -0
- context/requirements/__init__.py +6 -0
- context/requirements/ambiguity_patterns.json +97 -0
- context/requirements/boundary_impact_rules.json +123 -0
- context/requirements/default_constitutions.json +67 -0
- context/requirements/document_extraction_rules.json +58 -0
- context/requirements/gap_patterns.json +108 -0
- context/requirements/readiness_rubric.json +78 -0
- context/requirements/red_alternative_patterns.json +210 -0
- context/requirements/safe_templates.json +72 -0
- context/requirements/spec_quality_checklist.json +122 -0
- context/research/regulatory_registry.json +114 -0
- context/research/verticals/cybersecurity.json +127 -0
- context/research/verticals/defense.json +104 -0
- context/research/verticals/fintech.json +125 -0
- context/research/verticals/healthcare.json +118 -0
- context/research/verticals/logistics.json +117 -0
- context/research/verticals/trading.json +145 -0
- context/simulation/__init__.py +6 -0
- context/simulation/architecture_patterns.json +36 -0
- context/simulation/coa_templates.json +38 -0
- context/simulation/cost_models.json +23 -0
- context/simulation/risk_categories.json +46 -0
- context/supply_chain/__init__.py +6 -0
- context/supply_chain/isa_templates.json +129 -0
- context/supply_chain/nist_800_161_controls.json +247 -0
- context/supply_chain/scrm_risk_matrix.json +147 -0
- context/templates/__init__.py +6 -0
- context/templates/ansible/__init__.py +6 -0
- context/templates/ansible/playbooks/__init__.py +6 -0
- context/templates/ansible/roles/__init__.py +6 -0
- context/templates/gitlab_ci/__init__.py +6 -0
- context/templates/grafana/__init__.py +6 -0
- context/templates/kubernetes/__init__.py +6 -0
- context/templates/project/__init__.py +6 -0
- context/templates/project/api/__init__.py +6 -0
- context/templates/project/cli/__init__.py +6 -0
- context/templates/project/data_pipeline/__init__.py +6 -0
- context/templates/project/iac/__init__.py +6 -0
- context/templates/project/javascript_frontend/__init__.py +6 -0
- context/templates/project/javascript_frontend/src/__init__.py +6 -0
- context/templates/project/javascript_frontend/tests/__init__.py +6 -0
- context/templates/project/microservice/__init__.py +6 -0
- context/templates/project/python_backend/__init__.py +6 -0
- context/templates/project/python_backend/src/__init__.py +6 -0
- context/templates/project/python_backend/tests/__init__.py +6 -0
- context/templates/project/python_backend/tests/features/__init__.py +6 -0
- context/templates/project/python_backend/tests/steps/__init__.py +6 -0
- context/templates/terraform/__init__.py +6 -0
- context/templates/terraform/govcloud_base/__init__.py +6 -0
- context/templates/terraform/modules/__init__.py +6 -0
- context/tone/__init__.py +6 -0
- context/writing/grammar_rules/common_errors.json +306 -0
- context/writing/grammar_rules/govcon_vocabulary.json +113 -0
- context/writing/style_guides/academic.yaml +43 -0
- context/writing/style_guides/business.yaml +42 -0
- context/writing/style_guides/government.yaml +59 -0
- context/writing/style_guides/proposal.yaml +58 -0
- context/writing/style_guides/technical.yaml +43 -0
- docs/adr/README.md +66 -0
- docs/adr/connector-forge-decisions.md +318 -0
- docs/adr/core-decisions.md +289 -0
- docs/adr/db-decisions.md +94 -0
- docs/adr/harness-decisions.md +122 -0
- docs/adr/innovation-decisions.md +262 -0
- docs/adr/marketplace-decisions.md +109 -0
- docs/adr/sbd-decisions.md +109 -0
- docs/adr/scale-engine-decisions.md +108 -0
- docs/adr/writeguard-decisions.md +136 -0
- docs/architecture/bounded-contexts.md +1032 -0
- docs/features/phase-65-writeguard.md +139 -0
- docs/features/phase-66-marketplace-commerce.md +79 -0
- docs/features/phase-67-knowledge-ingestion-rag-autodraft.md +97 -0
- docs/features/phase-68-enhanced-autodraft-pipeline.md +109 -0
- docs/features/phase-69-proposalai-marketplace-module.md +131 -0
- docs/features/phase-70-databridge.md +214 -0
- docs/features/phase-71-databridge-messaging.md +102 -0
- docs/implementation-plan-architecture-evolution.md +614 -0
- docs/marketplace/CONTRIBUTING.md +124 -0
- docs/marketplace/module_manifest_schema.yaml +83 -0
- docs/research/ai-architecture-patterns-2024-2026.md +1236 -0
- docs/research/app-builder-platform-analysis.md +582 -0
- docs/research/architecture-patterns-c4-ddd-agentic.md +871 -0
- docs/research/flowable-boat-competitive-analysis.md +426 -0
- docs/research/modern-dev-practices-2024-2026.md +1615 -0
- docs/research/secure-by-design-cloudyrion-adaptation.md +270 -0
- goals/agent_management.md +144 -0
- goals/ai_accountability.md +90 -0
- goals/ai_narratives.md +79 -0
- goals/ai_transparency.md +76 -0
- goals/ato_simulator.md +78 -0
- goals/audit_engine.md +177 -0
- goals/bite_sized_plans.md +225 -0
- goals/boundary_supply_chain.md +206 -0
- goals/brainstorming_gate.md +186 -0
- goals/build_app.md +604 -0
- goals/cato_live_evidence.md +77 -0
- goals/cloudforge.md +106 -0
- goals/code_intelligence.md +197 -0
- goals/compliance_workflow.md +858 -0
- goals/connector_forge.md +133 -0
- goals/databridge.md +128 -0
- goals/deploy_workflow.md +390 -0
- goals/developer_scorecard.md +78 -0
- goals/devsecops_workflow.md +408 -0
- goals/firmware_sbom.md +79 -0
- goals/forge_hub.md +78 -0
- goals/golden_path.md +77 -0
- goals/harness_engineering.md +91 -0
- goals/integration_testing.md +189 -0
- goals/knowledge_graph.md +128 -0
- goals/maintenance_audit.md +196 -0
- goals/manifest.md +50 -0
- goals/monitoring.md +126 -0
- goals/mosa_workflow.md +463 -0
- goals/multi_agent_orchestration.md +68 -0
- goals/observability_traceability_xai.md +154 -0
- goals/owasp_agentic_security.md +395 -0
- goals/pr_intelligence.md +78 -0
- goals/requirements_intake.md +213 -0
- goals/secure_by_design.md +135 -0
- goals/security_scan.md +381 -0
- goals/self_healing.md +120 -0
- goals/simulation_engine.md +111 -0
- goals/subagent_review.md +205 -0
- goals/systematic_debugging.md +257 -0
- goals/tdd_workflow.md +403 -0
- goals/template_exchange.md +77 -0
- goals/thread_heatmap.md +77 -0
- goals/threat_modeler.md +77 -0
- goals/verification_iron_law.md +192 -0
- goals/vsm_dashboard.md +76 -0
- goals/writeguard.md +89 -0
- goals/zero_trust_architecture.md +403 -0
- hardprompts/__init__.py +6 -0
- hardprompts/agent/__init__.py +6 -0
- hardprompts/agent/agentic_architect.md +100 -0
- hardprompts/agent/debate_prompt.md +32 -0
- hardprompts/agent/fitness_evaluation.md +48 -0
- hardprompts/agent/governance_review.md +214 -0
- hardprompts/agent/reviewer_prompt.md +34 -0
- hardprompts/agent/skill_design.md +172 -0
- hardprompts/agent/task_decomposition.md +275 -0
- hardprompts/agent/veto_check_prompt.md +33 -0
- hardprompts/architect/__init__.py +6 -0
- hardprompts/architect/api_design.md +283 -0
- hardprompts/architect/data_model.md +277 -0
- hardprompts/architect/system_design.md +180 -0
- hardprompts/builder/__init__.py +6 -0
- hardprompts/builder/code_generation.md +59 -0
- hardprompts/builder/refactor.md +58 -0
- hardprompts/builder/scaffold_project.md +69 -0
- hardprompts/builder/test_generation.md +87 -0
- hardprompts/ci/__init__.py +6 -0
- hardprompts/ci/worktree_setup.md +35 -0
- hardprompts/compliance/__init__.py +6 -0
- hardprompts/compliance/cmmc_assessment.md +63 -0
- hardprompts/compliance/cssp_assessment.md +75 -0
- hardprompts/compliance/cui_marking.md +86 -0
- hardprompts/compliance/fedramp_assessment.md +55 -0
- hardprompts/compliance/ivv_assessment.md +96 -0
- hardprompts/compliance/poam_generation.md +57 -0
- hardprompts/compliance/sbd_assessment.md +101 -0
- hardprompts/compliance/security_categorization.md +74 -0
- hardprompts/compliance/ssp_generation.md +56 -0
- hardprompts/compliance/stig_evaluation.md +63 -0
- hardprompts/dashboard/__init__.py +6 -0
- hardprompts/dashboard/nlq_system_prompt.md +26 -0
- hardprompts/infra/__init__.py +6 -0
- hardprompts/infra/k8s_manifests.md +118 -0
- hardprompts/infra/pipeline_generation.md +160 -0
- hardprompts/infra/terraform_generation.md +92 -0
- hardprompts/integration/__init__.py +6 -0
- hardprompts/integration/approval_review.md +17 -0
- hardprompts/integration/jira_mapping.md +25 -0
- hardprompts/integration/servicenow_mapping.md +14 -0
- hardprompts/knowledge/__init__.py +6 -0
- hardprompts/knowledge/pattern_detection.md +73 -0
- hardprompts/knowledge/recommendation_engine.md +90 -0
- hardprompts/knowledge/root_cause_analysis.md +91 -0
- hardprompts/maintenance/__init__.py +6 -0
- hardprompts/maintenance/maintenance_assessment.md +82 -0
- hardprompts/mbse/__init__.py +6 -0
- hardprompts/mbse/digital_thread.md +67 -0
- hardprompts/mbse/model_import.md +62 -0
- hardprompts/mbse/model_to_code.md +65 -0
- hardprompts/modernization/__init__.py +6 -0
- hardprompts/modernization/legacy_analysis.md +93 -0
- hardprompts/modernization/migration_planning.md +150 -0
- hardprompts/modernization/seven_r_assessment.md +107 -0
- hardprompts/proposal_draft.md +53 -0
- hardprompts/rag_citation.md +12 -0
- hardprompts/rag_rerank.md +31 -0
- hardprompts/requirements/__init__.py +6 -0
- hardprompts/requirements/bdd_generation.md +35 -0
- hardprompts/requirements/clarification_prioritization.md +29 -0
- hardprompts/requirements/decomposition.md +60 -0
- hardprompts/requirements/document_extraction.md +45 -0
- hardprompts/requirements/gap_detection.md +70 -0
- hardprompts/requirements/intake_conversation.md +101 -0
- hardprompts/requirements/readiness_assessment.md +39 -0
- hardprompts/requirements/spec_quality.md +33 -0
- hardprompts/requirements/traceability_analysis.md +23 -0
- hardprompts/security/__init__.py +6 -0
- hardprompts/security/endpoint_security.md +78 -0
- hardprompts/security/threat_model.md +70 -0
- hardprompts/security/vulnerability_assessment.md +81 -0
- hardprompts/simulation/__init__.py +6 -0
- hardprompts/simulation/architecture_impact.md +27 -0
- hardprompts/simulation/coa_alternative.md +27 -0
- hardprompts/simulation/coa_generation.md +25 -0
- hardprompts/simulation/compliance_impact.md +28 -0
- hardprompts/simulation/cost_estimation.md +33 -0
- hardprompts/simulation/risk_assessment.md +28 -0
- hardprompts/translation/code_translation.md +68 -0
- hardprompts/translation/dependency_suggestion.md +44 -0
- hardprompts/translation/test_translation.md +64 -0
- hardprompts/translation/translation_repair.md +59 -0
- icdev-0.0.3.dist-info/METADATA +909 -0
- icdev-0.0.3.dist-info/RECORD +1214 -0
- icdev-0.0.3.dist-info/WHEEL +5 -0
- icdev-0.0.3.dist-info/entry_points.txt +9 -0
- icdev-0.0.3.dist-info/licenses/LICENSE +201 -0
- icdev-0.0.3.dist-info/licenses/NOTICE +11 -0
- icdev-0.0.3.dist-info/top_level.txt +7 -0
- memory/MEMORY.md +52 -0
- memory/logs/2026-02-14.md +17 -0
- memory/logs/2026-03-03.md +2 -0
- memory/logs/__init__.py +1 -0
- tools/a2a/icdev_callback_client.py +210 -0
- tools/agent/cards/architect_card.json +29 -0
- tools/agent/cards/builder_card.json +34 -0
- tools/agent/cards/compliance_card.json +29 -0
- tools/agent/cards/connector_forge_card.json +49 -0
- tools/agent/cards/devsecops_zta_card.json +24 -0
- tools/agent/cards/knowledge_card.json +29 -0
- tools/agent/cards/monitor_card.json +29 -0
- tools/agent/cards/orchestrator_card.json +29 -0
- tools/agent/cards/requirements_analyst_card.json +24 -0
- tools/agent/cards/security_card.json +29 -0
- tools/agent/cards/simulation_card.json +24 -0
- tools/agent/cards/supply_chain_card.json +24 -0
- tools/analysis/__init__.py +1 -0
- tools/analysis/code_analyzer.py +770 -0
- tools/analysis/runtime_feedback.py +379 -0
- tools/analytics/__init__.py +2 -0
- tools/analytics/scorecard.py +538 -0
- tools/analytics/vsm_engine.py +612 -0
- tools/architecture/__init__.py +2 -0
- tools/architecture/adr_extractor.py +393 -0
- tools/audit/__init__.py +1 -0
- tools/audit/audit_logger.py +199 -0
- tools/audit/audit_query.py +153 -0
- tools/audit/decision_recorder.py +73 -0
- tools/audit_engine/__init__.py +12 -0
- tools/audit_engine/ai_advisor.py +906 -0
- tools/audit_engine/cli.py +286 -0
- tools/audit_engine/comparator.py +305 -0
- tools/audit_engine/eject_scaffolder.py +399 -0
- tools/audit_engine/engine.py +614 -0
- tools/audit_engine/git_fetcher.py +341 -0
- tools/audit_engine/regime_loader.py +200 -0
- tools/audit_engine/regime_updater.py +325 -0
- tools/audit_engine/report_card.py +289 -0
- tools/audit_engine/scanner.py +684 -0
- tools/audit_engine/self_heal.py +1042 -0
- tools/ci/__init__.py +2 -0
- tools/ci/connectors/__init__.py +2 -0
- tools/ci/connectors/base_connector.py +80 -0
- tools/ci/connectors/connector_registry.py +188 -0
- tools/ci/connectors/mattermost_connector.py +159 -0
- tools/ci/connectors/slack_connector.py +197 -0
- tools/ci/core/__init__.py +2 -0
- tools/ci/core/air_gap_detector.py +115 -0
- tools/ci/core/comment_handler.py +192 -0
- tools/ci/core/conversation_manager.py +480 -0
- tools/ci/core/event_envelope.py +500 -0
- tools/ci/core/event_router.py +444 -0
- tools/ci/core/failure_parser.py +397 -0
- tools/ci/core/recovery_engine.py +527 -0
- tools/ci/gate_enforcer.py +361 -0
- tools/ci/modules/__init__.py +2 -0
- tools/ci/modules/agent.py +271 -0
- tools/ci/modules/git_ops.py +175 -0
- tools/ci/modules/state.py +117 -0
- tools/ci/modules/vcs.py +303 -0
- tools/ci/modules/workflow_ops.py +295 -0
- tools/ci/modules/worktree.py +337 -0
- tools/ci/pipeline_config_generator.py +558 -0
- tools/ci/pr_intelligence.py +485 -0
- tools/ci/triggers/__init__.py +2 -0
- tools/ci/triggers/gitlab_task_monitor.py +327 -0
- tools/ci/triggers/poll_trigger.py +237 -0
- tools/ci/triggers/webhook_server.py +356 -0
- tools/ci/workflows/__init__.py +2 -0
- tools/ci/workflows/icdev_build.py +140 -0
- tools/ci/workflows/icdev_comply.py +284 -0
- tools/ci/workflows/icdev_document.py +152 -0
- tools/ci/workflows/icdev_e2e.py +188 -0
- tools/ci/workflows/icdev_patch.py +186 -0
- tools/ci/workflows/icdev_plan.py +202 -0
- tools/ci/workflows/icdev_plan_build.py +41 -0
- tools/ci/workflows/icdev_plan_build_test.py +46 -0
- tools/ci/workflows/icdev_plan_build_test_review.py +47 -0
- tools/ci/workflows/icdev_review.py +126 -0
- tools/ci/workflows/icdev_sdlc.py +261 -0
- tools/ci/workflows/icdev_test.py +240 -0
- tools/cli/__init__.py +1 -0
- tools/cli/output_formatter.py +756 -0
- tools/cloudforge/__init__.py +12 -0
- tools/cloudforge/airgap/__init__.py +2 -0
- tools/cloudforge/airgap/il_classifier.py +70 -0
- tools/cloudforge/airgap/offline_validator.py +42 -0
- tools/cloudforge/airgap/shift_emulator.py +155 -0
- tools/cloudforge/airgap/sneakernet.py +91 -0
- tools/cloudforge/cd_hub/__init__.py +2 -0
- tools/cloudforge/cd_hub/canary_deployer.py +88 -0
- tools/cloudforge/cd_hub/gitops_renderer.py +123 -0
- tools/cloudforge/cd_hub/hub_controller.py +143 -0
- tools/cloudforge/cd_hub/pipeline_bridge.py +30 -0
- tools/cloudforge/cd_hub/rollback_engine.py +29 -0
- tools/cloudforge/cd_hub/spoke_agent.py +51 -0
- tools/cloudforge/compliance/__init__.py +2 -0
- tools/cloudforge/compliance/ato_accelerator.py +272 -0
- tools/cloudforge/compliance/control_inheritor.py +127 -0
- tools/cloudforge/compliance/evidence_generator.py +129 -0
- tools/cloudforge/compliance/poam_bridge.py +41 -0
- tools/cloudforge/compliance/ssp_bridge.py +52 -0
- tools/cloudforge/compliance/stig_bridge.py +41 -0
- tools/cloudforge/container_forge/__init__.py +2 -0
- tools/cloudforge/container_forge/bigbang_renderer.py +85 -0
- tools/cloudforge/container_forge/hardener.py +169 -0
- tools/cloudforge/container_forge/image_scanner_bridge.py +33 -0
- tools/cloudforge/container_forge/runtime_policy.py +87 -0
- tools/cloudforge/container_forge/sbom_bridge.py +42 -0
- tools/cloudforge/finops/__init__.py +2 -0
- tools/cloudforge/finops/anomaly_detector.py +78 -0
- tools/cloudforge/finops/budget_tracker.py +96 -0
- tools/cloudforge/finops/chargeback.py +69 -0
- tools/cloudforge/finops/cost_collector.py +141 -0
- tools/cloudforge/finops/optimizer.py +55 -0
- tools/cloudforge/hybrid/__init__.py +2 -0
- tools/cloudforge/hybrid/connection_manager.py +141 -0
- tools/cloudforge/hybrid/dns_federator.py +56 -0
- tools/cloudforge/hybrid/health_monitor.py +108 -0
- tools/cloudforge/hybrid/identity_federator.py +53 -0
- tools/cloudforge/hybrid/network_bridge.py +68 -0
- tools/cloudforge/hybrid/topology_manager.py +147 -0
- tools/cloudforge/hybrid/workload_abstractor.py +92 -0
- tools/cloudforge/iac/__init__.py +2 -0
- tools/cloudforge/iac/drift_detector.py +154 -0
- tools/cloudforge/iac/module_library.py +265 -0
- tools/cloudforge/iac/opentofu_adapter.py +89 -0
- tools/cloudforge/iac/pulumi_renderer.py +292 -0
- tools/cloudforge/iac/state_backend.py +146 -0
- tools/cloudforge/iac/terraform_renderer.py +626 -0
- tools/cloudforge/landing_zone/__init__.py +2 -0
- tools/cloudforge/landing_zone/blueprint_loader.py +98 -0
- tools/cloudforge/landing_zone/blueprint_validator.py +113 -0
- tools/cloudforge/landing_zone/zone_provisioner.py +306 -0
- tools/cloudforge/landing_zone/zone_state.py +143 -0
- tools/cloudforge/mbse_thread/__init__.py +2 -0
- tools/cloudforge/mbse_thread/ato_thread_weaver.py +111 -0
- tools/cloudforge/mbse_thread/control_tracer.py +68 -0
- tools/cloudforge/mbse_thread/system_boundary.py +83 -0
- tools/cloudforge/metastore/__init__.py +2 -0
- tools/cloudforge/metastore/dependency_graph.py +202 -0
- tools/cloudforge/metastore/discovery.py +192 -0
- tools/cloudforge/metastore/registry.py +185 -0
- tools/cloudforge/metastore/rto_tracker.py +92 -0
- tools/cloudforge/metastore/runbook_linker.py +82 -0
- tools/cloudforge/migration/__init__.py +2 -0
- tools/cloudforge/migration/assessor.py +187 -0
- tools/cloudforge/migration/cutover_orchestrator.py +117 -0
- tools/cloudforge/migration/databridge_bridge.py +92 -0
- tools/cloudforge/migration/planner.py +98 -0
- tools/cloudforge/migration/risk_scorer.py +97 -0
- tools/cloudforge/migration/validation_runner.py +45 -0
- tools/cloudforge/migration/workload_inventory.py +107 -0
- tools/cloudforge/provider.py +319 -0
- tools/cloudforge/providers/__init__.py +2 -0
- tools/cloudforge/providers/aws_commercial.py +92 -0
- tools/cloudforge/providers/aws_govcloud.py +229 -0
- tools/cloudforge/providers/aws_secret.py +83 -0
- tools/cloudforge/providers/azure_commercial.py +80 -0
- tools/cloudforge/providers/azure_gov.py +91 -0
- tools/cloudforge/providers/azure_secret.py +71 -0
- tools/cloudforge/providers/gcp.py +102 -0
- tools/cloudforge/providers/oci.py +102 -0
- tools/cloudforge/registry.py +140 -0
- tools/cloudforge/runbooks/__init__.py +2 -0
- tools/cloudforge/runbooks/ai_generator.py +119 -0
- tools/cloudforge/runbooks/dag_validator.py +219 -0
- tools/cloudforge/runbooks/engine.py +470 -0
- tools/cloudforge/runbooks/models.py +99 -0
- tools/cloudforge/runbooks/snippet_library.py +158 -0
- tools/cloudforge/runbooks/template_loader.py +122 -0
- tools/cloudforge/runbooks/visualization.py +108 -0
- tools/cloudforge/siem/__init__.py +2 -0
- tools/cloudforge/siem/alert_rules.py +86 -0
- tools/cloudforge/siem/correlation_engine.py +61 -0
- tools/cloudforge/siem/log_aggregator.py +113 -0
- tools/cloudforge/siem/siem_dashboard_data.py +28 -0
- tools/cloudforge/supply_chain/__init__.py +2 -0
- tools/cloudforge/supply_chain/bridge.py +33 -0
- tools/cloudforge/supply_chain/iac_dependency_scanner.py +36 -0
- tools/cloudforge/supply_chain/provider_trust_scorer.py +54 -0
- tools/compat/__init__.py +21 -0
- tools/compat/cli_harmonizer.py +251 -0
- tools/compat/datetime_utils.py +18 -0
- tools/compat/db_utils.py +190 -0
- tools/compat/platform_utils.py +123 -0
- tools/compliance/__init__.py +1 -0
- tools/compliance/accountability_manager.py +391 -0
- tools/compliance/ai_accountability_audit.py +287 -0
- tools/compliance/ai_impact_assessor.py +267 -0
- tools/compliance/ai_incident_response.py +295 -0
- tools/compliance/ai_inventory_manager.py +233 -0
- tools/compliance/ai_reassessment_scheduler.py +250 -0
- tools/compliance/ai_transparency_audit.py +247 -0
- tools/compliance/atlas_assessor.py +276 -0
- tools/compliance/atlas_report_generator.py +1199 -0
- tools/compliance/base_assessor.py +591 -0
- tools/compliance/cato_live_engine.py +607 -0
- tools/compliance/cato_monitor.py +1371 -0
- tools/compliance/cato_scheduler.py +698 -0
- tools/compliance/cjis_assessor.py +76 -0
- tools/compliance/classification_manager.py +1340 -0
- tools/compliance/cmmc_assessor.py +1478 -0
- tools/compliance/cmmc_report_generator.py +1087 -0
- tools/compliance/compliance_detector.py +452 -0
- tools/compliance/compliance_exporter.py +418 -0
- tools/compliance/compliance_status.py +810 -0
- tools/compliance/control_mapper.py +488 -0
- tools/compliance/crosswalk_engine.py +1208 -0
- tools/compliance/cssp_assessor.py +1032 -0
- tools/compliance/cssp_evidence_collector.py +716 -0
- tools/compliance/cssp_report_generator.py +1103 -0
- tools/compliance/cui_marker.py +387 -0
- tools/compliance/diagram_validator.py +599 -0
- tools/compliance/emass/__init__.py +2 -0
- tools/compliance/emass/emass_client.py +822 -0
- tools/compliance/emass/emass_export.py +758 -0
- tools/compliance/emass/emass_sync.py +807 -0
- tools/compliance/eu_ai_act_classifier.py +193 -0
- tools/compliance/evidence_collector.py +459 -0
- tools/compliance/fairness_assessor.py +310 -0
- tools/compliance/fedramp_20x_ksi_emitter.py +692 -0
- tools/compliance/fedramp_assessor.py +1795 -0
- tools/compliance/fedramp_authorization_packager.py +137 -0
- tools/compliance/fedramp_ksi_generator.py +349 -0
- tools/compliance/fedramp_report_generator.py +1115 -0
- tools/compliance/fips199_categorizer.py +869 -0
- tools/compliance/fips200_validator.py +304 -0
- tools/compliance/firmware_sbom.py +646 -0
- tools/compliance/gao_ai_assessor.py +228 -0
- tools/compliance/gao_evidence_builder.py +302 -0
- tools/compliance/hipaa_assessor.py +78 -0
- tools/compliance/hitrust_assessor.py +49 -0
- tools/compliance/incident_response_plan.py +705 -0
- tools/compliance/inheritance_engine.py +693 -0
- tools/compliance/iso27001_assessor.py +92 -0
- tools/compliance/iso42001_assessor.py +114 -0
- tools/compliance/ivv_assessor.py +2314 -0
- tools/compliance/ivv_report_generator.py +1649 -0
- tools/compliance/model_card_generator.py +291 -0
- tools/compliance/mosa_assessor.py +117 -0
- tools/compliance/multi_regime_assessor.py +441 -0
- tools/compliance/narrative_generator.py +1012 -0
- tools/compliance/narrative_quality_gate.py +701 -0
- tools/compliance/narrative_workflow.py +814 -0
- tools/compliance/nist_800_207_assessor.py +191 -0
- tools/compliance/nist_ai_600_1_assessor.py +185 -0
- tools/compliance/nist_ai_rmf_assessor.py +110 -0
- tools/compliance/nist_lookup.py +244 -0
- tools/compliance/omb_m25_21_assessor.py +225 -0
- tools/compliance/omb_m26_04_assessor.py +185 -0
- tools/compliance/oscal_catalog_adapter.py +395 -0
- tools/compliance/oscal_generator.py +2157 -0
- tools/compliance/oscal_tools.py +1182 -0
- tools/compliance/oscal_validator.py +692 -0
- tools/compliance/owasp_agentic_assessor.py +227 -0
- tools/compliance/owasp_asi_assessor.py +197 -0
- tools/compliance/owasp_llm_assessor.py +245 -0
- tools/compliance/pci_dss_assessor.py +80 -0
- tools/compliance/pi_compliance_tracker.py +1447 -0
- tools/compliance/poam_generator.py +388 -0
- tools/compliance/resolve_marking.py +272 -0
- tools/compliance/sbd_assessor.py +2070 -0
- tools/compliance/sbd_report_generator.py +1223 -0
- tools/compliance/sbom_generator.py +993 -0
- tools/compliance/siem_config_generator.py +661 -0
- tools/compliance/slsa_attestation_generator.py +479 -0
- tools/compliance/soc2_assessor.py +77 -0
- tools/compliance/ssp_generator.py +556 -0
- tools/compliance/stig_checker.py +712 -0
- tools/compliance/swft_evidence_bundler.py +326 -0
- tools/compliance/system_card_generator.py +303 -0
- tools/compliance/template_exchange.py +513 -0
- tools/compliance/traceability_matrix.py +1268 -0
- tools/compliance/universal_classification_manager.py +1159 -0
- tools/compliance/xacta/__init__.py +2 -0
- tools/compliance/xacta/xacta_client.py +438 -0
- tools/compliance/xacta/xacta_export.py +546 -0
- tools/compliance/xacta/xacta_sync.py +322 -0
- tools/compliance/xai_assessor.py +231 -0
- tools/core/__init__.py +2 -0
- tools/core/circuit_breaker.py +353 -0
- tools/core/compliance_sidecar.py +344 -0
- tools/core/container.py +110 -0
- tools/core/errors.py +256 -0
- tools/core/feature_flags.py +311 -0
- tools/core/task_dlq.py +350 -0
- tools/dashboard/__init__.py +2 -0
- tools/dashboard/app.py +6288 -0
- tools/dashboard/templates/agent_evolution.html +287 -0
- tools/dashboard/templates/agents/list.html +71 -0
- tools/dashboard/templates/agents.html +132 -0
- tools/dashboard/templates/architecture.html +289 -0
- tools/dashboard/templates/ato_simulator.html +170 -0
- tools/dashboard/templates/audit_engine.html +844 -0
- tools/dashboard/templates/base.html +236 -0
- tools/dashboard/templates/cato_live.html +116 -0
- tools/dashboard/templates/cloudforge.html +195 -0
- tools/dashboard/templates/cloudforge_finops.html +111 -0
- tools/dashboard/templates/cloudforge_hybrid.html +122 -0
- tools/dashboard/templates/cloudforge_metastore.html +234 -0
- tools/dashboard/templates/cloudforge_migration.html +87 -0
- tools/dashboard/templates/cloudforge_runbooks.html +201 -0
- tools/dashboard/templates/cloudforge_siem.html +94 -0
- tools/dashboard/templates/compliance_accel.html +292 -0
- tools/dashboard/templates/crashes.html +122 -0
- tools/dashboard/templates/databridge.html +305 -0
- tools/dashboard/templates/databridge_analytics.html +195 -0
- tools/dashboard/templates/databridge_mapping.html +345 -0
- tools/dashboard/templates/databridge_messaging.html +321 -0
- tools/dashboard/templates/decisions.html +258 -0
- tools/dashboard/templates/devices.html +151 -0
- tools/dashboard/templates/devsecops_maturity.html +278 -0
- tools/dashboard/templates/edge_ai.html +128 -0
- tools/dashboard/templates/firmware.html +120 -0
- tools/dashboard/templates/firmware_sbom.html +193 -0
- tools/dashboard/templates/forge_hub.html +196 -0
- tools/dashboard/templates/forge_studio.html +379 -0
- tools/dashboard/templates/forge_studio_analytics.html +360 -0
- tools/dashboard/templates/forge_studio_builder.html +1637 -0
- tools/dashboard/templates/forge_studio_compliance.html +310 -0
- tools/dashboard/templates/forge_studio_deploy.html +573 -0
- tools/dashboard/templates/forge_studio_enterprise.html +888 -0
- tools/dashboard/templates/forge_studio_marketplace.html +502 -0
- tools/dashboard/templates/forge_studio_workflow.html +696 -0
- tools/dashboard/templates/golden_path.html +175 -0
- tools/dashboard/templates/govcon.html +280 -0
- tools/dashboard/templates/harness.html +148 -0
- tools/dashboard/templates/index.html +207 -0
- tools/dashboard/templates/intelligence.html +336 -0
- tools/dashboard/templates/knowledge/index.html +190 -0
- tools/dashboard/templates/knowledge_graph.html +739 -0
- tools/dashboard/templates/login.html +51 -0
- tools/dashboard/templates/marketplace.html +336 -0
- tools/dashboard/templates/marketplace_admin.html +247 -0
- tools/dashboard/templates/missions.html +403 -0
- tools/dashboard/templates/narratives.html +154 -0
- tools/dashboard/templates/pr_intelligence.html +151 -0
- tools/dashboard/templates/proposals/detail.html +300 -0
- tools/dashboard/templates/proposals/list.html +52 -0
- tools/dashboard/templates/proposals/sam_detail.html +132 -0
- tools/dashboard/templates/proposals/section_detail.html +375 -0
- tools/dashboard/templates/research.html +222 -0
- tools/dashboard/templates/resilience.html +300 -0
- tools/dashboard/templates/scorecard.html +162 -0
- tools/dashboard/templates/simulator.html +131 -0
- tools/dashboard/templates/template_exchange.html +147 -0
- tools/dashboard/templates/thread_heatmap.html +151 -0
- tools/dashboard/templates/threat_model.html +195 -0
- tools/dashboard/templates/vsm.html +141 -0
- tools/dashboard/templates/writeguard.html +277 -0
- tools/databridge/__init__.py +5 -0
- tools/databridge/agent/__init__.py +2 -0
- tools/databridge/agent/daemon.py +227 -0
- tools/databridge/agent/tunnel.py +101 -0
- tools/databridge/agent/ws_relay.py +91 -0
- tools/databridge/analytics.py +167 -0
- tools/databridge/arrow_pipeline.py +327 -0
- tools/databridge/connection_manager.py +424 -0
- tools/databridge/connector.py +331 -0
- tools/databridge/connectors/__init__.py +2 -0
- tools/databridge/connectors/argocd_connector.py +160 -0
- tools/databridge/connectors/avro_connector.py +203 -0
- tools/databridge/connectors/azure_blob.py +63 -0
- tools/databridge/connectors/cdc_connector.py +205 -0
- tools/databridge/connectors/csv_connector.py +172 -0
- tools/databridge/connectors/datadog_connector.py +153 -0
- tools/databridge/connectors/discord_messaging.py +215 -0
- tools/databridge/connectors/dynamics365.py +151 -0
- tools/databridge/connectors/elasticsearch_connector.py +145 -0
- tools/databridge/connectors/email_base.py +114 -0
- tools/databridge/connectors/excel_connector.py +175 -0
- tools/databridge/connectors/fsspec_base.py +300 -0
- tools/databridge/connectors/gcs.py +53 -0
- tools/databridge/connectors/github_connector.py +138 -0
- tools/databridge/connectors/gitlab_connector.py +132 -0
- tools/databridge/connectors/gmail_connector.py +182 -0
- tools/databridge/connectors/hdfs.py +57 -0
- tools/databridge/connectors/health_base.py +401 -0
- tools/databridge/connectors/hubspot.py +124 -0
- tools/databridge/connectors/imap_connector.py +171 -0
- tools/databridge/connectors/jenkins_connector.py +138 -0
- tools/databridge/connectors/jira_connector.py +86 -0
- tools/databridge/connectors/json_connector.py +184 -0
- tools/databridge/connectors/kafka_connector.py +246 -0
- tools/databridge/connectors/kinesis_connector.py +238 -0
- tools/databridge/connectors/local_fs.py +30 -0
- tools/databridge/connectors/matrix.py +197 -0
- tools/databridge/connectors/mattermost_messaging.py +184 -0
- tools/databridge/connectors/messaging_base.py +172 -0
- tools/databridge/connectors/mssql.py +63 -0
- tools/databridge/connectors/mysql.py +57 -0
- tools/databridge/connectors/netsuite.py +170 -0
- tools/databridge/connectors/o365_mail.py +196 -0
- tools/databridge/connectors/oracle.py +65 -0
- tools/databridge/connectors/pagerduty_connector.py +162 -0
- tools/databridge/connectors/parquet_connector.py +131 -0
- tools/databridge/connectors/postgresql.py +58 -0
- tools/databridge/connectors/s3.py +65 -0
- tools/databridge/connectors/saas_base.py +198 -0
- tools/databridge/connectors/salesforce.py +126 -0
- tools/databridge/connectors/sap.py +89 -0
- tools/databridge/connectors/servicenow.py +60 -0
- tools/databridge/connectors/signal_messaging.py +150 -0
- tools/databridge/connectors/slack_messaging.py +203 -0
- tools/databridge/connectors/smtp_connector.py +126 -0
- tools/databridge/connectors/soap_base.py +258 -0
- tools/databridge/connectors/splunk_connector.py +171 -0
- tools/databridge/connectors/sql_base.py +310 -0
- tools/databridge/connectors/sqlite_connector.py +76 -0
- tools/databridge/connectors/teams.py +148 -0
- tools/databridge/connectors/telegram.py +192 -0
- tools/databridge/connectors/whatsapp.py +137 -0
- tools/databridge/data_profiler.py +99 -0
- tools/databridge/forge/__init__.py +6 -0
- tools/databridge/forge/base_selector.py +150 -0
- tools/databridge/forge/code_generator.py +206 -0
- tools/databridge/forge/community_hub.py +539 -0
- tools/databridge/forge/forge_agent.py +306 -0
- tools/databridge/forge/import_handler.py +133 -0
- tools/databridge/forge/integration_tester.py +127 -0
- tools/databridge/forge/marketplace_publisher.py +164 -0
- tools/databridge/forge/promoter.py +159 -0
- tools/databridge/forge/sandbox_manager.py +257 -0
- tools/databridge/forge/spec_parser.py +358 -0
- tools/databridge/forge/static_validator.py +363 -0
- tools/databridge/forge/templates/__init__.py +591 -0
- tools/databridge/format_converter.py +188 -0
- tools/databridge/mapping_engine.py +348 -0
- tools/databridge/messaging/__init__.py +5 -0
- tools/databridge/messaging/agent_bridge.py +254 -0
- tools/databridge/messaging/message_envelope.py +111 -0
- tools/databridge/messaging/message_logger.py +204 -0
- tools/databridge/messaging/messaging_daemon.py +326 -0
- tools/databridge/messaging/oauth2_manager.py +411 -0
- tools/databridge/pii_detector.py +221 -0
- tools/databridge/registry.py +352 -0
- tools/databridge/relay_server.py +105 -0
- tools/databridge/scale/__init__.py +16 -0
- tools/databridge/scale/backpressure.py +134 -0
- tools/databridge/scale/chunked_pipeline.py +169 -0
- tools/databridge/scale/connection_pool.py +293 -0
- tools/databridge/scale/engine.py +492 -0
- tools/databridge/scale/worker_pool.py +140 -0
- tools/databridge/scale/write_batcher.py +250 -0
- tools/databridge/schema_engine.py +324 -0
- tools/databridge/stream_manager.py +225 -0
- tools/databridge/sync_engine.py +411 -0
- tools/databridge/transforms.py +302 -0
- tools/db/__init__.py +1 -0
- tools/db/backup.py +312 -0
- tools/db/backup_manager.py +832 -0
- tools/db/init_icdev_db.py +7753 -0
- tools/db/init_sparkpilot_db.py +431 -0
- tools/db/migrate.py +177 -0
- tools/db/migrate_innovation_audit.py +165 -0
- tools/db/migration_runner.py +548 -0
- tools/db/migrations/001_baseline/meta.json +9 -0
- tools/db/migrations/001_baseline/up.py +67 -0
- tools/db/migrations/002_memory_enhancements/down.sql +8 -0
- tools/db/migrations/002_memory_enhancements/meta.json +9 -0
- tools/db/migrations/002_memory_enhancements/up.py +119 -0
- tools/db/migrations/003_dev_profiles/meta.json +8 -0
- tools/db/migrations/003_dev_profiles/up.py +93 -0
- tools/db/migrations/004_innovation_engine/down.py +19 -0
- tools/db/migrations/004_innovation_engine/up.py +227 -0
- tools/db/migrations/005_phase_37_ai_security/down.py +19 -0
- tools/db/migrations/005_phase_37_ai_security/up.py +257 -0
- tools/db/migrations/006_phase_36_evolution/down.py +21 -0
- tools/db/migrations/006_phase_36_evolution/up.py +323 -0
- tools/db/migrations/007_phase_38_cloud/down.py +14 -0
- tools/db/migrations/007_phase_38_cloud/up.py +110 -0
- tools/db/migrations/008_phase36_37_integration/up.py +55 -0
- tools/db/migrations/__init__.py +2 -0
- tools/db/pg_migrate.py +642 -0
- tools/db/storage.py +1080 -0
- tools/decisions/__init__.py +2 -0
- tools/decisions/dmn_engine.py +695 -0
- tools/devsecops/__init__.py +2 -0
- tools/devsecops/attestation_manager.py +449 -0
- tools/devsecops/network_segmentation_generator.py +604 -0
- tools/devsecops/pdp_config_generator.py +1246 -0
- tools/devsecops/pipeline_security_generator.py +475 -0
- tools/devsecops/policy_generator.py +644 -0
- tools/devsecops/profile_manager.py +374 -0
- tools/devsecops/service_mesh_generator.py +1063 -0
- tools/devsecops/zta_maturity_scorer.py +355 -0
- tools/devsecops/zta_terraform_generator.py +1301 -0
- tools/edge_ai/__init__.py +2 -0
- tools/edge_ai/model_manager.py +200 -0
- tools/embedded/__init__.py +2 -0
- tools/embedded/cmake_generator.py +318 -0
- tools/embedded/crash_analyzer.py +191 -0
- tools/embedded/nl_to_firmware.py +277 -0
- tools/events/__init__.py +1 -0
- tools/events/event_bus.py +199 -0
- tools/finetune/pair_generator.py +832 -0
- tools/fleet/__init__.py +2 -0
- tools/fleet/device_registry.py +148 -0
- tools/fleet/ota_manager.py +153 -0
- tools/forge_studio/__init__.py +13 -0
- tools/forge_studio/analytics/__init__.py +0 -0
- tools/forge_studio/analytics/process_miner.py +383 -0
- tools/forge_studio/audit.py +183 -0
- tools/forge_studio/blueprint/__init__.py +2 -0
- tools/forge_studio/blueprint/build_tracker.py +317 -0
- tools/forge_studio/blueprint/export_engine.py +441 -0
- tools/forge_studio/blueprint/parent_client.py +335 -0
- tools/forge_studio/catalog/__init__.py +2 -0
- tools/forge_studio/catalog/component_registry.py +176 -0
- tools/forge_studio/catalog/schema_validator.py +193 -0
- tools/forge_studio/compliance/__init__.py +1 -0
- tools/forge_studio/compliance/compliance_wiring.py +554 -0
- tools/forge_studio/deploy/__init__.py +1 -0
- tools/forge_studio/deploy/airgap_packager.py +466 -0
- tools/forge_studio/deploy/deploy_engine.py +1792 -0
- tools/forge_studio/deploy/env_manager.py +431 -0
- tools/forge_studio/eject/__init__.py +2 -0
- tools/forge_studio/eject/docker_compose_generator.py +237 -0
- tools/forge_studio/eject/eject_engine.py +230 -0
- tools/forge_studio/eject/expo_scaffolder.py +303 -0
- tools/forge_studio/eject/nextjs_scaffolder.py +338 -0
- tools/forge_studio/enterprise/__init__.py +0 -0
- tools/forge_studio/enterprise/custom_frameworks.py +826 -0
- tools/forge_studio/enterprise/hardening_engine.py +1530 -0
- tools/forge_studio/enterprise/sso_manager.py +718 -0
- tools/forge_studio/enterprise/whitelabel_engine.py +887 -0
- tools/forge_studio/formula/__init__.py +0 -0
- tools/forge_studio/formula/expression_engine.py +562 -0
- tools/forge_studio/formula/formula_registry.py +265 -0
- tools/forge_studio/generator/__init__.py +2 -0
- tools/forge_studio/generator/app_generator.py +584 -0
- tools/forge_studio/generator/complexity_detector.py +368 -0
- tools/forge_studio/generator/prompt_templates.py +104 -0
- tools/forge_studio/generator/spec_builder.py +192 -0
- tools/forge_studio/intake_bridge.py +898 -0
- tools/forge_studio/marketplace/__init__.py +0 -0
- tools/forge_studio/marketplace/component_hub.py +428 -0
- tools/forge_studio/models.py +369 -0
- tools/forge_studio/renderer/__init__.py +2 -0
- tools/forge_studio/renderer/json_render_engine.py +623 -0
- tools/forge_studio/renderer/layout_engine.py +214 -0
- tools/forge_studio/renderer/rn_component_map.py +182 -0
- tools/forge_studio/supabase/__init__.py +2 -0
- tools/forge_studio/supabase/auth_generator.py +283 -0
- tools/forge_studio/supabase/migration_generator.py +93 -0
- tools/forge_studio/supabase/schema_generator.py +281 -0
- tools/forge_studio/tenant_manager.py +387 -0
- tools/forge_studio/workflow/__init__.py +2 -0
- tools/forge_studio/workflow/bpmn_adapter.py +489 -0
- tools/govcon/draft_orchestrator.py +1151 -0
- tools/govcon/engine_enrichment.py +373 -0
- tools/govcon/knowledge_base.py +487 -0
- tools/govcon/knowledge_ingestion.py +510 -0
- tools/govcon/sam_scanner.py +754 -0
- tools/harness/__init__.py +6 -0
- tools/harness/exit_criteria_evaluator.py +231 -0
- tools/harness/maturity_assessor.py +347 -0
- tools/harness/scaffold_harness.py +416 -0
- tools/harness/trace_analyzer.py +281 -0
- tools/infra/__init__.py +1 -0
- tools/infra/ansible_generator.py +867 -0
- tools/infra/dockerfile_generator.py +359 -0
- tools/infra/infra_status.py +384 -0
- tools/infra/ironbank_metadata_generator.py +403 -0
- tools/infra/k8s_generator.py +1000 -0
- tools/infra/pipeline_generator.py +830 -0
- tools/infra/rollback.py +389 -0
- tools/infra/terraform_generator.py +1140 -0
- tools/infra/terraform_generator_azure.py +1252 -0
- tools/infra/terraform_generator_gcp.py +951 -0
- tools/infra/terraform_generator_ibm.py +359 -0
- tools/infra/terraform_generator_oci.py +918 -0
- tools/infra/terraform_generator_onprem.py +318 -0
- tools/knowledge/__init__.py +1 -0
- tools/knowledge/knowledge_ingest.py +281 -0
- tools/knowledge/pattern_detector.py +681 -0
- tools/knowledge/recommendation_engine.py +449 -0
- tools/knowledge/self_heal_analyzer.py +492 -0
- tools/knowledge_graph/__init__.py +2 -0
- tools/knowledge_graph/graph_rag.py +498 -0
- tools/knowledge_graph/ingester.py +406 -0
- tools/knowledge_graph/insight_generator.py +369 -0
- tools/knowledge_graph/text_network.py +832 -0
- tools/llm/__init__.py +72 -0
- tools/llm/anthropic_provider.py +170 -0
- tools/llm/azure_openai_provider.py +338 -0
- tools/llm/bedrock_provider.py +315 -0
- tools/llm/embedding_provider.py +438 -0
- tools/llm/gemini_provider.py +381 -0
- tools/llm/ibm_watsonx_provider.py +231 -0
- tools/llm/oci_genai_provider.py +462 -0
- tools/llm/ollama_provider.py +350 -0
- tools/llm/openai_provider.py +225 -0
- tools/llm/prompt_registry.py +447 -0
- tools/llm/provider.py +355 -0
- tools/llm/provider_sdk.py +175 -0
- tools/llm/router.py +1124 -0
- tools/llm/semantic_cache.py +394 -0
- tools/llm/vertex_ai_provider.py +374 -0
- tools/maintenance/__init__.py +2 -0
- tools/maintenance/dependency_scanner.py +1016 -0
- tools/maintenance/maintenance_auditor.py +804 -0
- tools/maintenance/remediation_engine.py +957 -0
- tools/maintenance/vulnerability_checker.py +978 -0
- tools/manifest.md +1066 -0
- tools/marketplace/asset_installer.py +639 -0
- tools/marketplace/feedback_validator.py +359 -0
- tools/marketplace/license_client.py +458 -0
- tools/marketplace/module_crypto.py +544 -0
- tools/marketplace/module_runtime.py +236 -0
- tools/marketplace/token_store.py +264 -0
- tools/mbse/__init__.py +3 -0
- tools/mbse/des_assessor.py +1173 -0
- tools/mbse/des_report_generator.py +787 -0
- tools/mbse/diagram_extractor.py +792 -0
- tools/mbse/digital_thread.py +1650 -0
- tools/mbse/model_code_generator.py +1115 -0
- tools/mbse/model_control_mapper.py +410 -0
- tools/mbse/pi_model_tracker.py +1079 -0
- tools/mbse/reqif_parser.py +1468 -0
- tools/mbse/sync_engine.py +1789 -0
- tools/mbse/thread_heatmap.py +445 -0
- tools/mbse/xmi_parser.py +1558 -0
- tools/mcp/builder_server.py +64 -0
- tools/mcp/compliance_server.py +64 -0
- tools/mcp/connector_forge_server.py +155 -0
- tools/mcp/core_server.py +64 -0
- tools/mcp/devsecops_server.py +11 -0
- tools/mcp/devsecops_zta_server.py +64 -0
- tools/mcp/knowledge_server.py +64 -0
- tools/mcp/monitor_server.py +64 -0
- tools/mcp/ops_server.py +300 -0
- tools/mcp/requirements_analyst_server.py +64 -0
- tools/mcp/requirements_server.py +11 -0
- tools/mcp/security_server.py +64 -0
- tools/mcp/simulation_server.py +64 -0
- tools/mcp/supply_chain_server.py +64 -0
- tools/mcp/tool_registry.py +299 -0
- tools/memory/__init__.py +2 -0
- tools/memory/auto_capture.py +346 -0
- tools/memory/embed_memory.py +157 -0
- tools/memory/history_compressor.py +334 -0
- tools/memory/hybrid_search.py +235 -0
- tools/memory/maintenance_cron.py +288 -0
- tools/memory/memory_consolidation.py +439 -0
- tools/memory/memory_db.py +132 -0
- tools/memory/memory_read.py +101 -0
- tools/memory/memory_write.py +221 -0
- tools/memory/semantic_search.py +138 -0
- tools/memory/time_decay.py +434 -0
- tools/missions/__init__.py +2 -0
- tools/missions/mission_engine.py +459 -0
- tools/monitor/__init__.py +1 -0
- tools/monitor/alert_correlator.py +486 -0
- tools/monitor/auto_resolver.py +603 -0
- tools/monitor/health_checker.py +507 -0
- tools/monitor/heartbeat_daemon.py +779 -0
- tools/monitor/log_analyzer.py +507 -0
- tools/monitor/metric_collector.py +484 -0
- tools/mosa/__init__.py +10 -0
- tools/mosa/icd_generator.py +358 -0
- tools/mosa/modular_design_analyzer.py +682 -0
- tools/mosa/mosa_code_enforcer.py +348 -0
- tools/mosa/tsp_generator.py +265 -0
- tools/observability/__init__.py +100 -0
- tools/observability/genai_attributes.py +88 -0
- tools/observability/instrumentation.py +140 -0
- tools/observability/mlflow_exporter.py +193 -0
- tools/observability/otel_tracer.py +168 -0
- tools/observability/provenance/__init__.py +3 -0
- tools/observability/provenance/prov_recorder.py +322 -0
- tools/observability/shap/__init__.py +3 -0
- tools/observability/shap/agent_shap.py +274 -0
- tools/observability/sqlite_tracer.py +360 -0
- tools/observability/trace_context.py +205 -0
- tools/observability/tracer.py +230 -0
- tools/orchestration/__init__.py +1 -0
- tools/orchestration/peer_channels.py +254 -0
- tools/orchestration/saga_coordinator.py +390 -0
- tools/project/__init__.py +1 -0
- tools/project/manifest_loader.py +418 -0
- tools/project/project_create.py +350 -0
- tools/project/project_list.py +171 -0
- tools/project/project_scaffold.py +1715 -0
- tools/project/project_status.py +478 -0
- tools/project/session_context_builder.py +752 -0
- tools/project/validate_manifest.py +54 -0
- tools/rag/corrective_rag.py +582 -0
- tools/rag/source_registry.py +482 -0
- tools/requirements/__init__.py +1 -0
- tools/requirements/ai_governance_scorer.py +207 -0
- tools/requirements/boundary_analyzer.py +1281 -0
- tools/requirements/clarification_engine.py +605 -0
- tools/requirements/complexity_scorer.py +369 -0
- tools/requirements/consistency_analyzer.py +789 -0
- tools/requirements/constitution_manager.py +592 -0
- tools/requirements/decomposition_engine.py +764 -0
- tools/requirements/document_extractor.py +1002 -0
- tools/requirements/elicitation_techniques.py +508 -0
- tools/requirements/gap_detector.py +260 -0
- tools/requirements/intake_engine.py +2175 -0
- tools/requirements/prd_generator.py +839 -0
- tools/requirements/prd_validator.py +584 -0
- tools/requirements/readiness_scorer.py +302 -0
- tools/requirements/spec_organizer.py +1015 -0
- tools/requirements/spec_quality_checker.py +1083 -0
- tools/requirements/traceability_builder.py +566 -0
- tools/research/__init__.py +3 -0
- tools/research/academic_scanner.py +130 -0
- tools/research/build_buy_analyzer.py +229 -0
- tools/research/challenge_scorer.py +280 -0
- tools/research/community_scanner.py +174 -0
- tools/research/cross_engine_bridge.py +124 -0
- tools/research/dossier_generator.py +305 -0
- tools/research/landscape_scanner.py +315 -0
- tools/research/regulatory_scanner.py +248 -0
- tools/research/research_manager.py +469 -0
- tools/research/source_scanner.py +150 -0
- tools/research/vertical_loader.py +118 -0
- tools/saas/__init__.py +0 -0
- tools/saas/licensing/__init__.py +0 -0
- tools/saas/licensing/license_validator.py +345 -0
- tools/scaffold/__init__.py +2 -0
- tools/scaffold/golden_path.py +504 -0
- tools/security/__init__.py +1 -0
- tools/security/agent_output_validator.py +330 -0
- tools/security/agent_trust_scorer.py +652 -0
- tools/security/ai_bom_generator.py +718 -0
- tools/security/ai_telemetry_logger.py +469 -0
- tools/security/atlas_red_team.py +541 -0
- tools/security/code_pattern_scanner.py +382 -0
- tools/security/confabulation_detector.py +265 -0
- tools/security/container_scanner.py +489 -0
- tools/security/dependency_auditor.py +942 -0
- tools/security/endpoint_security_scanner.py +626 -0
- tools/security/mcp_tool_authorizer.py +242 -0
- tools/security/output_verifier.py +427 -0
- tools/security/prompt_injection_detector.py +737 -0
- tools/security/sast_runner.py +946 -0
- tools/security/secret_detector.py +376 -0
- tools/security/threat_modeler.py +678 -0
- tools/security/tool_chain_validator.py +357 -0
- tools/security/vuln_scanner.py +536 -0
- tools/simulation/__init__.py +2 -0
- tools/simulation/ato_simulator.py +517 -0
- tools/simulation/coa_generator.py +1539 -0
- tools/simulation/monte_carlo.py +745 -0
- tools/simulation/scenario_manager.py +1060 -0
- tools/simulation/simulation_engine.py +1091 -0
- tools/simulator/__init__.py +2 -0
- tools/simulator/sim_runner.py +272 -0
- tools/supply_chain/__init__.py +2 -0
- tools/supply_chain/cve_triager.py +690 -0
- tools/supply_chain/dependency_graph.py +630 -0
- tools/supply_chain/isa_manager.py +526 -0
- tools/supply_chain/scrm_assessor.py +531 -0
- tools/supply_chain/slsa_verifier.py +473 -0
- tools/testing/__init__.py +2 -0
- tools/testing/acceptance_validator.py +411 -0
- tools/testing/api_surface_extractor.py +749 -0
- tools/testing/claude_dir_validator.py +831 -0
- tools/testing/data_types.py +199 -0
- tools/testing/e2e_runner.py +715 -0
- tools/testing/fuzz_cli.py +306 -0
- tools/testing/health_check.py +483 -0
- tools/testing/platform_check.py +143 -0
- tools/testing/production_audit.py +1836 -0
- tools/testing/production_remediate.py +803 -0
- tools/testing/screenshot_validator.py +538 -0
- tools/testing/smoke_test.py +283 -0
- tools/testing/test_agent_models.py +117 -0
- tools/testing/test_orchestrator.py +957 -0
- tools/testing/utils.py +229 -0
- tools/writeguard/__init__.py +1 -0
- tools/writeguard/main.py +1 -0
- tools/writing/__init__.py +7 -0
- tools/writing/ai_content_detector.py +316 -0
- tools/writing/analysis_engine.py +454 -0
- tools/writing/batch_analyzer.py +276 -0
- tools/writing/coherence_analyzer.py +221 -0
- tools/writing/govcon_bridge.py +509 -0
- tools/writing/grammar_checker.py +270 -0
- tools/writing/plagiarism_detector.py +106 -0
- tools/writing/readability_scorer.py +201 -0
- tools/writing/rewriter.py +96 -0
- tools/writing/signal_registrar.py +167 -0
- tools/writing/snippet_manager.py +276 -0
- tools/writing/style_enforcer.py +220 -0
- tools/writing/style_guide_manager.py +438 -0
- tools/writing/tone_profiler.py +168 -0
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# CUI // SP-CTI
|
|
3
|
+
"""SparkPilot database initialization.
|
|
4
|
+
|
|
5
|
+
Creates all tables for the SparkPilot embedded AI co-pilot:
|
|
6
|
+
- Core ICDEV tables (projects, audit_trail, agents, compliance, etc.)
|
|
7
|
+
- Embedded-specific tables (devices, firmware, missions, simulator, fleet, edge AI)
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import sqlite3
|
|
11
|
+
import sys
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
|
|
14
|
+
DB_PATH = Path(__file__).resolve().parent.parent.parent / "data" / "sparkpilot.db"
|
|
15
|
+
|
|
16
|
+
# Tables that are append-only (no UPDATE/DELETE) — NIST AU compliance
|
|
17
|
+
APPEND_ONLY_TABLES = (
|
|
18
|
+
"audit_trail",
|
|
19
|
+
"firmware_deploy_log",
|
|
20
|
+
"crash_dump_log",
|
|
21
|
+
"mission_completion_log",
|
|
22
|
+
"device_telemetry",
|
|
23
|
+
"ota_update_log",
|
|
24
|
+
"inference_telemetry",
|
|
25
|
+
"fleet_canary_log",
|
|
26
|
+
"simulator_session_log",
|
|
27
|
+
"compliance_evidence",
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def init_db(db_path=None):
|
|
32
|
+
"""Initialize SparkPilot database with all required tables."""
|
|
33
|
+
db_path = db_path or str(DB_PATH)
|
|
34
|
+
Path(db_path).parent.mkdir(parents=True, exist_ok=True)
|
|
35
|
+
conn = sqlite3.connect(db_path)
|
|
36
|
+
conn.execute("PRAGMA journal_mode=WAL")
|
|
37
|
+
conn.execute("PRAGMA foreign_keys=ON")
|
|
38
|
+
|
|
39
|
+
# ── Core ICDEV Tables ──────────────────────────────────────────────
|
|
40
|
+
conn.execute(
|
|
41
|
+
"CREATE TABLE IF NOT EXISTS projects "
|
|
42
|
+
"(id TEXT PRIMARY KEY, name TEXT NOT NULL, description TEXT, "
|
|
43
|
+
"status TEXT DEFAULT 'active', impact_level TEXT DEFAULT 'IL4', "
|
|
44
|
+
"classification TEXT DEFAULT 'CUI', "
|
|
45
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
|
46
|
+
"updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
47
|
+
)
|
|
48
|
+
conn.execute(
|
|
49
|
+
"CREATE TABLE IF NOT EXISTS audit_trail "
|
|
50
|
+
"(id TEXT PRIMARY KEY, event_type TEXT NOT NULL, actor TEXT, "
|
|
51
|
+
"action TEXT NOT NULL, project_id TEXT, session_id TEXT, "
|
|
52
|
+
"details TEXT, "
|
|
53
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
54
|
+
)
|
|
55
|
+
conn.execute(
|
|
56
|
+
"CREATE TABLE IF NOT EXISTS agents "
|
|
57
|
+
"(id TEXT PRIMARY KEY, name TEXT NOT NULL, port INTEGER, "
|
|
58
|
+
"agent_type TEXT, status TEXT DEFAULT 'idle', "
|
|
59
|
+
"last_heartbeat TIMESTAMP, capabilities TEXT, "
|
|
60
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
61
|
+
)
|
|
62
|
+
conn.execute(
|
|
63
|
+
"CREATE TABLE IF NOT EXISTS agent_tasks "
|
|
64
|
+
"(id TEXT PRIMARY KEY, agent_id TEXT, task_type TEXT, "
|
|
65
|
+
"status TEXT DEFAULT 'pending', input_data TEXT, "
|
|
66
|
+
"output_data TEXT, error TEXT, "
|
|
67
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
|
68
|
+
"completed_at TIMESTAMP)"
|
|
69
|
+
)
|
|
70
|
+
conn.execute(
|
|
71
|
+
"CREATE TABLE IF NOT EXISTS memory_entries "
|
|
72
|
+
"(id INTEGER PRIMARY KEY AUTOINCREMENT, content TEXT NOT NULL, "
|
|
73
|
+
"memory_type TEXT DEFAULT 'event', importance INTEGER DEFAULT 5, "
|
|
74
|
+
"tags TEXT, embedding BLOB, "
|
|
75
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
# ── Compliance Tables ──────────────────────────────────────────────
|
|
79
|
+
conn.execute(
|
|
80
|
+
"CREATE TABLE IF NOT EXISTS compliance_controls "
|
|
81
|
+
"(id TEXT PRIMARY KEY, control_id TEXT NOT NULL, "
|
|
82
|
+
"framework TEXT NOT NULL, status TEXT DEFAULT 'not_assessed', "
|
|
83
|
+
"project_id TEXT, evidence TEXT, assessor TEXT, "
|
|
84
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
85
|
+
)
|
|
86
|
+
conn.execute(
|
|
87
|
+
"CREATE TABLE IF NOT EXISTS compliance_evidence "
|
|
88
|
+
"(id TEXT PRIMARY KEY, control_id TEXT, framework TEXT, "
|
|
89
|
+
"evidence_type TEXT, evidence_data TEXT, collector TEXT, "
|
|
90
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
91
|
+
)
|
|
92
|
+
conn.execute(
|
|
93
|
+
"CREATE TABLE IF NOT EXISTS sbom_entries "
|
|
94
|
+
"(id TEXT PRIMARY KEY, project_id TEXT, component_name TEXT, "
|
|
95
|
+
"component_version TEXT, license TEXT, purl TEXT, "
|
|
96
|
+
"vulnerability_status TEXT, "
|
|
97
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
# ── Device Registry ────────────────────────────────────────────────
|
|
101
|
+
conn.execute(
|
|
102
|
+
"CREATE TABLE IF NOT EXISTS devices "
|
|
103
|
+
"(id TEXT PRIMARY KEY, name TEXT NOT NULL, "
|
|
104
|
+
"device_type TEXT NOT NULL, " # mcu, gateway, simulator
|
|
105
|
+
"board TEXT, " # e.g., 'esp32-s3', 'stm32f407', 'rpi4', 'wasm'
|
|
106
|
+
"arch TEXT, " # cortex-m4, cortex-m7, esp32, riscv, wasm
|
|
107
|
+
"status TEXT DEFAULT 'registered', " # registered, online, offline, error
|
|
108
|
+
"firmware_version TEXT, model_version TEXT, "
|
|
109
|
+
"ip_address TEXT, mqtt_topic_prefix TEXT, "
|
|
110
|
+
"sdk_version TEXT, "
|
|
111
|
+
"heap_free_bytes INTEGER, stack_watermark_bytes INTEGER, "
|
|
112
|
+
"cpu_usage_pct REAL, uptime_seconds INTEGER, "
|
|
113
|
+
"last_heartbeat TIMESTAMP, "
|
|
114
|
+
"project_id TEXT, owner_id TEXT, "
|
|
115
|
+
"metadata TEXT, " # JSON: custom device properties
|
|
116
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
|
117
|
+
"updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
# ── Firmware Management ────────────────────────────────────────────
|
|
121
|
+
conn.execute(
|
|
122
|
+
"CREATE TABLE IF NOT EXISTS firmware_builds "
|
|
123
|
+
"(id TEXT PRIMARY KEY, project_id TEXT, "
|
|
124
|
+
"version TEXT NOT NULL, "
|
|
125
|
+
"target_board TEXT NOT NULL, " # esp32-s3, stm32f407, wasm, etc.
|
|
126
|
+
"target_arch TEXT, "
|
|
127
|
+
"source_hash TEXT, binary_hash TEXT, binary_size_bytes INTEGER, "
|
|
128
|
+
"toolchain TEXT, " # gcc-arm-none-eabi, xtensa-esp32-elf, emcc
|
|
129
|
+
"cmake_config TEXT, " # JSON: CMake variables
|
|
130
|
+
"freertos_config TEXT, " # JSON: FreeRTOSConfig.h settings
|
|
131
|
+
"build_status TEXT DEFAULT 'pending', " # pending, building, success, failed
|
|
132
|
+
"build_log TEXT, "
|
|
133
|
+
"signed INTEGER DEFAULT 0, signing_key_id TEXT, "
|
|
134
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
135
|
+
)
|
|
136
|
+
conn.execute(
|
|
137
|
+
"CREATE TABLE IF NOT EXISTS firmware_deploy_log "
|
|
138
|
+
"(id TEXT PRIMARY KEY, firmware_id TEXT NOT NULL, "
|
|
139
|
+
"device_id TEXT NOT NULL, "
|
|
140
|
+
"deploy_method TEXT, " # ota_mqtt, usb_flash, simulator_load
|
|
141
|
+
"status TEXT DEFAULT 'pending', " # pending, downloading, flashing, verifying, success, failed, rolled_back
|
|
142
|
+
"progress_pct INTEGER DEFAULT 0, "
|
|
143
|
+
"error TEXT, rollback_firmware_id TEXT, "
|
|
144
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
|
145
|
+
"completed_at TIMESTAMP)"
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
# ── FreeRTOS Task Tracking ─────────────────────────────────────────
|
|
149
|
+
conn.execute(
|
|
150
|
+
"CREATE TABLE IF NOT EXISTS rtos_tasks "
|
|
151
|
+
"(id TEXT PRIMARY KEY, device_id TEXT, "
|
|
152
|
+
"task_name TEXT NOT NULL, priority INTEGER, "
|
|
153
|
+
"stack_size_words INTEGER, stack_watermark_words INTEGER, "
|
|
154
|
+
"state TEXT, " # running, ready, blocked, suspended, deleted
|
|
155
|
+
"cpu_usage_pct REAL, "
|
|
156
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
|
157
|
+
"updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
# ── Crash Dump / Self-Healing ──────────────────────────────────────
|
|
161
|
+
conn.execute(
|
|
162
|
+
"CREATE TABLE IF NOT EXISTS crash_dump_log "
|
|
163
|
+
"(id TEXT PRIMARY KEY, device_id TEXT NOT NULL, "
|
|
164
|
+
"crash_type TEXT, " # hardfault, stack_overflow, watchdog, assertion, memory_corruption
|
|
165
|
+
"fault_address TEXT, stack_trace TEXT, "
|
|
166
|
+
"registers TEXT, " # JSON: register dump
|
|
167
|
+
"freertos_state TEXT, " # JSON: task states at crash time
|
|
168
|
+
"firmware_version TEXT, "
|
|
169
|
+
"analysis TEXT, " # LLM-generated analysis
|
|
170
|
+
"root_cause TEXT, "
|
|
171
|
+
"auto_healed INTEGER DEFAULT 0, "
|
|
172
|
+
"patch_id TEXT, " # reference to generated fix
|
|
173
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
# ── OTA Updates ────────────────────────────────────────────────────
|
|
177
|
+
conn.execute(
|
|
178
|
+
"CREATE TABLE IF NOT EXISTS ota_update_log "
|
|
179
|
+
"(id TEXT PRIMARY KEY, device_id TEXT NOT NULL, "
|
|
180
|
+
"firmware_id TEXT, model_id TEXT, "
|
|
181
|
+
"update_type TEXT, " # firmware, model, config
|
|
182
|
+
"status TEXT DEFAULT 'pending', "
|
|
183
|
+
"progress_pct INTEGER DEFAULT 0, "
|
|
184
|
+
"mcuboot_slot TEXT, " # primary, secondary
|
|
185
|
+
"stability_window_start TIMESTAMP, "
|
|
186
|
+
"stability_window_end TIMESTAMP, "
|
|
187
|
+
"accepted INTEGER DEFAULT 0, "
|
|
188
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
# ── Gamified Missions ──────────────────────────────────────────────
|
|
192
|
+
conn.execute(
|
|
193
|
+
"CREATE TABLE IF NOT EXISTS missions "
|
|
194
|
+
"(id TEXT PRIMARY KEY, "
|
|
195
|
+
"mission_number INTEGER NOT NULL, "
|
|
196
|
+
"title TEXT NOT NULL, "
|
|
197
|
+
"description TEXT, "
|
|
198
|
+
"difficulty TEXT DEFAULT 'beginner', " # beginner, intermediate, advanced, expert
|
|
199
|
+
"category TEXT, " # gpio, sensor, network, mqtt, ai, fleet, hardware
|
|
200
|
+
"prerequisites TEXT, " # JSON: list of mission IDs
|
|
201
|
+
"objectives TEXT, " # JSON: list of objectives
|
|
202
|
+
"hints TEXT, " # JSON: progressive hints
|
|
203
|
+
"starter_code TEXT, "
|
|
204
|
+
"solution_code TEXT, "
|
|
205
|
+
"validation_script TEXT, " # Python script to validate completion
|
|
206
|
+
"xp_reward INTEGER DEFAULT 100, "
|
|
207
|
+
"badge_name TEXT, "
|
|
208
|
+
"estimated_minutes INTEGER, "
|
|
209
|
+
"requires_hardware INTEGER DEFAULT 0, "
|
|
210
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
211
|
+
)
|
|
212
|
+
conn.execute(
|
|
213
|
+
"CREATE TABLE IF NOT EXISTS mission_completion_log "
|
|
214
|
+
"(id TEXT PRIMARY KEY, user_id TEXT NOT NULL, "
|
|
215
|
+
"mission_id TEXT NOT NULL, "
|
|
216
|
+
"status TEXT DEFAULT 'started', " # started, in_progress, completed, skipped
|
|
217
|
+
"attempts INTEGER DEFAULT 0, "
|
|
218
|
+
"code_submitted TEXT, "
|
|
219
|
+
"xp_earned INTEGER DEFAULT 0, "
|
|
220
|
+
"time_spent_seconds INTEGER, "
|
|
221
|
+
"hints_used INTEGER DEFAULT 0, "
|
|
222
|
+
"started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
|
223
|
+
"completed_at TIMESTAMP)"
|
|
224
|
+
)
|
|
225
|
+
conn.execute(
|
|
226
|
+
"CREATE TABLE IF NOT EXISTS user_progress "
|
|
227
|
+
"(id TEXT PRIMARY KEY, user_id TEXT NOT NULL UNIQUE, "
|
|
228
|
+
"display_name TEXT, "
|
|
229
|
+
"total_xp INTEGER DEFAULT 0, "
|
|
230
|
+
"level INTEGER DEFAULT 1, "
|
|
231
|
+
"badges TEXT, " # JSON: list of earned badges
|
|
232
|
+
"current_mission_id TEXT, "
|
|
233
|
+
"missions_completed INTEGER DEFAULT 0, "
|
|
234
|
+
"devices_deployed INTEGER DEFAULT 0, "
|
|
235
|
+
"mode TEXT DEFAULT 'beginner', " # beginner, pro
|
|
236
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
|
237
|
+
"updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
# ── Simulator ──────────────────────────────────────────────────────
|
|
241
|
+
conn.execute(
|
|
242
|
+
"CREATE TABLE IF NOT EXISTS simulator_sessions "
|
|
243
|
+
"(id TEXT PRIMARY KEY, user_id TEXT, "
|
|
244
|
+
"session_type TEXT DEFAULT 'browser', " # browser, posix, host_test
|
|
245
|
+
"board_emulated TEXT DEFAULT 'generic', "
|
|
246
|
+
"peripherals TEXT, " # JSON: active virtual peripherals
|
|
247
|
+
"firmware_id TEXT, "
|
|
248
|
+
"status TEXT DEFAULT 'running', " # running, paused, stopped, crashed
|
|
249
|
+
"tick_count INTEGER DEFAULT 0, "
|
|
250
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
|
251
|
+
"ended_at TIMESTAMP)"
|
|
252
|
+
)
|
|
253
|
+
conn.execute(
|
|
254
|
+
"CREATE TABLE IF NOT EXISTS simulator_session_log "
|
|
255
|
+
"(id TEXT PRIMARY KEY, session_id TEXT NOT NULL, "
|
|
256
|
+
"event_type TEXT NOT NULL, " # task_created, task_switched, led_toggle, sensor_read, mqtt_publish, crash
|
|
257
|
+
"event_data TEXT, " # JSON
|
|
258
|
+
"tick_at INTEGER, "
|
|
259
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
260
|
+
)
|
|
261
|
+
conn.execute(
|
|
262
|
+
"CREATE TABLE IF NOT EXISTS virtual_peripherals "
|
|
263
|
+
"(id TEXT PRIMARY KEY, "
|
|
264
|
+
"peripheral_type TEXT NOT NULL, " # led, button, temp_sensor, accel, oled_display, potentiometer
|
|
265
|
+
"name TEXT NOT NULL, "
|
|
266
|
+
"default_config TEXT, " # JSON: pin, i2c_addr, spi_bus, etc.
|
|
267
|
+
"wasm_module TEXT, " # JS class name for browser rendering
|
|
268
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
269
|
+
)
|
|
270
|
+
|
|
271
|
+
# ── Device Telemetry ───────────────────────────────────────────────
|
|
272
|
+
conn.execute(
|
|
273
|
+
"CREATE TABLE IF NOT EXISTS device_telemetry "
|
|
274
|
+
"(id TEXT PRIMARY KEY, device_id TEXT NOT NULL, "
|
|
275
|
+
"metric_name TEXT NOT NULL, " # cpu_usage, heap_free, stack_watermark, temperature, rssi, inference_latency
|
|
276
|
+
"metric_value REAL, "
|
|
277
|
+
"unit TEXT, "
|
|
278
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
279
|
+
)
|
|
280
|
+
|
|
281
|
+
# ── Edge AI / TinyML ───────────────────────────────────────────────
|
|
282
|
+
conn.execute(
|
|
283
|
+
"CREATE TABLE IF NOT EXISTS ml_models "
|
|
284
|
+
"(id TEXT PRIMARY KEY, project_id TEXT, "
|
|
285
|
+
"model_name TEXT NOT NULL, "
|
|
286
|
+
"model_type TEXT, " # tflite_micro, edge_impulse, onnx_micro
|
|
287
|
+
"task_type TEXT, " # anomaly_detection, keyword_spotting, image_classification, predictive_maintenance
|
|
288
|
+
"model_size_bytes INTEGER, "
|
|
289
|
+
"arena_size_bytes INTEGER, " # TFLite Micro tensor arena
|
|
290
|
+
"input_shape TEXT, output_shape TEXT, " # JSON
|
|
291
|
+
"quantization TEXT, " # int8, float16, float32
|
|
292
|
+
"accuracy REAL, latency_ms REAL, "
|
|
293
|
+
"source TEXT, " # edge_impulse, custom, tflite_model_maker
|
|
294
|
+
"model_hash TEXT, "
|
|
295
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
296
|
+
)
|
|
297
|
+
conn.execute(
|
|
298
|
+
"CREATE TABLE IF NOT EXISTS inference_telemetry "
|
|
299
|
+
"(id TEXT PRIMARY KEY, device_id TEXT NOT NULL, "
|
|
300
|
+
"model_id TEXT NOT NULL, "
|
|
301
|
+
"latency_ms REAL, "
|
|
302
|
+
"confidence REAL, "
|
|
303
|
+
"prediction TEXT, "
|
|
304
|
+
"arena_used_bytes INTEGER, "
|
|
305
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
# ── Fleet Management ───────────────────────────────────────────────
|
|
309
|
+
conn.execute(
|
|
310
|
+
"CREATE TABLE IF NOT EXISTS device_groups "
|
|
311
|
+
"(id TEXT PRIMARY KEY, name TEXT NOT NULL, "
|
|
312
|
+
"description TEXT, "
|
|
313
|
+
"selector TEXT, " # JSON: device matching rules
|
|
314
|
+
"device_count INTEGER DEFAULT 0, "
|
|
315
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
316
|
+
)
|
|
317
|
+
conn.execute(
|
|
318
|
+
"CREATE TABLE IF NOT EXISTS fleet_canary_log "
|
|
319
|
+
"(id TEXT PRIMARY KEY, "
|
|
320
|
+
"deployment_id TEXT NOT NULL, "
|
|
321
|
+
"group_id TEXT, "
|
|
322
|
+
"canary_pct INTEGER DEFAULT 10, "
|
|
323
|
+
"phase TEXT, " # canary, staged_rollout, full_rollout, rollback
|
|
324
|
+
"devices_targeted INTEGER, devices_updated INTEGER, "
|
|
325
|
+
"devices_failed INTEGER, "
|
|
326
|
+
"health_check_status TEXT, "
|
|
327
|
+
"stability_window_hours INTEGER DEFAULT 72, "
|
|
328
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
|
329
|
+
"completed_at TIMESTAMP)"
|
|
330
|
+
)
|
|
331
|
+
|
|
332
|
+
# ── MQTT Agent Protocol ────────────────────────────────────────────
|
|
333
|
+
conn.execute(
|
|
334
|
+
"CREATE TABLE IF NOT EXISTS mqtt_messages "
|
|
335
|
+
"(id TEXT PRIMARY KEY, "
|
|
336
|
+
"topic TEXT NOT NULL, "
|
|
337
|
+
"direction TEXT, " # inbound, outbound
|
|
338
|
+
"payload TEXT, " # CBOR-decoded JSON
|
|
339
|
+
"device_id TEXT, agent_id TEXT, "
|
|
340
|
+
"qos INTEGER DEFAULT 1, "
|
|
341
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
342
|
+
)
|
|
343
|
+
conn.execute(
|
|
344
|
+
"CREATE TABLE IF NOT EXISTS device_commands "
|
|
345
|
+
"(id TEXT PRIMARY KEY, device_id TEXT NOT NULL, "
|
|
346
|
+
"command_type TEXT NOT NULL, " # OTA_UPDATE, CONFIG_SET, REBOOT, DIAG_DUMP, MODEL_UPDATE, TASK_CONTROL
|
|
347
|
+
"payload TEXT, "
|
|
348
|
+
"status TEXT DEFAULT 'pending', " # pending, sent, acknowledged, executing, completed, failed, timeout
|
|
349
|
+
"response TEXT, "
|
|
350
|
+
"issued_by TEXT, " # agent or user
|
|
351
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
|
|
352
|
+
"completed_at TIMESTAMP)"
|
|
353
|
+
)
|
|
354
|
+
|
|
355
|
+
# ── Natural Language Commands ──────────────────────────────────────
|
|
356
|
+
conn.execute(
|
|
357
|
+
"CREATE TABLE IF NOT EXISTS nl_commands "
|
|
358
|
+
"(id TEXT PRIMARY KEY, user_id TEXT, "
|
|
359
|
+
"raw_input TEXT NOT NULL, " # e.g., 'Make the LED blink every 2 seconds'
|
|
360
|
+
"parsed_intent TEXT, " # JSON: extracted intent
|
|
361
|
+
"generated_code TEXT, " # C code output
|
|
362
|
+
"target_board TEXT, "
|
|
363
|
+
"firmware_id TEXT, " # resulting firmware build
|
|
364
|
+
"status TEXT DEFAULT 'parsing', " # parsing, generating, compiling, deploying, completed, failed
|
|
365
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
366
|
+
)
|
|
367
|
+
|
|
368
|
+
# ── HAL / Board Support ────────────────────────────────────────────
|
|
369
|
+
conn.execute(
|
|
370
|
+
"CREATE TABLE IF NOT EXISTS board_support_packages "
|
|
371
|
+
"(id TEXT PRIMARY KEY, "
|
|
372
|
+
"board_name TEXT NOT NULL, " # esp32-s3-devkitc, stm32f407-discovery, etc.
|
|
373
|
+
"manufacturer TEXT, "
|
|
374
|
+
"arch TEXT NOT NULL, "
|
|
375
|
+
"cpu TEXT, " # Cortex-M4, Xtensa LX7, RISC-V
|
|
376
|
+
"flash_kb INTEGER, ram_kb INTEGER, "
|
|
377
|
+
"peripherals TEXT, " # JSON: available peripherals
|
|
378
|
+
"hal_driver TEXT, " # esp-idf, stm32hal, nrf-hal
|
|
379
|
+
"freertos_port TEXT, " # GCC/ARM_CM4F, GCC/XTENSA_ESP32, etc.
|
|
380
|
+
"toolchain TEXT, " # gcc-arm-none-eabi, xtensa-esp32-elf
|
|
381
|
+
"flash_tool TEXT, " # esptool.py, STM32CubeProgrammer, nrfjprog
|
|
382
|
+
"linker_script_template TEXT, "
|
|
383
|
+
"supported INTEGER DEFAULT 1, "
|
|
384
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
385
|
+
)
|
|
386
|
+
|
|
387
|
+
# ── Build / CMake ──────────────────────────────────────────────────
|
|
388
|
+
conn.execute(
|
|
389
|
+
"CREATE TABLE IF NOT EXISTS cmake_configs "
|
|
390
|
+
"(id TEXT PRIMARY KEY, project_id TEXT, "
|
|
391
|
+
"board_id TEXT, "
|
|
392
|
+
"cmake_content TEXT, "
|
|
393
|
+
"freertos_config_content TEXT, " # FreeRTOSConfig.h
|
|
394
|
+
"linker_script_content TEXT, "
|
|
395
|
+
"optimization_level TEXT DEFAULT '-Os', "
|
|
396
|
+
"debug_enabled INTEGER DEFAULT 0, "
|
|
397
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
398
|
+
)
|
|
399
|
+
|
|
400
|
+
# ── Knowledge Base (embedded-specific patterns) ────────────────────
|
|
401
|
+
conn.execute(
|
|
402
|
+
"CREATE TABLE IF NOT EXISTS embedded_patterns "
|
|
403
|
+
"(id TEXT PRIMARY KEY, "
|
|
404
|
+
"pattern_type TEXT, " # crash_signature, optimization_hint, best_practice, anti_pattern
|
|
405
|
+
"title TEXT NOT NULL, "
|
|
406
|
+
"description TEXT, "
|
|
407
|
+
"match_criteria TEXT, " # JSON: how to detect this pattern
|
|
408
|
+
"resolution TEXT, "
|
|
409
|
+
"severity TEXT, "
|
|
410
|
+
"occurrences INTEGER DEFAULT 0, "
|
|
411
|
+
"last_seen TIMESTAMP, "
|
|
412
|
+
"created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
|
|
413
|
+
)
|
|
414
|
+
|
|
415
|
+
conn.commit()
|
|
416
|
+
|
|
417
|
+
tables = [
|
|
418
|
+
r[0] for r in conn.execute(
|
|
419
|
+
"SELECT name FROM sqlite_master WHERE type='table' ORDER BY name"
|
|
420
|
+
).fetchall()
|
|
421
|
+
]
|
|
422
|
+
print(f"SparkPilot database initialized at {db_path}")
|
|
423
|
+
print(f"Tables created ({len(tables)}):")
|
|
424
|
+
for t in tables:
|
|
425
|
+
print(f" - {t}")
|
|
426
|
+
conn.close()
|
|
427
|
+
return tables
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
if __name__ == "__main__":
|
|
431
|
+
init_db()
|
tools/db/migrate.py
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# CUI // SP-CTI
|
|
3
|
+
"""ICDEV Database Migration CLI.
|
|
4
|
+
|
|
5
|
+
D150: Lightweight migration runner — apply, rollback, validate, scaffold.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
python tools/db/migrate.py --status [--json]
|
|
9
|
+
python tools/db/migrate.py --up [--target 005] [--dry-run]
|
|
10
|
+
python tools/db/migrate.py --down [--target 003]
|
|
11
|
+
python tools/db/migrate.py --validate [--json]
|
|
12
|
+
python tools/db/migrate.py --create "add_feature_table"
|
|
13
|
+
python tools/db/migrate.py --mark-applied 001
|
|
14
|
+
python tools/db/migrate.py --up --all-tenants
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
import argparse
|
|
18
|
+
import json
|
|
19
|
+
import sys
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
|
|
22
|
+
BASE_DIR = Path(__file__).resolve().parent.parent.parent
|
|
23
|
+
if str(BASE_DIR) not in sys.path:
|
|
24
|
+
sys.path.insert(0, str(BASE_DIR))
|
|
25
|
+
|
|
26
|
+
from tools.db.migration_runner import MigrationRunner
|
|
27
|
+
|
|
28
|
+
DB_PATH = BASE_DIR / "data" / "icdev.db"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _format_status(status: dict) -> str:
|
|
32
|
+
"""Format migration status for human-readable output."""
|
|
33
|
+
lines = [
|
|
34
|
+
f"Database: {status['db_path']}",
|
|
35
|
+
f"Engine: {status['engine']}",
|
|
36
|
+
f"Migrations table: {'exists' if status['has_migrations_table'] else 'missing'}",
|
|
37
|
+
f"Current version: {status['current_version'] or 'none'}",
|
|
38
|
+
f"Applied: {status['applied_count']} | Pending: {status['pending_count']}",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
if status["applied"]:
|
|
42
|
+
lines.append("\nApplied migrations:")
|
|
43
|
+
for m in status["applied"]:
|
|
44
|
+
lines.append(f" [{m['version']}] {m['name']} (applied {m['applied_at']})")
|
|
45
|
+
|
|
46
|
+
if status["pending"]:
|
|
47
|
+
lines.append("\nPending migrations:")
|
|
48
|
+
for m in status["pending"]:
|
|
49
|
+
lines.append(f" [{m['version']}] {m['name']}")
|
|
50
|
+
|
|
51
|
+
if status["issues"]:
|
|
52
|
+
lines.append("\nIssues:")
|
|
53
|
+
for issue in status["issues"]:
|
|
54
|
+
lines.append(f" [{issue['version']}] {issue['issue']}: {issue['detail']}")
|
|
55
|
+
|
|
56
|
+
return "\n".join(lines)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _get_tenant_db_paths() -> list:
|
|
60
|
+
"""Discover tenant database files."""
|
|
61
|
+
tenant_dir = BASE_DIR / "data" / "tenants"
|
|
62
|
+
if not tenant_dir.exists():
|
|
63
|
+
return []
|
|
64
|
+
return sorted(tenant_dir.glob("*.db"))
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def main():
|
|
68
|
+
parser = argparse.ArgumentParser(description="ICDEV Database Migration Tool")
|
|
69
|
+
parser.add_argument("--db-path", type=Path, default=DB_PATH, help="Database file path")
|
|
70
|
+
parser.add_argument("--status", action="store_true", help="Show migration status")
|
|
71
|
+
parser.add_argument("--up", action="store_true", help="Apply pending migrations")
|
|
72
|
+
parser.add_argument("--down", action="store_true", help="Roll back last migration")
|
|
73
|
+
parser.add_argument("--target", help="Target version (for --up or --down)")
|
|
74
|
+
parser.add_argument("--dry-run", action="store_true", help="Preview without applying")
|
|
75
|
+
parser.add_argument("--validate", action="store_true", help="Validate migration checksums")
|
|
76
|
+
parser.add_argument("--create", metavar="NAME", help="Create new migration scaffold")
|
|
77
|
+
parser.add_argument("--mark-applied", metavar="VERSION", help="Mark version as applied")
|
|
78
|
+
parser.add_argument("--all-tenants", action="store_true", help="Apply to all tenant DBs too")
|
|
79
|
+
parser.add_argument("--json", action="store_true", help="JSON output")
|
|
80
|
+
|
|
81
|
+
args = parser.parse_args()
|
|
82
|
+
|
|
83
|
+
runner = MigrationRunner(db_path=args.db_path)
|
|
84
|
+
|
|
85
|
+
# ---- Status ----
|
|
86
|
+
if args.status:
|
|
87
|
+
status = runner.get_status()
|
|
88
|
+
if args.json:
|
|
89
|
+
print(json.dumps(status, indent=2, default=str))
|
|
90
|
+
else:
|
|
91
|
+
print(_format_status(status))
|
|
92
|
+
return
|
|
93
|
+
|
|
94
|
+
# ---- Validate ----
|
|
95
|
+
if args.validate:
|
|
96
|
+
runner.ensure_migrations_table()
|
|
97
|
+
issues = runner.validate_checksums()
|
|
98
|
+
if args.json:
|
|
99
|
+
print(json.dumps({"issues": issues, "valid": len(issues) == 0}, indent=2))
|
|
100
|
+
elif issues:
|
|
101
|
+
print("Validation FAILED:")
|
|
102
|
+
for issue in issues:
|
|
103
|
+
print(f" [{issue['version']}] {issue['issue']}: {issue['detail']}")
|
|
104
|
+
sys.exit(1)
|
|
105
|
+
else:
|
|
106
|
+
print("All migration checksums valid.")
|
|
107
|
+
return
|
|
108
|
+
|
|
109
|
+
# ---- Create ----
|
|
110
|
+
if args.create:
|
|
111
|
+
path = runner.create_migration(args.create)
|
|
112
|
+
result = {"created": path}
|
|
113
|
+
if args.json:
|
|
114
|
+
print(json.dumps(result, indent=2))
|
|
115
|
+
else:
|
|
116
|
+
print(f"Created migration: {path}")
|
|
117
|
+
return
|
|
118
|
+
|
|
119
|
+
# ---- Mark Applied ----
|
|
120
|
+
if args.mark_applied:
|
|
121
|
+
runner.mark_applied(args.mark_applied)
|
|
122
|
+
if args.json:
|
|
123
|
+
print(json.dumps({"marked_applied": args.mark_applied}))
|
|
124
|
+
else:
|
|
125
|
+
print(f"Marked migration {args.mark_applied} as applied.")
|
|
126
|
+
return
|
|
127
|
+
|
|
128
|
+
# ---- Migrate Up ----
|
|
129
|
+
if args.up:
|
|
130
|
+
db_paths = [args.db_path]
|
|
131
|
+
if args.all_tenants:
|
|
132
|
+
db_paths.extend(_get_tenant_db_paths())
|
|
133
|
+
|
|
134
|
+
all_results = {}
|
|
135
|
+
for db_path in db_paths:
|
|
136
|
+
r = MigrationRunner(db_path=db_path)
|
|
137
|
+
results = r.migrate_up(target=args.target, dry_run=args.dry_run)
|
|
138
|
+
all_results[str(db_path)] = results
|
|
139
|
+
|
|
140
|
+
if args.json:
|
|
141
|
+
print(json.dumps(all_results, indent=2, default=str))
|
|
142
|
+
else:
|
|
143
|
+
for db_path, results in all_results.items():
|
|
144
|
+
if not results:
|
|
145
|
+
print(f"[{db_path}] No pending migrations.")
|
|
146
|
+
continue
|
|
147
|
+
print(f"[{db_path}]")
|
|
148
|
+
for r in results:
|
|
149
|
+
status = "OK" if r.get("success") else f"FAILED: {r.get('error')}"
|
|
150
|
+
ms = r.get("execution_time_ms", "")
|
|
151
|
+
dry = " (dry run)" if r.get("dry_run") else ""
|
|
152
|
+
print(f" [{r['version']}] {r['name']} — {status} {ms}ms{dry}")
|
|
153
|
+
|
|
154
|
+
# Exit with error if any failed
|
|
155
|
+
for results in all_results.values():
|
|
156
|
+
if any(not r.get("success") for r in results):
|
|
157
|
+
sys.exit(1)
|
|
158
|
+
return
|
|
159
|
+
|
|
160
|
+
# ---- Migrate Down ----
|
|
161
|
+
if args.down:
|
|
162
|
+
results = runner.migrate_down(target=args.target)
|
|
163
|
+
if args.json:
|
|
164
|
+
print(json.dumps(results, indent=2, default=str))
|
|
165
|
+
elif not results:
|
|
166
|
+
print("Nothing to roll back.")
|
|
167
|
+
else:
|
|
168
|
+
for r in results:
|
|
169
|
+
status = "OK" if r.get("success") else f"FAILED: {r.get('error')}"
|
|
170
|
+
print(f" [{r['version']}] {r['name']} — rolled back {status}")
|
|
171
|
+
return
|
|
172
|
+
|
|
173
|
+
parser.print_help()
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
if __name__ == "__main__":
|
|
177
|
+
main()
|