thothctl 0.22.2__tar.gz → 0.23.0__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.22.2 → thothctl-0.23.0}/PKG-INFO +1 -1
- thothctl-0.23.0/docs/framework/commands/document/mermaid_examples.md +350 -0
- thothctl-0.23.0/docs/framework/commands/document/mermaid_quickref.md +72 -0
- thothctl-0.23.0/docs/framework/commands/generate/generate_iac.md +227 -0
- thothctl-0.23.0/docs/framework/concepts.md +297 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/policy_as_code.md +5 -5
- thothctl-0.23.0/docs/framework/specs/phase1_intent_to_iac.md +380 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/README.md +7 -7
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/ai_dlc.md +11 -11
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/devsecops_quickstart.md +2 -2
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/devsecops_sdlc.md +402 -62
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/stylesheets/extra.css +39 -2
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/iac.py +46 -2
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/unified_cost_report.py +28 -18
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/dashboard/data_loader.py +88 -9
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/schema_compatibility_service.py +30 -26
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/dashboard.html +221 -12
- thothctl-0.23.0/src/thothctl/version.py +2 -0
- thothctl-0.22.2/docs/framework/concepts.md +0 -77
- thothctl-0.22.2/src/thothctl/version.py +0 -2
- {thothctl-0.22.2 → thothctl-0.23.0}/.devcontainer/Dockerfile +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/.devcontainer/README.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/.devcontainer/devcontainer.json +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/.github/workflows/docs.yml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/.github/workflows/python-publish.yml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/.gitignore +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/.pre-commit-config.yaml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/.readthedocs.yaml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/Dockerfile +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/LICENSE +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/README.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/catalog/catalog-info.yaml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/dashboard/README.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/ai-review/README.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/ai-review/agent_specifications.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/ai-review/agentcore.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/blast-radius.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/check_environment.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/check_iac.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/check_overview.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/check_project_iac.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/check_space.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/cost-analysis-quick-reference.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/cost-analysis.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/customizing_rules.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/deps-advanced.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/deps.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/drift-detection.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/plan.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/document/customizing_docs.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/document/document_iac.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/document/document_overview.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/document/iac.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/document/use_cases.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/generate/generate_components.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/generate/generate_stacks.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/init/init.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/init/init_space.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/CHANGELOG.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/frameworks/terraform.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/frameworks/terragrunt.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/iac.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/inventory_iac.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/inventory_overview.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/list/list_overview.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/list/list_projects.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/list/list_spaces.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/mcp/mcp.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/iac.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/project_cleanup.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/project_convert.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/project_overview.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/project_upgrade.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/use_cases.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/remove/remove_overview.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/remove/remove_project.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/remove/remove_space.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/scan/iac.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/scan/scan_iac.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/scan/scan_overview.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/scan/use_cases.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/upgrade/upgrade_overview.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/cross_platform_support.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/framework_architecture.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/infrasctructure_composition.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/roadmap_fdi.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/software_architecture.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/space_configuration.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/check_command.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/inventory_command.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/platform_engineering_templates.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/space_management.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/tasks/create_template.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/iac_devsecops_use_case.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/automate_tasks_command.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/commnad_init.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/create_component.gif +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/create_inventory.gif +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/doc_command.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/document_project_code.gif +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/framework/thothforge-framework.svg +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/framework/thothfr.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/iacpeerbot_summary.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/icon-light.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/icon.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/init_project.gif +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/inventory_command.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/notification_img.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/report_dependencies.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/report_dependencies_summary.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/restore_inventory_version.gif +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/reuse_project_pattern.gif +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/scan_code.gif +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/scan_command.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/stable/scan_report_example.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/sync_wk_command.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/transform_command.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/update_inventory_version.gif +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/validate_command.png +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/validate_environment.gif +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/validate_project.gif +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/includes/abbreviations.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/index.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/installation/devcontainer_setup.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/installation/linux_installation.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/installation/windows_installation.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/javascripts/tablesort.js +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/mcp.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/navigation.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/quick_start.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/requirements.txt +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/stylesheets/extra-enhanced.css +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/telemetry.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/template_engine/cli_commands_audit.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/template_engine/for_developers.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/template_engine/for_platform_engineers.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/template_engine/github_templates.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/template_engine/template_engine.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/troubleshooting/linux_troubleshooting.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/troubleshooting/macos_troubleshooting.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/troubleshooting/troubleshooting.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/docs/troubleshooting/windows_troubleshooting.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/mkdocs.yaml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/pyproject.toml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/scripts/run_mcp_server.sh +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/application/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/autocomplete.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/analyze.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/apply_fix.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/configure.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/configure_decisions.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/decide.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/history.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/improve.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/orchestrate.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/override.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/report.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/serve.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/environment.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/project/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/project/iac.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/project.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/space.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/dashboard/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/dashboard/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/dashboard/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/dashboard/commands/launch.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/document/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/document/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/document/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/document/commands/iac.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/generate/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/generate/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/generate/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/generate/commands/component.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/generate/commands/stacks.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/commands/env.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/commands/project.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/commands/space.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/commands/template.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/inventory/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/inventory/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/inventory/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/inventory/commands/check.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/inventory/commands/iac.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/commands/projects.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/commands/spaces.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/commands/templates.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/commands/register.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/commands/server.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/commands/status.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/commands/stop.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/commands/bootstrap.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/commands/cleanup.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/commands/convert.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/commands/upgrade.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/remove/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/remove/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/remove/project.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/remove/space.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/scan/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/scan/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/scan/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/scan/commands/iac.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/commands/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/commands/activate.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/commands/show.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/commands/update.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/upgrade/cli.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/.thothcf.setup.toml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/.thothcf_home.toml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/.thothcf_module.toml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/.thothcf_project.toml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/.thothcf_template_parameters.toml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/common.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/terragrunt/.thothcf_project.toml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/constants.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/default_values.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/defaults.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/models.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/settings.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/template_config.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/template_configs.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/templates.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/validation.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/cli_ui.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/commands.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/config.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/azure_devops/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/azure_devops/get_azure_devops.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/azure_devops/pull_request_comments.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/github/get_github.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/github/pull_request_comments.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/integrate_messages_services/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/integrate_messages_services/microsoft_teams.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/integrate_messages_services/sent_message_teams.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/pattern_names.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/pr_comments/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/pr_comments/pr_comment_publisher.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/logger.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/telemetry.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/version_tools.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/domain/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/domain/interfaces/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/domain/models/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/mcp/README.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/mcp/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/mcp/server.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/agentcore/agentcore.json +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/ai_agent.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/analyzers/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/analyzers/code_reviewer.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/analyzers/context_builder.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/analyzers/report_analyzer.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/analyzers/risk_assessor.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/bedrock_agent_api.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/config/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/config/ai_settings.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/config/decision_rules.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/decision_engine.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/main.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/memory.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/orchestrator.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/pr_decision_publisher.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/azure_provider.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/bedrock_agent_provider.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/bedrock_provider.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/ollama_provider.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/openai_provider.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/safety/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/safety/safety_guard.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/strands_agent.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/tracing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/cost_tracker.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/fix_patterns.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/fix_prompts.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/formatters.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/prompts.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/environment/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/environment/check_environment.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/org_policy_loader.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/blast_radius_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cfn_blast_radius_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/check_origin_version.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/check_project_structure.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/cost_analyzer.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/models/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/models/cloudformation_mapper.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/models/cost_models.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/aws_pricing_client.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/base_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/apigateway_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/bedrock_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/cloudwatch_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/dynamodb_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/ebs_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/ec2_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/ecs_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/eip_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/eks_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/elb_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/free_resources_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/kms_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/lambda_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/msk_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/rds_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/s3_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/secrets_manager_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/vpc_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/cfn_drift_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/drift_ai.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/drift_history.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/drift_policy.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/drift_report.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/drift_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/models.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/risk_assessment.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/validate_project_structure.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/rule_merger.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/stack_optimizer/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/dashboard/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/dashboard/dashboard_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/architecture_renderer.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/create_documentation.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/files_content.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/files_scan.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/iac_documentation.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/iac_grunt_graph.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/iac_grunt_info.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/topology_generator.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_stacks/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_stacks/config_generator.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_stacks/remote_config_generation.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_stacks/stack_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_stacks/templates/terragrunt.hcl.j2 +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/config.yaml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/create_code.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/create_component.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/create_component_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/create_stacks.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/create_template.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/files_content.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/github_template_loader.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/project_templates.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/environment/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/environment/install_tools.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/project/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/project/project.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/space/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/space/example_space.toml +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/space/local_registry.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/space/space.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/changelog_parser.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/inventory_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/models.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/module_compatibility_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/report_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/terragrunt_parser.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/update_versions.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/version_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/mcp/README.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/mcp/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/mcp/simple_http_server.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/mcp/stdio_server.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/bootstrap/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/bootstrap/bootstrap_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/cleanup/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/cleanup/clean_project.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/cleanup/clean_space.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/conversion_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/get_project_data.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/post_init.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/project_converter.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/project_defaults.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/set_project_parameters.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/create_terramate/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/create_terramate/create_terramate_stacks.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/create_terramate/detect_changes_stacks.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/create_terramate/manage_terramate_stacks.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/upgrade/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/upgrade/upgrade_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/compliance_review.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/import_reports.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/models.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/report_parser.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/sarif_output.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scan_history.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scan_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/checkov.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/kics.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/opa.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/scan_reports.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/scanners.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/terraform_compliance.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/tfsec.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/trivy.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/templates/ai_reports/pr_comment.md +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/templates/reports/inventory_report.html +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/templates/reports/inventory_report.js +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/templates/unified_report_styles.css +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/banner.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/create_compliance_html_reports.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/create_html_reports.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/delete_directory.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/fix_report_styling.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/render_scan_report.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/report_html_utils.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/index_report.html +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/individual_report.html +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/simple_report.html +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/unified_report_styles.css +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/unified_scan_report.html +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/unified_simple_report.html +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/xunit_report.html +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/crypto.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/manage_backend_resources/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/manage_backend_resources/manage_backend_resources.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/modules_ops/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/modules_ops/terraform_module_details.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/modules_ops/terraform_modules_fetcher.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/platform_utils.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/analyze_terraform_plan.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/graph_manager.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/graph_terragrunt_dependencies.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/process_terraform_file.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/risk_analyzing_terraform_plan.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/sync_workspaces/__init__.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/sync_workspaces/sync_terraform_workspaces.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/sync_workspaces/sync_terragrunt_workspaces.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/template_loader.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/thoth_colors.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/wellcome_banner.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/conftest.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_agentcore_entrypoint.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_apply_fix.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_decision_engine.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_fix_patterns.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_memory.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_orchestrator.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_pr_decision.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_safety_guard.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_aws_pricing_client.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_azure_devops_pr_comments.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_bedrock_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cdk_language_selection.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cfn_blast_radius.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cfn_drift_detection.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_context_steering.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cost_analyzer.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cost_models.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cost_policy_enforcement.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cost_pr_comments.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_dashboard_loading_fix.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_dashboard_service.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_drift.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_drift_detection.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ec2_pricing.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_github_pr_comments.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_iac_cost_integration.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_init_ai_tools.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_init_template_params.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_inventory_pr_comments.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_kics_scanner.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_mermaid_edge_labels.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_new_cost_providers.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_opa_data_files.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_parallel_scan.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_platform_utils.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_pr_comment_publisher.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_provider_source_url_fix.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_provider_versions.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_scan_cfn_support.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_scan_pr_comments.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_space_command.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_space_management.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_stack_optimizer.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_template_url_fix.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_terragrunt_parser.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_topology_generator.py +0 -0
- {thothctl-0.22.2 → thothctl-0.23.0}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: thothctl
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.23.0
|
|
4
4
|
Summary: A CLI for Developer Control Plane. Accelerate your cloud IaC deployments.
|
|
5
5
|
Project-URL: SourceCode, https://github.com/thothforge/thothctl
|
|
6
6
|
Project-URL: HomePage, https://github.com/thothforge/thothctl
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# Mermaid Dependency Graphs - Examples
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
ThothCTL generates professional Mermaid diagrams for Terragrunt projects, showing module dependencies with explicit input/output relationships.
|
|
6
|
+
|
|
7
|
+
## Basic Usage
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Generate Mermaid diagram
|
|
11
|
+
thothctl document iac --framework terragrunt --graph-type mermaid
|
|
12
|
+
|
|
13
|
+
# Output: graph.mmd in current directory
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Example 1: Simple Two-Module Stack
|
|
17
|
+
|
|
18
|
+
### Project Structure
|
|
19
|
+
```
|
|
20
|
+
stacks/
|
|
21
|
+
├── vpc/
|
|
22
|
+
│ └── terragrunt.hcl
|
|
23
|
+
└── security-groups/
|
|
24
|
+
└── terragrunt.hcl
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### vpc/terragrunt.hcl
|
|
28
|
+
```hcl
|
|
29
|
+
terraform {
|
|
30
|
+
source = "git::https://github.com/terraform-aws-modules/terraform-aws-vpc.git?ref=v5.0.0"
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
inputs = {
|
|
34
|
+
name = "my-vpc"
|
|
35
|
+
cidr = "10.0.0.0/16"
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### security-groups/terragrunt.hcl
|
|
40
|
+
```hcl
|
|
41
|
+
terraform {
|
|
42
|
+
source = "git::https://github.com/terraform-aws-modules/terraform-aws-security-group.git?ref=v5.0.0"
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
dependency "vpc" {
|
|
46
|
+
config_path = "../vpc"
|
|
47
|
+
|
|
48
|
+
mock_outputs = {
|
|
49
|
+
vpc_id = "vpc-mock-12345"
|
|
50
|
+
subnet_ids = ["subnet-1", "subnet-2"]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
inputs = {
|
|
55
|
+
vpc_id = dependency.vpc.outputs.vpc_id
|
|
56
|
+
name = "my-sg"
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Generated Diagram
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
cd stacks
|
|
64
|
+
thothctl document iac -f terragrunt --graph-type mermaid
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Output** (`graph.mmd`):
|
|
68
|
+
```mermaid
|
|
69
|
+
%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#e3f2fd','primaryTextColor':'#1565c0','primaryBorderColor':'#1976d2','lineColor':'#42a5f5','secondaryColor':'#fff3e0','tertiaryColor':'#f3e5f5','fontSize':'14px'}}}%%
|
|
70
|
+
graph LR
|
|
71
|
+
vpc["<b>vpc</b>"]:::rootNode
|
|
72
|
+
security_groups["<b>security-groups</b><br/><small>📥 vpc: vpc_id, subnet_ids</small>"]:::normalNode
|
|
73
|
+
security_groups -->|vpc_id, subnet_ids| vpc
|
|
74
|
+
|
|
75
|
+
classDef rootNode fill:#4caf50,stroke:#2e7d32,stroke-width:3px,color:#fff
|
|
76
|
+
classDef normalNode fill:#2196f3,stroke:#1565c0,stroke-width:2px,color:#fff
|
|
77
|
+
classDef complexNode fill:#ff9800,stroke:#e65100,stroke-width:2px,color:#fff
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Visual Result**:
|
|
81
|
+
- 🟢 **vpc** (green) - Root module with no dependencies
|
|
82
|
+
- 🔵 **security-groups** (blue) - Normal module with 1 dependency
|
|
83
|
+
- Edge shows: `vpc_id, subnet_ids` - the actual inputs being passed
|
|
84
|
+
|
|
85
|
+
## Example 2: Multi-Tier Application
|
|
86
|
+
|
|
87
|
+
### Project Structure
|
|
88
|
+
```
|
|
89
|
+
stacks/
|
|
90
|
+
├── vpc/
|
|
91
|
+
├── rds/
|
|
92
|
+
├── security-groups/
|
|
93
|
+
└── app/
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### rds/terragrunt.hcl
|
|
97
|
+
```hcl
|
|
98
|
+
dependency "vpc" {
|
|
99
|
+
config_path = "../vpc"
|
|
100
|
+
|
|
101
|
+
mock_outputs = {
|
|
102
|
+
vpc_id = "vpc-123"
|
|
103
|
+
subnet_ids = ["subnet-1", "subnet-2"]
|
|
104
|
+
database_subnet_group = "db-subnet-group"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
inputs = {
|
|
109
|
+
vpc_id = dependency.vpc.outputs.vpc_id
|
|
110
|
+
subnet_ids = dependency.vpc.outputs.subnet_ids
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### app/terragrunt.hcl
|
|
115
|
+
```hcl
|
|
116
|
+
dependency "vpc" {
|
|
117
|
+
config_path = "../vpc"
|
|
118
|
+
|
|
119
|
+
mock_outputs = {
|
|
120
|
+
vpc_id = "vpc-123"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
dependency "rds" {
|
|
125
|
+
config_path = "../rds"
|
|
126
|
+
|
|
127
|
+
mock_outputs = {
|
|
128
|
+
endpoint = "db.example.com"
|
|
129
|
+
port = 5432
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
dependency "sg" {
|
|
134
|
+
config_path = "../security-groups"
|
|
135
|
+
|
|
136
|
+
mock_outputs = {
|
|
137
|
+
security_group_id = "sg-123"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
inputs = {
|
|
142
|
+
vpc_id = dependency.vpc.outputs.vpc_id
|
|
143
|
+
db_endpoint = dependency.rds.outputs.endpoint
|
|
144
|
+
security_group_id = dependency.sg.outputs.security_group_id
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Generated Diagram
|
|
149
|
+
|
|
150
|
+
```mermaid
|
|
151
|
+
%%{init: {'theme':'base', 'themeVariables': {...}}}%%
|
|
152
|
+
graph LR
|
|
153
|
+
vpc["<b>vpc</b>"]:::rootNode
|
|
154
|
+
rds["<b>rds</b><br/><small>📥 vpc: vpc_id, subnet_ids...</small>"]:::normalNode
|
|
155
|
+
security_groups["<b>security-groups</b><br/><small>📥 vpc: vpc_id</small>"]:::normalNode
|
|
156
|
+
app["<b>app</b><br/><small>📥 vpc: vpc_id<br/>📥 rds: endpoint, port</small><br/><small>+1 more...</small>"]:::complexNode
|
|
157
|
+
|
|
158
|
+
rds -->|vpc_id, subnet_ids...| vpc
|
|
159
|
+
security_groups -->|vpc_id| vpc
|
|
160
|
+
app -->|vpc_id| vpc
|
|
161
|
+
app -->|endpoint, port| rds
|
|
162
|
+
app -->|security_group_id| security_groups
|
|
163
|
+
|
|
164
|
+
classDef rootNode fill:#4caf50,stroke:#2e7d32,stroke-width:3px,color:#fff
|
|
165
|
+
classDef normalNode fill:#2196f3,stroke:#1565c0,stroke-width:2px,color:#fff
|
|
166
|
+
classDef complexNode fill:#ff9800,stroke:#e65100,stroke-width:2px,color:#fff
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**Visual Result**:
|
|
170
|
+
- 🟢 **vpc** (green) - Root module
|
|
171
|
+
- 🔵 **rds, security-groups** (blue) - Normal modules (1-2 dependencies)
|
|
172
|
+
- 🟠 **app** (orange) - Complex module (3+ dependencies)
|
|
173
|
+
|
|
174
|
+
## Example 3: Running from Subdirectory
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
cd stacks/app
|
|
178
|
+
thothctl document iac -f terragrunt --graph-type mermaid
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Output** shows relative paths:
|
|
182
|
+
```mermaid
|
|
183
|
+
graph LR
|
|
184
|
+
app["<b>app</b><br/><small>📥 vpc: vpc_id<br/>📥 rds: endpoint, port</small><br/><small>+1 more...</small>"]:::complexNode
|
|
185
|
+
..vpc["<b>..vpc</b>"]:::rootNode
|
|
186
|
+
..rds["<b>..rds</b><br/><small>📥 vpc: vpc_id, subnet_ids...</small>"]:::normalNode
|
|
187
|
+
..security_groups["<b>..security-groups</b><br/><small>📥 vpc: vpc_id</small>"]:::normalNode
|
|
188
|
+
|
|
189
|
+
app -->|vpc_id| ..vpc
|
|
190
|
+
app -->|endpoint, port| ..rds
|
|
191
|
+
app -->|security_group_id| ..security_groups
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Node Color Coding
|
|
195
|
+
|
|
196
|
+
| Color | Meaning | Dependencies |
|
|
197
|
+
|-------|---------|--------------|
|
|
198
|
+
| 🟢 Green | Root node | 0 dependencies |
|
|
199
|
+
| 🔵 Blue | Normal node | 1-2 dependencies |
|
|
200
|
+
| 🟠 Orange | Complex node | 3+ dependencies |
|
|
201
|
+
|
|
202
|
+
## Edge Labels
|
|
203
|
+
|
|
204
|
+
Edge labels show the **actual input keys** from `mock_outputs`:
|
|
205
|
+
|
|
206
|
+
```hcl
|
|
207
|
+
dependency "vpc" {
|
|
208
|
+
mock_outputs = {
|
|
209
|
+
vpc_id = "vpc-123"
|
|
210
|
+
subnet_ids = ["subnet-1"]
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Results in edge label: `vpc_id, subnet_ids`
|
|
216
|
+
|
|
217
|
+
### Truncation
|
|
218
|
+
|
|
219
|
+
If more than 2 keys, the label is truncated:
|
|
220
|
+
- Shows first 2 keys
|
|
221
|
+
- Adds "..." to indicate more
|
|
222
|
+
|
|
223
|
+
Example: `vpc_id, subnet_ids...`
|
|
224
|
+
|
|
225
|
+
## Node Labels
|
|
226
|
+
|
|
227
|
+
Node labels show:
|
|
228
|
+
1. **Bold module name**
|
|
229
|
+
2. **Dependency details** (if any):
|
|
230
|
+
- 📥 emoji indicator
|
|
231
|
+
- Dependency name
|
|
232
|
+
- Input keys (up to 3)
|
|
233
|
+
3. **Overflow indicator** (if more than 2 dependencies)
|
|
234
|
+
|
|
235
|
+
Example:
|
|
236
|
+
```
|
|
237
|
+
<b>app</b>
|
|
238
|
+
📥 vpc: vpc_id
|
|
239
|
+
📥 rds: endpoint, port
|
|
240
|
+
+1 more...
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## Rendering
|
|
244
|
+
|
|
245
|
+
### GitHub/GitLab
|
|
246
|
+
Mermaid diagrams render automatically in:
|
|
247
|
+
- README.md files
|
|
248
|
+
- Pull request descriptions
|
|
249
|
+
- Issue comments
|
|
250
|
+
- Wiki pages
|
|
251
|
+
|
|
252
|
+
### VS Code
|
|
253
|
+
Install extension: "Markdown Preview Mermaid Support"
|
|
254
|
+
|
|
255
|
+
### Mermaid Live Editor
|
|
256
|
+
https://mermaid.live/ - Paste and preview
|
|
257
|
+
|
|
258
|
+
### Export to Image
|
|
259
|
+
```bash
|
|
260
|
+
# Install mermaid-cli
|
|
261
|
+
npm install -g @mermaid-js/mermaid-cli
|
|
262
|
+
|
|
263
|
+
# Generate PNG
|
|
264
|
+
mmdc -i graph.mmd -o graph.png
|
|
265
|
+
|
|
266
|
+
# Generate SVG
|
|
267
|
+
mmdc -i graph.mmd -o graph.svg
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
## Comparison: Mermaid vs SVG
|
|
271
|
+
|
|
272
|
+
| Feature | Mermaid | SVG |
|
|
273
|
+
|---------|---------|-----|
|
|
274
|
+
| **Format** | Text | Binary |
|
|
275
|
+
| **Version Control** | Easy to diff | Hard to diff |
|
|
276
|
+
| **Editability** | Edit text file | Regenerate only |
|
|
277
|
+
| **Rendering** | GitHub/GitLab | Browser/viewer |
|
|
278
|
+
| **Input Details** | Shows on edges | Not shown |
|
|
279
|
+
| **Complexity Colors** | Yes | No |
|
|
280
|
+
| **File Size** | Small (~1KB) | Larger (~10KB+) |
|
|
281
|
+
|
|
282
|
+
## Best Practices
|
|
283
|
+
|
|
284
|
+
1. **Use Mermaid for documentation**: Better for README files and wikis
|
|
285
|
+
2. **Use SVG for presentations**: Better for slides and reports
|
|
286
|
+
3. **Commit both formats**: Provide options for different use cases
|
|
287
|
+
4. **Update on changes**: Regenerate when dependencies change
|
|
288
|
+
5. **Add to CI/CD**: Automate diagram generation
|
|
289
|
+
|
|
290
|
+
## CI/CD Integration
|
|
291
|
+
|
|
292
|
+
### GitHub Actions
|
|
293
|
+
```yaml
|
|
294
|
+
name: Update Dependency Graphs
|
|
295
|
+
|
|
296
|
+
on:
|
|
297
|
+
push:
|
|
298
|
+
paths:
|
|
299
|
+
- '**/terragrunt.hcl'
|
|
300
|
+
|
|
301
|
+
jobs:
|
|
302
|
+
update-graphs:
|
|
303
|
+
runs-on: ubuntu-latest
|
|
304
|
+
steps:
|
|
305
|
+
- uses: actions/checkout@v3
|
|
306
|
+
|
|
307
|
+
- name: Install ThothCTL
|
|
308
|
+
run: pip install thothctl
|
|
309
|
+
|
|
310
|
+
- name: Generate Mermaid Diagrams
|
|
311
|
+
run: |
|
|
312
|
+
cd stacks
|
|
313
|
+
thothctl document iac -f terragrunt --graph-type mermaid
|
|
314
|
+
|
|
315
|
+
- name: Commit Diagrams
|
|
316
|
+
uses: stefanzweifel/git-auto-commit-action@v4
|
|
317
|
+
with:
|
|
318
|
+
commit_message: "docs: Update dependency graphs"
|
|
319
|
+
file_pattern: "**/graph.mmd"
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
## Troubleshooting
|
|
323
|
+
|
|
324
|
+
### No Edge Labels
|
|
325
|
+
**Issue**: Edges show no input keys
|
|
326
|
+
|
|
327
|
+
**Causes**:
|
|
328
|
+
1. No `mock_outputs` in dependency block
|
|
329
|
+
2. Dependency name doesn't match module name
|
|
330
|
+
3. Empty `mock_outputs = {}`
|
|
331
|
+
|
|
332
|
+
**Solution**: Add mock_outputs to dependency blocks
|
|
333
|
+
|
|
334
|
+
### Wrong Module Names
|
|
335
|
+
**Issue**: Shows "." or "../module" instead of clean names
|
|
336
|
+
|
|
337
|
+
**Solution**: This is expected when running from subdirectories. Run from project root for clean names.
|
|
338
|
+
|
|
339
|
+
### Colors Not Showing
|
|
340
|
+
**Issue**: All nodes same color
|
|
341
|
+
|
|
342
|
+
**Cause**: Rendering platform doesn't support Mermaid themes
|
|
343
|
+
|
|
344
|
+
**Solution**: Use Mermaid Live Editor or GitHub/GitLab
|
|
345
|
+
|
|
346
|
+
## Additional Resources
|
|
347
|
+
|
|
348
|
+
- [Mermaid Documentation](https://mermaid.js.org/)
|
|
349
|
+
- [Terragrunt Dependencies](https://terragrunt.gruntwork.io/docs/features/execute-terraform-commands-on-multiple-modules-at-once/#dependencies-between-modules)
|
|
350
|
+
- [ThothCTL Documentation](https://github.com/thothforge/thothctl)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Mermaid Graphs - Quick Reference
|
|
2
|
+
|
|
3
|
+
## Command
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
thothctl document iac --framework terragrunt --graph-type mermaid
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Output
|
|
10
|
+
|
|
11
|
+
`graph.mmd` - Text-based Mermaid diagram
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
| Feature | Description |
|
|
16
|
+
|---------|-------------|
|
|
17
|
+
| **Edge Labels** | Shows input keys from `mock_outputs` |
|
|
18
|
+
| **Color Coding** | 🟢 Root, 🔵 Normal, 🟠 Complex |
|
|
19
|
+
| **Dependency Details** | Lists inputs in node labels |
|
|
20
|
+
| **Professional Styling** | ThothCTL brand colors |
|
|
21
|
+
| **Version Control** | Text-based, easy to diff |
|
|
22
|
+
| **Renders Everywhere** | GitHub, GitLab, VS Code |
|
|
23
|
+
|
|
24
|
+
## Example
|
|
25
|
+
|
|
26
|
+
### Input (terragrunt.hcl)
|
|
27
|
+
```hcl
|
|
28
|
+
dependency "vpc" {
|
|
29
|
+
config_path = "../vpc"
|
|
30
|
+
mock_outputs = {
|
|
31
|
+
vpc_id = "vpc-123"
|
|
32
|
+
subnet_ids = ["subnet-1"]
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Output (graph.mmd)
|
|
38
|
+
```mermaid
|
|
39
|
+
graph LR
|
|
40
|
+
app["<b>app</b><br/><small>📥 vpc: vpc_id, subnet_ids</small>"]:::normalNode
|
|
41
|
+
vpc["<b>vpc</b>"]:::rootNode
|
|
42
|
+
app -->|vpc_id, subnet_ids| vpc
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Color Guide
|
|
46
|
+
|
|
47
|
+
- 🟢 **Green** = 0 dependencies (root)
|
|
48
|
+
- 🔵 **Blue** = 1-2 dependencies (normal)
|
|
49
|
+
- 🟠 **Orange** = 3+ dependencies (complex)
|
|
50
|
+
|
|
51
|
+
## Quick Tips
|
|
52
|
+
|
|
53
|
+
✅ Run from project root for clean names
|
|
54
|
+
✅ Commit `graph.mmd` to version control
|
|
55
|
+
✅ Renders automatically in GitHub/GitLab
|
|
56
|
+
✅ Use for architecture documentation
|
|
57
|
+
✅ Shows explicit data flow between modules
|
|
58
|
+
|
|
59
|
+
## Troubleshooting
|
|
60
|
+
|
|
61
|
+
**No edge labels?**
|
|
62
|
+
→ Add `mock_outputs` to dependency blocks
|
|
63
|
+
|
|
64
|
+
**Shows "." instead of module name?**
|
|
65
|
+
→ Expected from subdirectories, or run from root
|
|
66
|
+
|
|
67
|
+
**Want SVG instead?**
|
|
68
|
+
→ Use `--graph-type dot`
|
|
69
|
+
|
|
70
|
+
## More Info
|
|
71
|
+
|
|
72
|
+
See: `docs/framework/commands/document/mermaid_examples.md`
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# Generate IaC — Intent-to-Infrastructure
|
|
2
|
+
|
|
3
|
+
Generate governed Infrastructure as Code from natural language descriptions. ThothCTL reads your organizational conventions (`.thothcf.toml`, steering docs, existing patterns) and produces compliant code validated by Checkov and OPA.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Generate a VPC (dry-run by default — shows code without writing)
|
|
9
|
+
thothctl generate iac -i "VPC with 3 private subnets and NAT gateway for production"
|
|
10
|
+
|
|
11
|
+
# Write to disk
|
|
12
|
+
thothctl generate iac -i "EKS cluster with managed node groups" --apply -o ./stacks/platform/eks
|
|
13
|
+
|
|
14
|
+
# Use AWS Bedrock instead of local Ollama
|
|
15
|
+
thothctl generate iac -i "S3 bucket with versioning and encryption" -p bedrock
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## How It Works
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Your intent (natural language)
|
|
22
|
+
↓
|
|
23
|
+
1. Load Context — reads .thothcf.toml, steering docs, existing patterns, OPA policies
|
|
24
|
+
↓
|
|
25
|
+
2. Generate — AI produces IaC code following your org conventions
|
|
26
|
+
↓
|
|
27
|
+
3. Validate — Checkov + OPA scan the generated code
|
|
28
|
+
↓
|
|
29
|
+
4. Self-Correct — if violations found, AI fixes them (up to 3 attempts)
|
|
30
|
+
↓
|
|
31
|
+
5. Output — display (dry-run) or write to disk (--apply)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The AI produces compliant code because your organizational rules are injected directly into its context — not because of a separate policy engine. Existing Checkov and OPA validate the output as a safety net.
|
|
35
|
+
|
|
36
|
+
## Options
|
|
37
|
+
|
|
38
|
+
| Flag | Short | Default | Description |
|
|
39
|
+
|------|-------|---------|-------------|
|
|
40
|
+
| `--intent` | `-i` | (required) | What infrastructure to create |
|
|
41
|
+
| `--project-type` | `-pt` | auto | `terraform`, `terraform-terragrunt`, `terragrunt`, `cloudformation`, `cdkv2` |
|
|
42
|
+
| `--provider` | `-p` | ollama | AI provider: `ollama`, `bedrock`, `openai`, `azure` |
|
|
43
|
+
| `--model` | `-m` | (provider default) | Model override (e.g., `llama3`, `claude-sonnet-4-20250514`) |
|
|
44
|
+
| `--output-dir` | `-o` | current dir | Where to write generated files |
|
|
45
|
+
| `--dry-run / --no-dry-run` | | dry-run | Preview without writing |
|
|
46
|
+
| `--apply` | | off | Write files to disk |
|
|
47
|
+
| `--self-correct / --no-self-correct` | | on | Fix validation violations automatically |
|
|
48
|
+
| `--max-iterations` | | 3 | Maximum self-correction attempts |
|
|
49
|
+
| `--skip-validation` | | off | Skip Checkov/OPA (trust AI output) |
|
|
50
|
+
| `--include-diagram / --no-diagram` | | on | Generate architecture diagram |
|
|
51
|
+
|
|
52
|
+
## Examples
|
|
53
|
+
|
|
54
|
+
### Basic VPC (Terragrunt)
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
thothctl generate iac \
|
|
58
|
+
-i "VPC with 3 private subnets, 3 public subnets, NAT gateway per AZ, flow logs enabled" \
|
|
59
|
+
-pt terraform-terragrunt \
|
|
60
|
+
--apply -o ./stacks/foundation/network/vpc
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Generates:
|
|
64
|
+
```
|
|
65
|
+
stacks/foundation/network/vpc/
|
|
66
|
+
├── terragrunt.hcl # include root, dependency blocks, inputs
|
|
67
|
+
├── main.tf # terraform-aws-modules/vpc/aws with flow logs
|
|
68
|
+
├── variables.tf # cidr, environment, tags
|
|
69
|
+
└── outputs.tf # vpc_id, subnet_ids, nat_gateway_ids
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### EKS Cluster (Terraform)
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
thothctl generate iac \
|
|
76
|
+
-i "Production EKS cluster with managed node groups, Karpenter autoscaler, and IRSA" \
|
|
77
|
+
-pt terraform \
|
|
78
|
+
-p bedrock -m claude-sonnet-4-20250514 \
|
|
79
|
+
--apply -o ./modules/eks
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### S3 with Security (validates automatically)
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
thothctl generate iac \
|
|
86
|
+
-i "S3 bucket for application logs with encryption, versioning, lifecycle rules, and no public access"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The self-correction loop ensures:
|
|
90
|
+
- ✅ Server-side encryption enabled (CKV_AWS_145)
|
|
91
|
+
- ✅ Public access blocked (CKV_AWS_53, CKV_AWS_54, CKV_AWS_55, CKV_AWS_56)
|
|
92
|
+
- ✅ Versioning enabled (CKV_AWS_21)
|
|
93
|
+
- ✅ Logging configured (CKV_AWS_18)
|
|
94
|
+
|
|
95
|
+
### CloudFormation
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
thothctl generate iac \
|
|
99
|
+
-i "Application Load Balancer with HTTPS listener and WAF" \
|
|
100
|
+
-pt cloudformation \
|
|
101
|
+
--apply -o ./stacks/application/web-tier.yaml
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Skip Validation (fast iteration)
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
thothctl generate iac \
|
|
108
|
+
-i "CloudWatch dashboard with CPU, memory, and request metrics" \
|
|
109
|
+
--skip-validation --apply
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Context Sources
|
|
113
|
+
|
|
114
|
+
ThothCTL compiles organizational context from these sources (in priority order):
|
|
115
|
+
|
|
116
|
+
| Source | What's Used | Token Budget |
|
|
117
|
+
|--------|-------------|-------------|
|
|
118
|
+
| `.thothcf.toml` | Project type, naming patterns, environment, tags | ~500 |
|
|
119
|
+
| `.kiro/steering/iac-rules.md` or `.claude/rules/*.md` | IaC composition rules, module preferences, prohibited practices | ~2000 |
|
|
120
|
+
| `.kiro/steering/product.md` or `CLAUDE.md` | Project purpose, architecture layers | ~500 |
|
|
121
|
+
| Existing files in `stacks/` | Real examples from your project (few-shot) | ~2000 |
|
|
122
|
+
| `policies/*.rego` or `THOTH_ORG_POLICY` | OPA rule names and descriptions | ~500 |
|
|
123
|
+
|
|
124
|
+
**Total context: ~5,500 tokens** — leaves room for generation within most model limits.
|
|
125
|
+
|
|
126
|
+
### No Context? No Problem
|
|
127
|
+
|
|
128
|
+
If none of these files exist, the command still works — it generates standard Terraform following AWS best practices. Context just makes the output match *your* conventions.
|
|
129
|
+
|
|
130
|
+
## AI Providers
|
|
131
|
+
|
|
132
|
+
| Provider | Flag | Requires | Best For |
|
|
133
|
+
|----------|------|----------|----------|
|
|
134
|
+
| Ollama | `-p ollama` | Local Ollama running | Offline, private, fast iteration |
|
|
135
|
+
| AWS Bedrock | `-p bedrock` | AWS credentials | Production quality, Claude models |
|
|
136
|
+
| OpenAI | `-p openai` | `OPENAI_API_KEY` | GPT-4 Turbo |
|
|
137
|
+
| Azure OpenAI | `-p azure` | Azure endpoint configured | Enterprise Azure environments |
|
|
138
|
+
|
|
139
|
+
### Recommended Models
|
|
140
|
+
|
|
141
|
+
| Provider | Model | Quality | Speed |
|
|
142
|
+
|----------|-------|---------|-------|
|
|
143
|
+
| Ollama | `llama3` (default) | Good | Fast |
|
|
144
|
+
| Ollama | `codellama:34b` | Better | Slower |
|
|
145
|
+
| Bedrock | `claude-sonnet-4-20250514` | Excellent | Fast |
|
|
146
|
+
| OpenAI | `gpt-4-turbo` | Excellent | Medium |
|
|
147
|
+
|
|
148
|
+
## Self-Correction
|
|
149
|
+
|
|
150
|
+
When Checkov finds violations, the AI automatically fixes them:
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
🤖 Generating infrastructure code...
|
|
154
|
+
✅ Generated 4 files
|
|
155
|
+
|
|
156
|
+
🔒 Validating with Checkov...
|
|
157
|
+
⚠️ 2 findings: CKV_AWS_130 (VPC flow logs), CKV_AWS_178 (NAT HA)
|
|
158
|
+
|
|
159
|
+
🔄 Self-correcting (iteration 1/3)...
|
|
160
|
+
✅ Fixed: added flow logs + multi-AZ NAT
|
|
161
|
+
|
|
162
|
+
🔒 Re-validating...
|
|
163
|
+
✅ Validation passed
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Disable with `--no-self-correct` if you want raw output without fixes.
|
|
167
|
+
|
|
168
|
+
## MCP Integration
|
|
169
|
+
|
|
170
|
+
The command is also available as an MCP tool for AI assistants (Kiro, Claude Code):
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"name": "thothctl_generate_iac",
|
|
175
|
+
"description": "Generate governed IaC from natural language intent",
|
|
176
|
+
"parameters": {
|
|
177
|
+
"intent": "VPC with 3 private subnets",
|
|
178
|
+
"project_type": "terraform-terragrunt",
|
|
179
|
+
"self_correct": true,
|
|
180
|
+
"apply": false
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Start the MCP server: `thothctl mcp server`
|
|
186
|
+
|
|
187
|
+
## Tips
|
|
188
|
+
|
|
189
|
+
1. **Be specific** — "VPC with 3 private subnets, NAT per AZ, flow logs" produces better results than "create a VPC"
|
|
190
|
+
2. **Use your scaffold** — run from a project that has `.thothcf.toml` and existing stacks for best context
|
|
191
|
+
3. **Start with dry-run** — review the generated code before `--apply`
|
|
192
|
+
4. **Iterate** — if the output isn't perfect, refine your intent and re-run
|
|
193
|
+
5. **Use Bedrock for production** — Claude Sonnet produces the highest quality IaC
|
|
194
|
+
|
|
195
|
+
## Troubleshooting
|
|
196
|
+
|
|
197
|
+
### "AI returned no files"
|
|
198
|
+
|
|
199
|
+
The AI provider couldn't parse the intent or returned invalid JSON. Try:
|
|
200
|
+
- Simplify the intent
|
|
201
|
+
- Use a more capable model (`-p bedrock -m claude-sonnet-4-20250514`)
|
|
202
|
+
- Check provider connectivity (`thothctl check environment`)
|
|
203
|
+
|
|
204
|
+
### "Validation: N violations remain"
|
|
205
|
+
|
|
206
|
+
Self-correction reached max iterations without passing all checks. Options:
|
|
207
|
+
- Increase iterations: `--max-iterations 5`
|
|
208
|
+
- Skip validation: `--skip-validation` (fix manually)
|
|
209
|
+
- Fix the generated code yourself and run `thothctl scan iac -t checkov`
|
|
210
|
+
|
|
211
|
+
### Slow generation with Ollama
|
|
212
|
+
|
|
213
|
+
Large models + long context = slow. Solutions:
|
|
214
|
+
- Use a smaller model: `-m llama3` (7B is fastest)
|
|
215
|
+
- Reduce context: remove unnecessary steering files
|
|
216
|
+
- Switch to API provider: `-p bedrock` (faster inference)
|
|
217
|
+
|
|
218
|
+
### Provider not initialized
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
Failed to initialize AI provider: ...
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Check provider configuration:
|
|
225
|
+
- Ollama: ensure `ollama serve` is running
|
|
226
|
+
- Bedrock: ensure AWS credentials are configured
|
|
227
|
+
- OpenAI: ensure `OPENAI_API_KEY` is set
|