thothctl 0.15.4__tar.gz → 0.16.2__tar.gz
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.
- {thothctl-0.15.4 → thothctl-0.16.2}/PKG-INFO +3 -2
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/scan/iac.md +0 -2
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/scan/scan_iac.md +157 -31
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/scan/scan_overview.md +32 -8
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/framework_architecture.md +2 -3
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/software_architecture.md +3 -3
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/use_cases/README.md +2 -2
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/use_cases/ai_dlc.md +4 -4
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/use_cases/devsecops_quickstart.md +0 -1
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/use_cases/devsecops_sdlc.md +3 -5
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/iac_devsecops_use_case.md +6 -6
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/index.md +1 -2
- {thothctl-0.15.4 → thothctl-0.16.2}/pyproject.toml +2 -1
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/scan/commands/iac.py +168 -118
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/convert/get_project_data.py +13 -0
- thothctl-0.16.2/src/thothctl/services/scan/models.py +84 -0
- thothctl-0.16.2/src/thothctl/services/scan/report_parser.py +180 -0
- thothctl-0.16.2/src/thothctl/services/scan/sarif_output.py +120 -0
- thothctl-0.16.2/src/thothctl/services/scan/scan_history.py +205 -0
- thothctl-0.16.2/src/thothctl/services/scan/scan_service.py +321 -0
- thothctl-0.16.2/src/thothctl/services/scan/scanners/kics.py +260 -0
- thothctl-0.16.2/src/thothctl/services/scan/scanners/trivy.py +346 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/create_html_reports.py +0 -6
- thothctl-0.16.2/src/thothctl/utils/common/render_scan_report.py +213 -0
- thothctl-0.16.2/src/thothctl/utils/common/templates/unified_scan_report.html +246 -0
- thothctl-0.16.2/src/thothctl/version.py +2 -0
- thothctl-0.15.4/src/thothctl/services/scan/scan_service.py +0 -746
- thothctl-0.15.4/src/thothctl/services/scan/scanners/kics.py +0 -146
- thothctl-0.15.4/src/thothctl/services/scan/scanners/trivy.py +0 -133
- thothctl-0.15.4/src/thothctl/version.py +0 -2
- {thothctl-0.15.4 → thothctl-0.16.2}/.devcontainer/Dockerfile +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/.devcontainer/README.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/.devcontainer/devcontainer.json +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/.github/workflows/docs.yml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/.github/workflows/python-publish.yml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/.gitignore +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/.pre-commit-config.yaml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/.readthedocs.yaml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/AWS_PRICING_API_FINAL_REPORT.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/AWS_PRICING_API_IMPLEMENTATION_PLAN.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/AWS_PRICING_REFACTOR_REPORT.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/Dockerfile +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/LICENSE +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/README.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/TECHNICAL_DEBT_METRICS.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/catalog/catalog-info.yaml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/dashboard/README.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/ai-review/README.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/ai-review/agent_specifications.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/ai-review/agentcore.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/blast-radius.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/check_environment.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/check_iac.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/check_overview.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/check_project_iac.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/check_space.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/cost-analysis-quick-reference.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/cost-analysis.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/customizing_rules.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/deps-advanced.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/deps.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/drift-detection.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/check/plan.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/document/customizing_docs.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/document/document_iac.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/document/document_overview.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/document/iac.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/document/use_cases.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/generate/generate_components.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/generate/generate_stacks.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/init/init.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/init/init_space.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/inventory/CHANGELOG.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/inventory/frameworks/terraform.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/inventory/frameworks/terragrunt.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/inventory/iac.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/inventory/inventory_iac.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/inventory/inventory_overview.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/list/list_overview.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/list/list_projects.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/list/list_spaces.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/mcp/mcp.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/project/iac.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/project/project_cleanup.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/project/project_convert.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/project/project_overview.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/project/project_upgrade.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/project/use_cases.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/remove/remove_overview.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/remove/remove_project.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/remove/remove_space.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/scan/use_cases.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/commands/upgrade/upgrade_overview.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/concepts.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/cross_platform_support.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/infrasctructure_composition.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/policy_as_code.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/roadmap_fdi.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/space_configuration.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/use_cases/check_command.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/use_cases/inventory_command.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/use_cases/platform_engineering_templates.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/use_cases/space_management.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/framework/use_cases/tasks/create_template.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/automate_tasks_command.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/commnad_init.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/create_component.gif +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/create_inventory.gif +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/doc_command.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/document_project_code.gif +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/framework/thothforge-framework.svg +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/framework/thothfr.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/iacpeerbot_summary.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/icon-light.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/icon.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/init_project.gif +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/inventory_command.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/notification_img.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/report_dependencies.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/report_dependencies_summary.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/restore_inventory_version.gif +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/reuse_project_pattern.gif +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/scan_code.gif +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/scan_command.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/sync_wk_command.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/transform_command.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/update_inventory_version.gif +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/validate_command.png +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/validate_environment.gif +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/img/validate_project.gif +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/includes/abbreviations.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/installation/linux_installation.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/installation/windows_installation.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/javascripts/tablesort.js +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/mcp.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/navigation.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/quick_start.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/requirements.txt +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/stylesheets/extra-enhanced.css +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/stylesheets/extra.css +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/telemetry.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/template_engine/cli_commands_audit.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/template_engine/for_developers.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/template_engine/for_platform_engineers.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/template_engine/github_templates.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/template_engine/template_engine.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/troubleshooting/linux_troubleshooting.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/troubleshooting/macos_troubleshooting.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/troubleshooting/troubleshooting.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/docs/troubleshooting/windows_troubleshooting.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/mkdocs.yaml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/scripts/run_mcp_server.sh +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/application/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/autocomplete.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/analyze.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/apply_fix.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/configure.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/configure_decisions.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/decide.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/history.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/improve.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/orchestrate.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/override.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/report.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/ai_review/commands/serve.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/check/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/check/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/check/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/check/commands/environment.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/check/commands/iac.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/check/commands/project/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/check/commands/project/iac.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/check/commands/project.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/dashboard/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/dashboard/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/dashboard/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/dashboard/commands/launch.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/document/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/document/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/document/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/document/commands/iac.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/generate/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/generate/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/generate/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/generate/commands/component.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/generate/commands/stacks.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/init/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/init/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/init/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/init/commands/env.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/init/commands/project.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/init/commands/space.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/init/commands/template.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/inventory/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/inventory/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/inventory/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/inventory/commands/check.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/inventory/commands/iac.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/list/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/list/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/list/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/list/commands/projects.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/list/commands/spaces.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/mcp/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/mcp/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/mcp/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/mcp/commands/register.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/mcp/commands/server.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/mcp/commands/status.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/mcp/commands/stop.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/project/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/project/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/project/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/project/commands/bootstrap.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/project/commands/cleanup.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/project/commands/convert.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/project/commands/upgrade.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/remove/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/remove/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/remove/project.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/remove/space.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/scan/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/scan/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/scan/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/space/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/space/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/space/commands/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/space/commands/activate.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/space/commands/update.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/commands/upgrade/cli.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/common/.thothcf.setup.toml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/common/.thothcf_home.toml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/common/.thothcf_module.toml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/common/.thothcf_project.toml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/common/.thothcf_template_parameters.toml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/common/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/common/common.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/common/terragrunt/.thothcf_project.toml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/config/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/config/constants.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/config/default_values.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/config/defaults.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/config/models.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/config/settings.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/config/template_config.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/config/template_configs.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/config/templates.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/config/validation.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/cli_ui.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/commands.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/config.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/azure_devops/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/azure_devops/get_azure_devops.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/azure_devops/pull_request_comments.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/github/get_github.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/github/pull_request_comments.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/integrate_messages_services/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/integrate_messages_services/microsoft_teams.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/integrate_messages_services/sent_message_teams.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/pattern_names.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/pr_comments/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/integrations/pr_comments/pr_comment_publisher.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/logger.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/telemetry.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/core/version_tools.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/domain/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/domain/interfaces/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/domain/models/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/mcp/README.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/mcp/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/mcp/server.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/agentcore/agentcore.json +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/ai_agent.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/analyzers/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/analyzers/code_reviewer.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/analyzers/context_builder.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/analyzers/report_analyzer.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/analyzers/risk_assessor.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/bedrock_agent_api.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/config/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/config/ai_settings.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/config/decision_rules.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/decision_engine.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/main.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/memory.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/orchestrator.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/pr_decision_publisher.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/providers/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/providers/azure_provider.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/providers/bedrock_agent_provider.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/providers/bedrock_provider.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/providers/ollama_provider.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/providers/openai_provider.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/safety/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/safety/safety_guard.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/tracing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/utils/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/utils/cost_tracker.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/utils/fix_patterns.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/utils/fix_prompts.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/utils/formatters.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/ai_review/utils/prompts.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/environment/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/environment/check_environment.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/blast_radius_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/check_origin_version.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/check_project_structure.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/cost_analyzer.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/models/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/models/cloudformation_mapper.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/models/cost_models.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/aws_pricing_client.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/base_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/apigateway_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/bedrock_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/cloudwatch_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/dynamodb_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/ebs_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/ec2_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/ecs_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/eip_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/eks_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/elb_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/free_resources_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/kms_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/lambda_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/msk_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/rds_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/s3_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/secrets_manager_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/pricing/providers/vpc_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/cost/unified_cost_report.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/drift/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/drift/drift_ai.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/drift/drift_history.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/drift/drift_policy.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/drift/drift_report.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/drift/drift_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/drift/models.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/risk_assessment.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/check/project/validate_project_structure.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/dashboard/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/dashboard/dashboard_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/dashboard/data_loader.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/document/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/document/create_documentation.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/document/files_content.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/document/files_scan.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/document/iac_documentation.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/document/iac_grunt_graph.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/document/iac_grunt_info.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_stacks/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_stacks/config_generator.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_stacks/remote_config_generation.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_stacks/stack_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_stacks/templates/terragrunt.hcl.j2 +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_template/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_template/config.yaml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_template/create_code.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_template/create_component.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_template/create_component_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_template/create_stacks.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_template/create_template.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_template/files_content.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_template/github_template_loader.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/generate/create_template/project_templates.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/init/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/init/environment/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/init/environment/install_tools.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/init/project/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/init/project/project.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/init/space/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/init/space/example_space.toml +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/init/space/local_registry.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/init/space/space.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/inventory/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/inventory/changelog_parser.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/inventory/inventory_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/inventory/models.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/inventory/module_compatibility_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/inventory/report_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/inventory/schema_compatibility_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/inventory/terragrunt_parser.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/inventory/update_versions.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/inventory/version_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/mcp/README.md +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/mcp/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/mcp/amazon_q_server.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/mcp/example.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/mcp/service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/mcp/simple_http_server.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/bootstrap/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/bootstrap/bootstrap_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/cleanup/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/cleanup/clean_project.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/cleanup/clean_space.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/convert/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/convert/conversion_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/convert/post_init.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/convert/project_converter.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/convert/project_defaults.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/convert/set_project_parameters.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/create_terramate/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/create_terramate/create_terramate_stacks.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/create_terramate/detect_changes_stacks.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/create_terramate/manage_terramate_stacks.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/upgrade/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/project/upgrade/upgrade_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/scan/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/scan/compliance_review.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/scan/import_reports.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/scan/scanners/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/scan/scanners/checkov.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/scan/scanners/opa.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/scan/scanners/scan_reports.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/scan/scanners/scanners.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/scan/scanners/terraform_compliance.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/services/scan/scanners/tfsec.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/templates/reports/inventory_report.html +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/templates/reports/inventory_report.js +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/templates/unified_report_styles.css +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/banner.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/create_compliance_html_reports.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/delete_directory.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/fix_report_styling.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/report_html_utils.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/templates/dashboard.html +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/templates/index_report.html +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/templates/individual_report.html +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/templates/simple_report.html +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/templates/unified_report_styles.css +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/templates/unified_simple_report.html +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/common/templates/xunit_report.html +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/crypto.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/manage_backend_resources/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/manage_backend_resources/manage_backend_resources.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/modules_ops/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/modules_ops/terraform_module_details.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/modules_ops/terraform_modules_fetcher.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/platform_utils.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/process_hcl/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/process_hcl/analyze_terraform_plan.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/process_hcl/graph_manager.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/process_hcl/graph_terragrunt_dependencies.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/process_hcl/process_terraform_file.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/process_hcl/risk_analyzing_terraform_plan.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/sync_workspaces/__init__.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/sync_workspaces/sync_terraform_workspaces.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/sync_workspaces/sync_terragrunt_workspaces.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/template_loader.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/utils/thoth_colors.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/src/thothctl/wellcome_banner.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/conftest.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_agentcore_entrypoint.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_aws_pricing_client.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_azure_devops_pr_comments.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_bedrock_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_cdk_language_selection.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_context_steering.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_cost_analyzer.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_cost_models.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_cost_pr_comments.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_dashboard_loading_fix.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_dashboard_service.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_drift.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_drift_detection.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_ec2_pricing.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_github_pr_comments.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_iac_cost_integration.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_inventory_pr_comments.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_kics_scanner.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_mermaid_edge_labels.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_new_cost_providers.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_parallel_scan.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_platform_utils.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_pr_comment_publisher.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_provider_source_url_fix.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_provider_versions.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_scan_pr_comments.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_space_command.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_space_management.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_template_url_fix.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tests/test_terragrunt_parser.py +0 -0
- {thothctl-0.15.4 → thothctl-0.16.2}/tox.ini +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: thothctl
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.16.2
|
|
4
4
|
Summary: A CLI for Developer Control Plane. Accelerate your cloud IaC deployments.
|
|
5
|
-
Project-URL:
|
|
5
|
+
Project-URL: SourceCode, https://github.com/thothforge/thothctl
|
|
6
|
+
Project-URL: HomePage, https://github.com/thothforge/thothctl
|
|
6
7
|
Author-email: Alejandro Velez <velez94@pm.me>
|
|
7
8
|
License-Expression: Apache-2.0
|
|
8
9
|
License-File: LICENSE
|
|
@@ -19,7 +19,6 @@ thothctl scan iac -t checkov -t opa --enforcement hard
|
|
|
19
19
|
|
|
20
20
|
## Features
|
|
21
21
|
|
|
22
|
-
- **Multi-Scanner Support**: Checkov, Trivy, TFSec, KICS, OPA/Conftest integration
|
|
23
22
|
- **Custom Policy Evaluation**: Write Rego policies for organization-specific rules via OPA
|
|
24
23
|
- **Enforcement Modes**: Soft (report only) or hard (fail pipeline) for all tools
|
|
25
24
|
- **Security Policy Checking**: CIS benchmarks and best practices
|
|
@@ -33,7 +32,6 @@ thothctl scan iac -t checkov -t opa --enforcement hard
|
|
|
33
32
|
|---------|-------------|
|
|
34
33
|
| **Checkov** | Policy-as-code scanning with built-in rules |
|
|
35
34
|
| **Trivy** | Vulnerability and misconfiguration detection |
|
|
36
|
-
| **TFSec** | Terraform security scanner |
|
|
37
35
|
| **KICS** | Static analysis via Docker |
|
|
38
36
|
| **OPA/Conftest** | Custom Rego policy evaluation (static HCL + plan-based) |
|
|
39
37
|
|
|
@@ -12,17 +12,19 @@ thothctl scan iac [OPTIONS]
|
|
|
12
12
|
|
|
13
13
|
| Option | Description |
|
|
14
14
|
|--------|-------------|
|
|
15
|
-
| `-t, --tools [checkov\|trivy
|
|
15
|
+
| `-t, --tools [checkov\|trivy\\|kics\|terraform-compliance\|opa]` | Specify which security scanning tools to use |
|
|
16
16
|
| `--reports-dir PATH` | Directory to store scan reports (default: `Reports`) |
|
|
17
17
|
| `-p, --project-name TEXT` | Name of the project being scanned |
|
|
18
18
|
| `-o, --options TEXT` | Additional options for scanning tools (key=value,key2=value2) |
|
|
19
19
|
| `--tftool [terraform\|tofu]` | Specify which Terraform tool to use (default: tofu) |
|
|
20
|
-
| `--
|
|
21
|
-
| `--html-reports-format [simple\|xunit]` | Generate HTML reports in simple or xunit format |
|
|
20
|
+
| `--output [text\|json\|sarif]` | Output format: text (default), json, or sarif |
|
|
22
21
|
| `--enforcement [soft\|hard]` | Enforcement mode: `soft` reports violations (exit 0), `hard` fails the pipeline (exit 1) |
|
|
23
22
|
| `--post-to-pr` | Post scan summary as a PR comment (Azure DevOps or GitHub) |
|
|
24
23
|
| `--vcs-provider [auto\|azure_repos\|github]` | VCS provider for PR comments (default: auto-detect) |
|
|
25
24
|
| `--space TEXT` | Space name for credential resolution (Azure DevOps) |
|
|
25
|
+
| `--max-workers INT` | Max parallel Checkov scans (default: 2) |
|
|
26
|
+
| `--compact` | Use Checkov compact mode to reduce memory on CI agents |
|
|
27
|
+
| `--verbose` | Enable verbose output |
|
|
26
28
|
| `--help` | Show help message and exit |
|
|
27
29
|
|
|
28
30
|
## Scanning Tools
|
|
@@ -45,15 +47,6 @@ thothctl scan iac -t checkov
|
|
|
45
47
|
thothctl scan iac -t trivy
|
|
46
48
|
```
|
|
47
49
|
|
|
48
|
-
### TFSec
|
|
49
|
-
|
|
50
|
-
[TFSec](https://github.com/aquasecurity/tfsec) is a security scanner for Terraform code that checks for potential security issues.
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# Scan with TFSec only
|
|
54
|
-
thothctl scan iac -t tfsec
|
|
55
|
-
```
|
|
56
|
-
|
|
57
50
|
### KICS
|
|
58
51
|
|
|
59
52
|
[KICS](https://kics.io/) (Keeping Infrastructure as Code Secure) is an open source solution for static code analysis of IaC. Requires Docker.
|
|
@@ -306,23 +299,154 @@ thothctl scan iac -t checkov -t trivy -t opa --enforcement hard --post-to-pr
|
|
|
306
299
|
|
|
307
300
|
## Report Output
|
|
308
301
|
|
|
309
|
-
Every scan produces:
|
|
302
|
+
Every scan produces multiple output formats:
|
|
303
|
+
|
|
304
|
+
### Always Generated
|
|
305
|
+
|
|
306
|
+
| Output | File | Description |
|
|
307
|
+
|--------|------|-------------|
|
|
308
|
+
| **Terminal table** | — | Rich table with per-tool pass/fail/warnings/errors/success rate |
|
|
309
|
+
| **Severity breakdown** | — | Terminal table showing CRITICAL/HIGH/MEDIUM/LOW counts |
|
|
310
|
+
| **Trend comparison** | — | Delta vs previous scan (stored in local SQLite at `~/.thothcf/scan_history.db`) |
|
|
311
|
+
| **Unified HTML report** | `Reports/scan_report.html` | Single-page professional report with summary, per-tool bars, severity badges, findings table, and trend |
|
|
312
|
+
| **Markdown summary** | `Reports/scan_summary.md` | Machine-readable summary with severity section |
|
|
313
|
+
|
|
314
|
+
### Conditional Outputs
|
|
315
|
+
|
|
316
|
+
| Output | Flag | File | Description |
|
|
317
|
+
|--------|------|------|-------------|
|
|
318
|
+
| **JSON report** | `--output json` | `Reports/scan_report.json` | Structured data for CI/CD pipelines |
|
|
319
|
+
| **SARIF report** | `--output sarif` | `Reports/scan_results.sarif` | GitHub Code Scanning / IDE integration |
|
|
320
|
+
| **PR comment** | `--post-to-pr` | — | Posts summary to PR (GitHub/Azure DevOps) |
|
|
321
|
+
|
|
322
|
+
### Output Formats
|
|
323
|
+
|
|
324
|
+
#### JSON (`--output json`)
|
|
325
|
+
|
|
326
|
+
Structured JSON for CI/CD machine consumption:
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
thothctl scan iac -t checkov -t trivy --output json
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
```json
|
|
333
|
+
{
|
|
334
|
+
"timestamp": "2026-06-14T15:30:00",
|
|
335
|
+
"directory": "/path/to/project",
|
|
336
|
+
"total_findings": 5,
|
|
337
|
+
"severity_counts": {"CRITICAL": 1, "HIGH": 2, "MEDIUM": 2},
|
|
338
|
+
"tools": [
|
|
339
|
+
{
|
|
340
|
+
"tool": "checkov",
|
|
341
|
+
"status": "COMPLETE",
|
|
342
|
+
"passed": 40,
|
|
343
|
+
"failed": 3,
|
|
344
|
+
"findings": [{"id": "CKV_AWS_19", "severity": "CRITICAL", "title": "...", "file": "main.tf", "line": 12}]
|
|
345
|
+
}
|
|
346
|
+
]
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
#### SARIF (`--output sarif`)
|
|
310
351
|
|
|
311
|
-
|
|
312
|
-
-
|
|
313
|
-
-
|
|
314
|
-
-
|
|
352
|
+
[SARIF 2.1.0](https://sarifweb.azurewebsites.net/) format for integration with:
|
|
353
|
+
- GitHub Code Scanning / Advanced Security
|
|
354
|
+
- Azure DevOps
|
|
355
|
+
- VS Code SARIF Viewer extension
|
|
356
|
+
- JetBrains IDE plugins
|
|
315
357
|
|
|
316
|
-
|
|
358
|
+
```bash
|
|
359
|
+
# Generate SARIF report
|
|
360
|
+
thothctl scan iac -t checkov --output sarif
|
|
361
|
+
|
|
362
|
+
# Upload to GitHub Code Scanning
|
|
363
|
+
gh api repos/:owner/:repo/code-scanning/sarifs -f "sarif=@Reports/scan_results.sarif"
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
#### Unified HTML Report
|
|
367
|
+
|
|
368
|
+
A single self-contained `scan_report.html` with:
|
|
369
|
+
- Summary cards (total/passed/failed/rate)
|
|
370
|
+
- Per-tool success rate bars
|
|
371
|
+
- Severity badge breakdown
|
|
372
|
+
- Sortable findings table with file/resource/rule details
|
|
373
|
+
- Trend comparison (if previous scan exists)
|
|
374
|
+
- Print-optimized styling
|
|
375
|
+
|
|
376
|
+
Generated automatically on every scan — no flag needed.
|
|
377
|
+
|
|
378
|
+
### Trend / Historical Comparison
|
|
379
|
+
|
|
380
|
+
ThothCTL automatically stores scan results in a local SQLite database (`~/.thothcf/scan_history.db`) and shows improvement/regression vs the previous scan for the same directory:
|
|
317
381
|
|
|
318
382
|
```
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
383
|
+
📈 Trend (vs 2026-06-13)
|
|
384
|
+
┌──────────┬──────────┬─────────┬─────────┐
|
|
385
|
+
│ Metric │ Previous │ Current │ Delta │
|
|
386
|
+
├──────────┼──────────┼─────────┼─────────┤
|
|
387
|
+
│ Findings │ 8 │ 5 │ ↓ -3 │
|
|
388
|
+
│ Passed │ 38 │ 44 │ ↑ +6 │
|
|
389
|
+
│ Failed │ 8 │ 5 │ ↓ -3 │
|
|
390
|
+
│ CRITICAL │ 2 │ 1 │ ↓ -1 │
|
|
391
|
+
│ HIGH │ 4 │ 3 │ ↓ -1 │
|
|
392
|
+
└──────────┴──────────┴─────────┴─────────┘
|
|
324
393
|
```
|
|
325
394
|
|
|
395
|
+
- **No configuration needed** — history is always saved automatically
|
|
396
|
+
- **Per-directory tracking** — each project gets its own history
|
|
397
|
+
- **Shown in HTML report** — trend is included in `scan_report.html`
|
|
398
|
+
|
|
399
|
+
### CI/CD: Comparing Across Runs
|
|
400
|
+
|
|
401
|
+
For CI/CD pipelines (where local SQLite isn't persistent), use artifact-based comparison:
|
|
402
|
+
|
|
403
|
+
```yaml
|
|
404
|
+
# GitHub Actions — compare vs previous scan
|
|
405
|
+
- uses: actions/download-artifact@v4
|
|
406
|
+
with:
|
|
407
|
+
name: scan-baseline
|
|
408
|
+
continue-on-error: true
|
|
409
|
+
|
|
410
|
+
- run: thothctl scan iac -t checkov -t trivy --output json --enforcement hard
|
|
411
|
+
|
|
412
|
+
- uses: actions/upload-artifact@v4
|
|
413
|
+
with:
|
|
414
|
+
name: scan-baseline
|
|
415
|
+
path: Reports/scan_report.json
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### Report Directory Structure
|
|
419
|
+
|
|
420
|
+
```
|
|
421
|
+
Reports/
|
|
422
|
+
├── scan_report.html ← Unified multi-tool report (summary, severity, findings, trend)
|
|
423
|
+
├── scan_summary.md ← Markdown summary
|
|
424
|
+
├── scan_report.json ← JSON (--output json)
|
|
425
|
+
├── scan_results.sarif ← SARIF (--output sarif)
|
|
426
|
+
├── checkov/
|
|
427
|
+
│ └── security-scan/
|
|
428
|
+
│ ├── html_reports/
|
|
429
|
+
│ │ ├── index.html ← Per-stack browser with links to individual reports
|
|
430
|
+
│ │ ├── report_network_vpc.html
|
|
431
|
+
│ │ ├── report_data_rds.html
|
|
432
|
+
│ │ └── ...
|
|
433
|
+
│ ├── report_network_vpc/
|
|
434
|
+
│ │ ├── results_junitxml.xml ← Raw JUnit XML
|
|
435
|
+
│ │ └── results_json.json ← Raw Checkov JSON
|
|
436
|
+
│ ├── report_data_rds/
|
|
437
|
+
│ │ └── ...
|
|
438
|
+
│ └── checkov_log_report.txt
|
|
439
|
+
├── trivy/ ← Raw Trivy output
|
|
440
|
+
│ └── results.json
|
|
441
|
+
└── opa/ ← Raw OPA/Conftest output
|
|
442
|
+
├── conftest_results.json
|
|
443
|
+
└── results_junitxml.xml
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
**Browsing reports:**
|
|
447
|
+
- Open `Reports/scan_report.html` for the unified summary with severity and trend
|
|
448
|
+
- Open `Reports/checkov/security-scan/html_reports/index.html` to browse individual stack results with detailed check-level findings
|
|
449
|
+
|
|
326
450
|
## Examples
|
|
327
451
|
|
|
328
452
|
### Basic Scan
|
|
@@ -336,14 +460,14 @@ thothctl scan iac
|
|
|
336
460
|
|
|
337
461
|
```bash
|
|
338
462
|
# Comprehensive scan with multiple tools
|
|
339
|
-
thothctl scan iac -t checkov -t trivy -t opa
|
|
463
|
+
thothctl scan iac -t checkov -t trivy -t opa
|
|
340
464
|
```
|
|
341
465
|
|
|
342
|
-
### CI/CD with Hard Enforcement
|
|
466
|
+
### CI/CD with Hard Enforcement and SARIF
|
|
343
467
|
|
|
344
468
|
```bash
|
|
345
|
-
# Fail
|
|
346
|
-
thothctl scan iac -t checkov -t opa --enforcement hard --post-to-pr
|
|
469
|
+
# Fail pipeline on violations + produce SARIF for GitHub Security tab
|
|
470
|
+
thothctl scan iac -t checkov -t opa --enforcement hard --output sarif --post-to-pr
|
|
347
471
|
```
|
|
348
472
|
|
|
349
473
|
### Custom Report Directory
|
|
@@ -416,7 +540,9 @@ jobs:
|
|
|
416
540
|
|
|
417
541
|
1. **Use `--enforcement hard` in CI/CD** — Gate deployments on security compliance to prevent insecure infrastructure from reaching production.
|
|
418
542
|
2. **Use multiple scanning tools** — Different tools catch different types of issues. Combine Checkov (built-in rules) with OPA (custom policies) for best coverage.
|
|
419
|
-
3. **
|
|
420
|
-
4. **
|
|
421
|
-
5. **
|
|
422
|
-
6. **
|
|
543
|
+
3. **Use `--output sarif` for GitHub** — Upload SARIF to GitHub Code Scanning for findings directly in PR diffs and the Security tab.
|
|
544
|
+
4. **Write custom OPA policies** — Encode your organization's specific security requirements as Rego policies. Use Git repos as policy source for centralized management.
|
|
545
|
+
5. **Track trends** — Scan history is automatic. Review the trend table to catch regressions early.
|
|
546
|
+
6. **Use Conftest mode for fast feedback** — Static HCL analysis doesn't require a Terraform plan, making it ideal for pre-commit hooks and early CI stages.
|
|
547
|
+
7. **Use OPA mode for change analysis** — Plan-based evaluation catches issues that static analysis can't, like blast radius and IAM changes.
|
|
548
|
+
8. **Use `--output json` in CI/CD** — Machine-readable output for custom integrations, dashboards, and artifact-based comparison across runs.
|
|
@@ -9,9 +9,11 @@ The scan command helps DevSecOps teams and developers to:
|
|
|
9
9
|
- Identify security vulnerabilities in IaC templates
|
|
10
10
|
- Check for compliance with best practices and security standards
|
|
11
11
|
- Enforce custom organizational policies using OPA/Rego
|
|
12
|
-
- Generate detailed reports in various formats (HTML, Markdown, JSON)
|
|
12
|
+
- Generate detailed reports in various formats (HTML, Markdown, JSON, SARIF)
|
|
13
|
+
- Track scan trends over time with local SQLite history
|
|
13
14
|
- Gate CI/CD pipelines with hard enforcement mode
|
|
14
15
|
- Post scan summaries to pull requests
|
|
16
|
+
- Integrate with GitHub Code Scanning via SARIF output
|
|
15
17
|
|
|
16
18
|
## Subcommands
|
|
17
19
|
|
|
@@ -31,29 +33,51 @@ thothctl scan iac -t checkov -t trivy -t opa
|
|
|
31
33
|
# Fail pipeline on violations
|
|
32
34
|
thothctl scan iac -t checkov -t opa --enforcement hard
|
|
33
35
|
|
|
34
|
-
#
|
|
35
|
-
thothctl scan iac
|
|
36
|
+
# JSON output for CI/CD
|
|
37
|
+
thothctl scan iac -t checkov --output json
|
|
38
|
+
|
|
39
|
+
# SARIF output for GitHub Code Scanning
|
|
40
|
+
thothctl scan iac -t checkov --output sarif
|
|
36
41
|
```
|
|
37
42
|
|
|
38
43
|
## Common Options
|
|
39
44
|
|
|
40
45
|
| Option | Description |
|
|
41
46
|
|--------|-------------|
|
|
42
|
-
| `-t, --tools` | Specify scanning tools
|
|
47
|
+
| `-t, --tools` | Specify scanning tools: `checkov`, `trivy`, `kics`, `terraform-compliance`, `opa` |
|
|
43
48
|
| `--enforcement [soft\|hard]` | Exit 0 (soft) or exit 1 on violations (hard) |
|
|
49
|
+
| `--output [text\|json\|sarif]` | Output format (default: text) |
|
|
44
50
|
| `--reports-dir` | Directory to store scan reports |
|
|
45
|
-
| `--verbose` | Enable verbose output |
|
|
46
51
|
| `--post-to-pr` | Post scan summary to pull request |
|
|
52
|
+
| `--verbose` | Enable verbose output |
|
|
47
53
|
|
|
48
|
-
##
|
|
54
|
+
## Report Outputs
|
|
55
|
+
|
|
56
|
+
Every scan automatically produces:
|
|
57
|
+
|
|
58
|
+
| Output | Description |
|
|
59
|
+
|--------|-------------|
|
|
60
|
+
| `scan_report.html` | Unified multi-tool HTML report with severity, findings, and trend |
|
|
61
|
+
| `scan_summary.md` | Markdown summary |
|
|
62
|
+
| Terminal tables | Pass/fail per tool + severity breakdown + trend comparison |
|
|
49
63
|
|
|
50
|
-
|
|
64
|
+
Optional outputs via `--output` flag:
|
|
65
|
+
|
|
66
|
+
| Flag | File | Use Case |
|
|
67
|
+
|------|------|----------|
|
|
68
|
+
| `--output json` | `scan_report.json` | CI/CD pipeline consumption |
|
|
69
|
+
| `--output sarif` | `scan_results.sarif` | GitHub Code Scanning, IDE integration |
|
|
70
|
+
|
|
71
|
+
## Scan History & Trends
|
|
72
|
+
|
|
73
|
+
ThothCTL automatically tracks scan results in `~/.thothcf/scan_history.db` (SQLite). On each scan, it compares against the previous run for the same directory and shows improvement or regression.
|
|
74
|
+
|
|
75
|
+
## Supported Scanning Tools
|
|
51
76
|
|
|
52
77
|
| Tool | Type | Requires |
|
|
53
78
|
|------|------|----------|
|
|
54
79
|
| **Checkov** | Static analysis with built-in rules | `checkov` binary |
|
|
55
80
|
| **Trivy** | Vulnerability and misconfiguration detection | `trivy` binary |
|
|
56
|
-
| **TFSec** | Terraform security scanner | `tfsec` binary |
|
|
57
81
|
| **KICS** | Static analysis via Docker | Docker |
|
|
58
82
|
| **Terraform-compliance** | BDD-style compliance testing | `terraform-compliance` binary |
|
|
59
83
|
| **OPA/Conftest** | Custom policy evaluation with Rego | `conftest` and/or `opa` binary |
|
|
@@ -38,7 +38,7 @@ graph TB
|
|
|
38
38
|
|
|
39
39
|
subgraph layer3["<b>⚡ Platform Capabilities Layer</b><br/><i>Core IDP functionality</i>"]
|
|
40
40
|
direction LR
|
|
41
|
-
SEC["<b>Security</b><br/>Checkov • Trivy<br/>
|
|
41
|
+
SEC["<b>Security</b><br/>Checkov • Trivy<br/>KICS • OPA<br/>Compliance"]
|
|
42
42
|
COST["<b>Cost Analysis</b><br/>Real-time pricing<br/>14 AWS services<br/>Optimization"]
|
|
43
43
|
INV["<b>Inventory</b><br/>Dependencies<br/>Version tracking<br/>Reports"]
|
|
44
44
|
VAL["<b>Validation</b><br/>Environment<br/>IaC checks<br/>Blast radius"]
|
|
@@ -150,9 +150,8 @@ ThothCTL aligns with IDP business objectives through five core principles:
|
|
|
150
150
|
**Core IDP functionality**
|
|
151
151
|
|
|
152
152
|
#### Security & Compliance
|
|
153
|
-
Multi-tool security scanning with Checkov, Trivy,
|
|
153
|
+
Multi-tool security scanning with Checkov, Trivy, KICS, and Snyk.
|
|
154
154
|
|
|
155
|
-
**Commands:** `thothctl scan iac`, `thothctl scan iac -t checkov -t trivy -t tfsec`
|
|
156
155
|
|
|
157
156
|
📖 **Details:** [Security Scanning](commands/scan/scan_overview.md)
|
|
158
157
|
|
|
@@ -364,7 +364,7 @@ Coordinates multiple services for complex operations.
|
|
|
364
364
|
**Purpose**: Security scanning and compliance
|
|
365
365
|
|
|
366
366
|
**Capabilities:**
|
|
367
|
-
- Execute scanners (Checkov, Trivy,
|
|
367
|
+
- Execute scanners (Checkov, Trivy, KICS, Snyk)
|
|
368
368
|
- Aggregate scan results
|
|
369
369
|
- Generate reports (HTML, JSON, SARIF)
|
|
370
370
|
- Compliance review
|
|
@@ -512,7 +512,7 @@ Development environment configuration.
|
|
|
512
512
|
|
|
513
513
|
**Supported Tools:**
|
|
514
514
|
- Infrastructure: Terraform, Terragrunt, OpenTofu, TFSwitch
|
|
515
|
-
- Security: Checkov, Trivy,
|
|
515
|
+
- Security: Checkov, Trivy, KICS, Snyk
|
|
516
516
|
- Development: Pre-commit, Commitizen, TFLint
|
|
517
517
|
- Documentation: Terraform-docs, Terramate
|
|
518
518
|
- AI: Kiro CLI
|
|
@@ -545,7 +545,7 @@ Integration with external IaC and security tools.
|
|
|
545
545
|
| Category | Tools |
|
|
546
546
|
|----------|-------|
|
|
547
547
|
| **IaC** | Terraform, Terragrunt, OpenTofu, TFSwitch |
|
|
548
|
-
| **Security** | Checkov, Trivy,
|
|
548
|
+
| **Security** | Checkov, Trivy, KICS, Snyk |
|
|
549
549
|
| **Compliance** | Terraform-compliance |
|
|
550
550
|
| **Documentation** | Terraform-docs, Terramate |
|
|
551
551
|
| **Development** | Pre-commit, Commitizen, TFLint |
|
|
@@ -31,7 +31,7 @@ Complete AI-assisted IaC development workflow with Kiro CLI and MCP integration.
|
|
|
31
31
|
- CI/CD integration patterns
|
|
32
32
|
|
|
33
33
|
**Key Features:**
|
|
34
|
-
- Multi-tool security scanning (Checkov, Trivy,
|
|
34
|
+
- Multi-tool security scanning (Checkov, Trivy, KICS, OPA)
|
|
35
35
|
- Real-time AWS cost estimation
|
|
36
36
|
- ITIL v4 change impact assessment
|
|
37
37
|
- Compliance enforcement
|
|
@@ -146,7 +146,7 @@ kiro-cli chat --agent thoth
|
|
|
146
146
|
|
|
147
147
|
### Security & Compliance
|
|
148
148
|
- `thothctl scan iac` - Security scanning with Checkov (default)
|
|
149
|
-
- `thothctl scan iac -t checkov -t trivy -t
|
|
149
|
+
- `thothctl scan iac -t checkov -t trivy -t trivy` - Multi-tool scanning
|
|
150
150
|
|
|
151
151
|
### Documentation
|
|
152
152
|
- `thothctl document iac` - Generate documentation
|
|
@@ -242,7 +242,7 @@ You: "Generate documentation for all modules"
|
|
|
242
242
|
```bash
|
|
243
243
|
thothctl scan iac --tool checkov
|
|
244
244
|
thothctl scan iac --tool trivy
|
|
245
|
-
thothctl scan iac --tool
|
|
245
|
+
thothctl scan iac --tool trivy
|
|
246
246
|
# Review multiple reports...
|
|
247
247
|
```
|
|
248
248
|
|
|
@@ -369,7 +369,7 @@ thothctl init env
|
|
|
369
369
|
# This will install:
|
|
370
370
|
# - Kiro CLI
|
|
371
371
|
# - Terraform/OpenTofu
|
|
372
|
-
# - Security scanners (Checkov, Trivy,
|
|
372
|
+
# - Security scanners (Checkov, Trivy, Trivy)
|
|
373
373
|
# - Other DevSecOps tools
|
|
374
374
|
```
|
|
375
375
|
|
|
@@ -430,7 +430,7 @@ Kiro: "I'll run a comprehensive security scan using ThothCTL.
|
|
|
430
430
|
📊 Security Scan Results:
|
|
431
431
|
- Checkov: 3 HIGH, 5 MEDIUM, 12 LOW
|
|
432
432
|
- Trivy: 1 CRITICAL, 2 HIGH
|
|
433
|
-
-
|
|
433
|
+
- Trivy: 4 HIGH, 8 MEDIUM
|
|
434
434
|
|
|
435
435
|
🔴 Critical Issues:
|
|
436
436
|
1. S3 bucket without encryption (s3.tf:15)
|
|
@@ -516,7 +516,7 @@ thothctl document iac --recursive
|
|
|
516
516
|
# Step 5: Run security scans
|
|
517
517
|
thothctl scan iac --tool checkov
|
|
518
518
|
thothctl scan iac --tool trivy
|
|
519
|
-
thothctl scan iac --tool
|
|
519
|
+
thothctl scan iac --tool trivy
|
|
520
520
|
|
|
521
521
|
# Step 6: Create Terraform plan
|
|
522
522
|
terraform init
|
|
@@ -45,7 +45,7 @@ graph TB
|
|
|
45
45
|
| **Develop** | Environment validation, Structure enforcement, Standards | `check environment`, `check iac --type structure` |
|
|
46
46
|
| **Build** | Dependency management, Version tracking, Inventory | `inventory iac --check-versions` |
|
|
47
47
|
| **Test** | Plan validation, Impact analysis, Change assessment | `check iac --type plan`, `--type blast-radius` |
|
|
48
|
-
| **Secure** | Security scanning, Compliance validation, CVE detection | `scan iac --tool checkov/trivy/
|
|
48
|
+
| **Secure** | Security scanning, Compliance validation, CVE detection | `scan iac --tool checkov/trivy/opa` |
|
|
49
49
|
| **Deploy** | Pre-deployment validation, Risk gates, Approval workflow | `check iac --type all` |
|
|
50
50
|
| **Operate** | Configuration management, Updates, Documentation | `project upgrade`, `document iac` |
|
|
51
51
|
| **Monitor** | Continuous monitoring, Drift detection, Dashboards | `dashboard launch`, scheduled scans |
|
|
@@ -115,7 +115,7 @@ thothctl check environment
|
|
|
115
115
|
|
|
116
116
|
**Validates:**
|
|
117
117
|
- Terraform/OpenTofu/Terragrunt
|
|
118
|
-
- Security scanners (Checkov, Trivy,
|
|
118
|
+
- Security scanners (Checkov, Trivy, KICS)
|
|
119
119
|
- Documentation tools
|
|
120
120
|
- Version control
|
|
121
121
|
|
|
@@ -246,10 +246,8 @@ thothctl scan iac --tool trivy --recursive
|
|
|
246
246
|
- Insecure configurations
|
|
247
247
|
- License issues
|
|
248
248
|
|
|
249
|
-
#### 5.3 Scan with TFSec
|
|
250
249
|
```bash
|
|
251
250
|
# Terraform-specific security
|
|
252
|
-
thothctl scan iac --tool tfsec --recursive
|
|
253
251
|
```
|
|
254
252
|
|
|
255
253
|
**Checks:**
|
|
@@ -408,7 +406,7 @@ thothctl check iac --type plan --plan-file tfplan.json
|
|
|
408
406
|
# 5. SECURE: Run security scans
|
|
409
407
|
thothctl scan iac --tool checkov
|
|
410
408
|
thothctl scan iac --tool trivy
|
|
411
|
-
thothctl scan iac --tool
|
|
409
|
+
thothctl scan iac --tool trivy
|
|
412
410
|
|
|
413
411
|
# 6. ASSESS: Check blast radius
|
|
414
412
|
thothctl check iac --type blast-radius --plan-file tfplan.json
|
|
@@ -55,7 +55,7 @@ Enable Check project structure and standard practices.
|
|
|
55
55
|
|
|
56
56
|
## Scan Code
|
|
57
57
|
You can use the peerbot for scanning code using open source tools, the available tools are:
|
|
58
|
-
*
|
|
58
|
+
* trivy
|
|
59
59
|
* checkov
|
|
60
60
|
* terraform-compliance
|
|
61
61
|
|
|
@@ -65,17 +65,17 @@ You can use the peerbot for scanning code using open source tools, the available
|
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
67
|
$ thothctl scan -h
|
|
68
|
-
usage: thothctl scan [-h] [-s] [-t {
|
|
68
|
+
usage: thothctl scan [-h] [-s] [-t {trivy,terraform-compliance,checkov}] [-op TOOL_OPTIONS] [-r REPORTS_PATH] [-b {single,xunit}] [-m {Teams}] [-w WEBHOOK] [-f FEATURE_PATH]
|
|
69
69
|
|
|
70
|
-
Scan code using tools like checkov,
|
|
70
|
+
Scan code using tools like checkov, trivy, terraform-compliance
|
|
71
71
|
|
|
72
72
|
optional arguments:
|
|
73
73
|
-h, --help show this help message and exit
|
|
74
74
|
|
|
75
75
|
Scan code options and flags:
|
|
76
76
|
-s, --scan Scan project
|
|
77
|
-
-t {
|
|
78
|
-
Use this flag for setting the tool of scanning tool. Allowed values are:
|
|
77
|
+
-t {trivy,terraform-compliance,checkov}, --tool {trivy,terraform-compliance,checkov}
|
|
78
|
+
Use this flag for setting the tool of scanning tool. Allowed values are: trivy, terraform-compliance or checkov, (default: checkov)
|
|
79
79
|
-op TOOL_OPTIONS, --tool_options TOOL_OPTIONS
|
|
80
80
|
Use for passing more arguments for your tool. Use with -t option
|
|
81
81
|
-r REPORTS_PATH, --reports_path REPORTS_PATH
|
|
@@ -93,7 +93,7 @@ Scan code options and flags:
|
|
|
93
93
|
The command line example:
|
|
94
94
|
|
|
95
95
|
```commandline
|
|
96
|
-
# thothctl -d . scan --tool
|
|
96
|
+
# thothctl -d . scan --tool trivy --browser_reports xunit
|
|
97
97
|
|
|
98
98
|
|
|
99
99
|
```
|
|
@@ -26,7 +26,7 @@ pip install thothctl
|
|
|
26
26
|
|---------|-------------|
|
|
27
27
|
| `init` | Initialize and configure projects, spaces, environments |
|
|
28
28
|
| `check` | Validate IaC structure, cost analysis, blast radius, drift detection |
|
|
29
|
-
| `scan` | Security scanning with Checkov, Trivy, KICS,
|
|
29
|
+
| `scan` | Security scanning with Checkov, Trivy, KICS, OPA |
|
|
30
30
|
| `inventory` | Dependency tracking, version analysis, professional reports |
|
|
31
31
|
| `document` | Auto-generate documentation for IaC modules |
|
|
32
32
|
| `generate` | Generate components and stacks from rules |
|
|
@@ -52,7 +52,6 @@ pip install thothctl
|
|
|
52
52
|
| **Security** | [Checkov](https://www.checkov.io/) | Native (pip) |
|
|
53
53
|
| **Security** | [Trivy](https://trivy.dev/) | CLI binary |
|
|
54
54
|
| **Security** | [KICS](https://docs.kics.io/) | Docker container |
|
|
55
|
-
| **Security** | [TFSec](https://aquasecurity.github.io/tfsec/) | CLI binary |
|
|
56
55
|
| **Docs** | [Terraform-docs](https://terraform-docs.io/) | CLI binary |
|
|
57
56
|
| **AI** | [OpenAI](https://platform.openai.com/) | GPT-4 Turbo |
|
|
58
57
|
| **AI** | [AWS Bedrock](https://aws.amazon.com/bedrock/) | Claude Sonnet (InvokeModel + Agent) |
|
|
@@ -74,7 +74,8 @@ classifiers = [
|
|
|
74
74
|
]
|
|
75
75
|
|
|
76
76
|
[project.urls]
|
|
77
|
-
"
|
|
77
|
+
"SourceCode" = "https://github.com/thothforge/thothctl"
|
|
78
|
+
"HomePage" = "https://github.com/thothforge/thothctl"
|
|
78
79
|
|
|
79
80
|
[tool.hatch.version]
|
|
80
81
|
path = "src/thothctl/version.py"
|