thothctl 0.18.0__tar.gz → 0.18.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.18.0 → thothctl-0.18.2}/PKG-INFO +1 -1
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/mcp/mcp.md +63 -29
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/space_configuration.md +33 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/use_cases/space_management.md +16 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/mcp.md +123 -86
- thothctl-0.18.2/src/thothctl/commands/space/commands/show.py +101 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/space/commands/update.py +11 -4
- thothctl-0.18.2/src/thothctl/version.py +2 -0
- thothctl-0.18.0/AWS_PRICING_API_FINAL_REPORT.md +0 -245
- thothctl-0.18.0/AWS_PRICING_API_IMPLEMENTATION_PLAN.md +0 -565
- thothctl-0.18.0/AWS_PRICING_REFACTOR_REPORT.md +0 -141
- thothctl-0.18.0/TECHNICAL_DEBT_METRICS.md +0 -124
- thothctl-0.18.0/src/thothctl/version.py +0 -2
- {thothctl-0.18.0 → thothctl-0.18.2}/.devcontainer/Dockerfile +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/.devcontainer/README.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/.devcontainer/devcontainer.json +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/.github/workflows/docs.yml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/.github/workflows/python-publish.yml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/.gitignore +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/.pre-commit-config.yaml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/.readthedocs.yaml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/Dockerfile +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/LICENSE +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/README.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/catalog/catalog-info.yaml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/dashboard/README.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/ai-review/README.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/ai-review/agent_specifications.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/ai-review/agentcore.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/blast-radius.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/check_environment.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/check_iac.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/check_overview.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/check_project_iac.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/check_space.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/cost-analysis-quick-reference.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/cost-analysis.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/customizing_rules.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/deps-advanced.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/deps.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/drift-detection.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/check/plan.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/document/customizing_docs.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/document/document_iac.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/document/document_overview.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/document/iac.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/document/use_cases.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/generate/generate_components.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/generate/generate_stacks.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/init/init.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/init/init_space.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/inventory/CHANGELOG.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/inventory/frameworks/terraform.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/inventory/frameworks/terragrunt.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/inventory/iac.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/inventory/inventory_iac.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/inventory/inventory_overview.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/list/list_overview.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/list/list_projects.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/list/list_spaces.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/project/iac.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/project/project_cleanup.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/project/project_convert.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/project/project_overview.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/project/project_upgrade.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/project/use_cases.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/remove/remove_overview.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/remove/remove_project.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/remove/remove_space.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/scan/iac.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/scan/scan_iac.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/scan/scan_overview.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/scan/use_cases.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/commands/upgrade/upgrade_overview.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/concepts.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/cross_platform_support.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/framework_architecture.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/infrasctructure_composition.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/policy_as_code.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/roadmap_fdi.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/software_architecture.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/use_cases/README.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/use_cases/ai_dlc.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/use_cases/check_command.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/use_cases/devsecops_quickstart.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/use_cases/devsecops_sdlc.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/use_cases/inventory_command.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/use_cases/platform_engineering_templates.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/framework/use_cases/tasks/create_template.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/iac_devsecops_use_case.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/automate_tasks_command.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/commnad_init.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/create_component.gif +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/create_inventory.gif +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/doc_command.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/document_project_code.gif +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/framework/thothforge-framework.svg +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/framework/thothfr.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/iacpeerbot_summary.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/icon-light.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/icon.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/init_project.gif +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/inventory_command.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/notification_img.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/report_dependencies.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/report_dependencies_summary.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/restore_inventory_version.gif +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/reuse_project_pattern.gif +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/scan_code.gif +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/scan_command.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/stable/scan_report_example.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/sync_wk_command.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/transform_command.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/update_inventory_version.gif +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/validate_command.png +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/validate_environment.gif +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/img/validate_project.gif +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/includes/abbreviations.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/index.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/installation/linux_installation.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/installation/windows_installation.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/javascripts/tablesort.js +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/navigation.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/quick_start.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/requirements.txt +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/stylesheets/extra-enhanced.css +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/stylesheets/extra.css +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/telemetry.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/template_engine/cli_commands_audit.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/template_engine/for_developers.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/template_engine/for_platform_engineers.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/template_engine/github_templates.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/template_engine/template_engine.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/troubleshooting/linux_troubleshooting.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/troubleshooting/macos_troubleshooting.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/troubleshooting/troubleshooting.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/docs/troubleshooting/windows_troubleshooting.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/mkdocs.yaml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/pyproject.toml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/scripts/run_mcp_server.sh +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/application/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/autocomplete.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/analyze.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/apply_fix.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/configure.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/configure_decisions.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/decide.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/history.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/improve.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/orchestrate.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/override.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/report.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/ai_review/commands/serve.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/check/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/check/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/check/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/check/commands/environment.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/check/commands/iac.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/check/commands/project/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/check/commands/project/iac.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/check/commands/project.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/dashboard/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/dashboard/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/dashboard/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/dashboard/commands/launch.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/document/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/document/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/document/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/document/commands/iac.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/generate/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/generate/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/generate/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/generate/commands/component.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/generate/commands/stacks.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/init/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/init/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/init/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/init/commands/env.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/init/commands/project.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/init/commands/space.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/init/commands/template.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/inventory/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/inventory/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/inventory/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/inventory/commands/check.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/inventory/commands/iac.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/list/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/list/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/list/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/list/commands/projects.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/list/commands/spaces.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/mcp/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/mcp/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/mcp/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/mcp/commands/register.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/mcp/commands/server.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/mcp/commands/status.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/mcp/commands/stop.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/project/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/project/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/project/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/project/commands/bootstrap.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/project/commands/cleanup.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/project/commands/convert.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/project/commands/upgrade.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/remove/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/remove/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/remove/project.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/remove/space.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/scan/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/scan/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/scan/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/scan/commands/iac.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/space/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/space/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/space/commands/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/space/commands/activate.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/commands/upgrade/cli.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/common/.thothcf.setup.toml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/common/.thothcf_home.toml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/common/.thothcf_module.toml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/common/.thothcf_project.toml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/common/.thothcf_template_parameters.toml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/common/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/common/common.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/common/terragrunt/.thothcf_project.toml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/config/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/config/constants.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/config/default_values.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/config/defaults.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/config/models.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/config/settings.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/config/template_config.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/config/template_configs.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/config/templates.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/config/validation.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/cli_ui.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/commands.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/config.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/azure_devops/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/azure_devops/get_azure_devops.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/azure_devops/pull_request_comments.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/github/get_github.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/github/pull_request_comments.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/integrate_messages_services/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/integrate_messages_services/microsoft_teams.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/integrate_messages_services/sent_message_teams.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/pattern_names.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/pr_comments/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/integrations/pr_comments/pr_comment_publisher.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/logger.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/telemetry.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/core/version_tools.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/domain/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/domain/interfaces/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/domain/models/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/mcp/README.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/mcp/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/mcp/server.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/agentcore/agentcore.json +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/ai_agent.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/analyzers/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/analyzers/code_reviewer.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/analyzers/context_builder.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/analyzers/report_analyzer.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/analyzers/risk_assessor.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/bedrock_agent_api.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/config/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/config/ai_settings.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/config/decision_rules.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/decision_engine.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/main.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/memory.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/orchestrator.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/pr_decision_publisher.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/providers/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/providers/azure_provider.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/providers/bedrock_agent_provider.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/providers/bedrock_provider.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/providers/ollama_provider.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/providers/openai_provider.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/safety/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/safety/safety_guard.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/strands_agent.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/tracing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/utils/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/utils/cost_tracker.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/utils/fix_patterns.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/utils/fix_prompts.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/utils/formatters.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/ai_review/utils/prompts.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/environment/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/environment/check_environment.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/org_policy_loader.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/blast_radius_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/check_origin_version.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/check_project_structure.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/cost_analyzer.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/models/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/models/cloudformation_mapper.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/models/cost_models.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/aws_pricing_client.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/base_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/apigateway_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/bedrock_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/cloudwatch_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/dynamodb_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/ebs_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/ec2_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/ecs_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/eip_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/eks_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/elb_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/free_resources_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/kms_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/lambda_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/msk_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/rds_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/s3_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/secrets_manager_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/pricing/providers/vpc_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/cost/unified_cost_report.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/drift/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/drift/drift_ai.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/drift/drift_history.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/drift/drift_policy.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/drift/drift_report.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/drift/drift_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/drift/models.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/risk_assessment.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/project/validate_project_structure.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/rule_merger.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/check/stack_optimizer/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/dashboard/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/dashboard/dashboard_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/dashboard/data_loader.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/document/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/document/create_documentation.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/document/files_content.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/document/files_scan.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/document/iac_documentation.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/document/iac_grunt_graph.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/document/iac_grunt_info.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_stacks/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_stacks/config_generator.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_stacks/remote_config_generation.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_stacks/stack_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_stacks/templates/terragrunt.hcl.j2 +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_template/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_template/config.yaml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_template/create_code.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_template/create_component.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_template/create_component_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_template/create_stacks.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_template/create_template.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_template/files_content.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_template/github_template_loader.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/generate/create_template/project_templates.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/init/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/init/environment/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/init/environment/install_tools.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/init/project/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/init/project/project.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/init/space/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/init/space/example_space.toml +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/init/space/local_registry.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/init/space/space.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/inventory/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/inventory/changelog_parser.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/inventory/inventory_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/inventory/models.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/inventory/module_compatibility_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/inventory/report_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/inventory/schema_compatibility_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/inventory/terragrunt_parser.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/inventory/update_versions.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/inventory/version_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/mcp/README.md +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/mcp/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/mcp/simple_http_server.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/mcp/stdio_server.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/bootstrap/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/bootstrap/bootstrap_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/cleanup/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/cleanup/clean_project.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/cleanup/clean_space.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/convert/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/convert/conversion_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/convert/get_project_data.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/convert/post_init.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/convert/project_converter.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/convert/project_defaults.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/convert/set_project_parameters.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/create_terramate/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/create_terramate/create_terramate_stacks.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/create_terramate/detect_changes_stacks.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/create_terramate/manage_terramate_stacks.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/upgrade/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/project/upgrade/upgrade_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/compliance_review.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/import_reports.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/models.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/report_parser.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/sarif_output.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/scan_history.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/scan_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/scanners/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/scanners/checkov.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/scanners/kics.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/scanners/opa.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/scanners/scan_reports.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/scanners/scanners.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/scanners/terraform_compliance.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/scanners/tfsec.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/services/scan/scanners/trivy.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/templates/reports/inventory_report.html +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/templates/reports/inventory_report.js +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/templates/unified_report_styles.css +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/banner.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/create_compliance_html_reports.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/create_html_reports.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/delete_directory.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/fix_report_styling.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/render_scan_report.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/report_html_utils.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/templates/dashboard.html +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/templates/index_report.html +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/templates/individual_report.html +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/templates/simple_report.html +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/templates/unified_report_styles.css +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/templates/unified_scan_report.html +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/templates/unified_simple_report.html +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/common/templates/xunit_report.html +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/crypto.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/manage_backend_resources/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/manage_backend_resources/manage_backend_resources.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/modules_ops/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/modules_ops/terraform_module_details.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/modules_ops/terraform_modules_fetcher.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/platform_utils.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/process_hcl/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/process_hcl/analyze_terraform_plan.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/process_hcl/graph_manager.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/process_hcl/graph_terragrunt_dependencies.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/process_hcl/process_terraform_file.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/process_hcl/risk_analyzing_terraform_plan.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/sync_workspaces/__init__.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/sync_workspaces/sync_terraform_workspaces.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/sync_workspaces/sync_terragrunt_workspaces.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/template_loader.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/utils/thoth_colors.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/src/thothctl/wellcome_banner.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/conftest.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_agentcore_entrypoint.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_aws_pricing_client.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_azure_devops_pr_comments.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_bedrock_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_cdk_language_selection.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_context_steering.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_cost_analyzer.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_cost_models.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_cost_pr_comments.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_dashboard_loading_fix.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_dashboard_service.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_drift.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_drift_detection.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_ec2_pricing.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_github_pr_comments.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_iac_cost_integration.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_inventory_pr_comments.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_kics_scanner.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_mermaid_edge_labels.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_new_cost_providers.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_parallel_scan.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_platform_utils.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_pr_comment_publisher.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_provider_source_url_fix.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_provider_versions.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_scan_pr_comments.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_space_command.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_space_management.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_stack_optimizer.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_template_url_fix.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tests/test_terragrunt_parser.py +0 -0
- {thothctl-0.18.0 → thothctl-0.18.2}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: thothctl
|
|
3
|
-
Version: 0.18.
|
|
3
|
+
Version: 0.18.2
|
|
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
|
|
@@ -123,38 +123,61 @@ Check the status of the MCP server on a custom port:
|
|
|
123
123
|
thothctl mcp status --port 9090
|
|
124
124
|
```
|
|
125
125
|
|
|
126
|
-
## Available Tools
|
|
126
|
+
## Available Tools (22)
|
|
127
127
|
|
|
128
128
|
The MCP server exposes the following ThothCTL commands as tools for AI assistants:
|
|
129
129
|
|
|
130
130
|
### Project Management
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
131
|
+
| Tool | Description |
|
|
132
|
+
|------|-------------|
|
|
133
|
+
| `thothctl_init_project` | Initialize a new project (terraform, tofu, cdkv2, terragrunt, custom) |
|
|
134
|
+
| `thothctl_remove_project` | Remove a project from local tracking |
|
|
135
|
+
| `thothctl_list_projects` | List all projects managed by thothctl |
|
|
136
|
+
| `thothctl_project_bootstrap` | Bootstrap existing projects with ThothCTL support |
|
|
137
|
+
| `thothctl_project_cleanup` | Clean up residual files and directories |
|
|
138
|
+
| `thothctl_project_convert` | Convert project to template or between formats |
|
|
139
|
+
| `thothctl_project_upgrade` | Upgrade project scaffold from remote template |
|
|
137
140
|
|
|
138
141
|
### Space Management
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
142
|
+
| Tool | Description |
|
|
143
|
+
|------|-------------|
|
|
144
|
+
| `thothctl_init_space` | Initialize a new space |
|
|
145
|
+
| `thothctl_remove_space` | Remove a space |
|
|
146
|
+
| `thothctl_list_spaces` | List all spaces |
|
|
147
|
+
| `thothctl_get_projects_in_space` | Get projects in a specific space |
|
|
148
|
+
| `thothctl_list_templates` | List available templates from VCS providers |
|
|
149
|
+
|
|
150
|
+
### Security & Compliance
|
|
151
|
+
| Tool | Description |
|
|
152
|
+
|------|-------------|
|
|
153
|
+
| `thothctl_scan_iac` | Scan IaC for security issues (Checkov, Trivy, KICS, OPA) |
|
|
154
|
+
| `thothctl_check_environment` | Check development environment tools |
|
|
155
|
+
| `thothctl_check_iac` | Check IaC artifacts (plans, structure) |
|
|
156
|
+
| `thothctl_check_project` | Validate project structure |
|
|
157
|
+
|
|
158
|
+
### Cost & Drift Analysis
|
|
159
|
+
| Tool | Description |
|
|
160
|
+
|------|-------------|
|
|
161
|
+
| `thothctl_cost_analysis` | Estimate AWS costs from Terraform plans or CloudFormation templates |
|
|
162
|
+
| `thothctl_drift_detection` | Detect infrastructure drift with tag filtering, policy enforcement, and AI analysis |
|
|
163
|
+
|
|
164
|
+
### AI-Powered Review
|
|
165
|
+
| Tool | Description |
|
|
166
|
+
|------|-------------|
|
|
167
|
+
| `thothctl_ai_review` | Multi-mode AI security analysis: analyze, decide, improve, orchestrate |
|
|
168
|
+
|
|
169
|
+
### Infrastructure Tooling
|
|
170
|
+
| Tool | Description |
|
|
171
|
+
|------|-------------|
|
|
172
|
+
| `thothctl_inventory_iac` | Create IaC composition inventory |
|
|
173
|
+
| `thothctl_document_iac` | Generate documentation for IaC projects |
|
|
174
|
+
| `thothctl_generate_stacks` | Generate infrastructure stacks |
|
|
155
175
|
|
|
156
176
|
### Utility
|
|
157
|
-
|
|
177
|
+
| Tool | Description |
|
|
178
|
+
|------|-------------|
|
|
179
|
+
| `thothctl_version` | Get ThothCTL version |
|
|
180
|
+
| `thothctl_upgrade` | Upgrade thothctl to latest version |
|
|
158
181
|
|
|
159
182
|
## Integration with Amazon Q
|
|
160
183
|
|
|
@@ -284,12 +307,23 @@ q mcp add --name thothctl --command "thothctl" --args "mcp" --args "server" --ar
|
|
|
284
307
|
|
|
285
308
|
## Architecture
|
|
286
309
|
|
|
287
|
-
|
|
310
|
+
ThothCTL MCP exposes two server modes:
|
|
288
311
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
312
|
+
```
|
|
313
|
+
src/thothctl/services/mcp/
|
|
314
|
+
├── stdio_server.py ← stdio mode (Kiro, Amazon Q, Claude Code, Copilot)
|
|
315
|
+
└── simple_http_server.py ← HTTP mode (network integrations, CI/CD)
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
**Stdio mode** (`thothctl mcp server --stdio`):
|
|
319
|
+
- Used by AI coding assistants via MCP protocol over stdin/stdout
|
|
320
|
+
- Each tool maps to a subprocess call to the thothctl CLI
|
|
321
|
+
- 22 tools at full feature parity
|
|
322
|
+
|
|
323
|
+
**HTTP mode** (`thothctl mcp server -p 8080`):
|
|
324
|
+
- REST endpoints: `GET /tools`, `POST /execute`, `GET /health`
|
|
325
|
+
- CORS-enabled for browser/network integrations
|
|
326
|
+
- Same 22 tools via subprocess execution
|
|
293
327
|
|
|
294
328
|
## Security Considerations
|
|
295
329
|
|
|
@@ -80,6 +80,39 @@ You can list all available spaces using the `thothctl list spaces` command:
|
|
|
80
80
|
thothctl list spaces
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
+
### Showing Space Details
|
|
84
|
+
|
|
85
|
+
View the full configuration summary of a space:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
thothctl space show my-space
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
This displays:
|
|
92
|
+
- Space name, description, status (active/inactive), and creation date
|
|
93
|
+
- Version control provider
|
|
94
|
+
- Terraform registry and authentication method
|
|
95
|
+
- Orchestration tool
|
|
96
|
+
- Governance policy repository (if configured)
|
|
97
|
+
- Associated projects
|
|
98
|
+
- Credentials status
|
|
99
|
+
|
|
100
|
+
### Activating a Space
|
|
101
|
+
|
|
102
|
+
Set a space as the active context (used as default for new projects):
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
thothctl space activate my-space
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Updating a Space
|
|
109
|
+
|
|
110
|
+
Update an existing space's configuration:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
thothctl space update my-space --vcs-provider github --orchestration-tool terragrunt
|
|
114
|
+
```
|
|
115
|
+
|
|
83
116
|
### Deleting a Space
|
|
84
117
|
|
|
85
118
|
You can delete a space using the `thothctl remove space` command:
|
|
@@ -60,6 +60,14 @@ Usage: thothctl list spaces
|
|
|
60
60
|
List all spaces managed by thothctl
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
+
### Show Space Configuration
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Usage: thothctl space show SPACE_NAME
|
|
67
|
+
|
|
68
|
+
Show space configuration summary
|
|
69
|
+
```
|
|
70
|
+
|
|
63
71
|
### List Projects with Space Information
|
|
64
72
|
|
|
65
73
|
```
|
|
@@ -97,6 +105,14 @@ thothctl list spaces
|
|
|
97
105
|
|
|
98
106
|
This displays a list of all spaces with their project counts.
|
|
99
107
|
|
|
108
|
+
### Showing Space Configuration
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
thothctl space show platform-team
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
This displays a full summary of the space including VCS provider, Terraform registry, orchestration tool, governance policies, associated projects, and credentials status.
|
|
115
|
+
|
|
100
116
|
### Listing Projects with Space Information
|
|
101
117
|
|
|
102
118
|
```bash
|
|
@@ -126,104 +126,141 @@ With the MCP server running and registered with Amazon Q, you can use natural la
|
|
|
126
126
|
- "Initialize a new project with ThothCTL"
|
|
127
127
|
- "Detect drift in my production infrastructure filtered by env=prod"
|
|
128
128
|
- "Check if my terraform code has drifted and analyze the risk with AI"
|
|
129
|
-
## Available Tools
|
|
129
|
+
## Available Tools (22)
|
|
130
130
|
|
|
131
131
|
The MCP server exposes the following ThothCTL commands as tools:
|
|
132
132
|
|
|
133
133
|
### Project Management
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
134
|
+
| Tool | Description |
|
|
135
|
+
|------|-------------|
|
|
136
|
+
| `thothctl_init_project` | Initialize a new project (terraform, tofu, cdkv2, terragrunt, custom) |
|
|
137
|
+
| `thothctl_remove_project` | Remove a project from local tracking |
|
|
138
|
+
| `thothctl_list_projects` | List all projects managed by thothctl |
|
|
139
|
+
| `thothctl_project_bootstrap` | Bootstrap existing projects with ThothCTL support |
|
|
140
|
+
| `thothctl_project_cleanup` | Clean up residual files and directories |
|
|
141
|
+
| `thothctl_project_convert` | Convert project to template or between formats |
|
|
142
|
+
| `thothctl_project_upgrade` | Upgrade project scaffold from remote template |
|
|
137
143
|
|
|
138
144
|
### Space Management
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
| Parameter | Type | Default | Description |
|
|
173
|
-
|-----------|------|---------|-------------|
|
|
174
|
-
| `directory` | string | `"."` | Path to IaC directory |
|
|
175
|
-
| `recursive` | bool | `false` | Scan subdirectories |
|
|
176
|
-
| `tftool` | string | `"tofu"` | `terraform` or `tofu` |
|
|
177
|
-
| `filter_tags` | string | `null` | Filter by tags: `env=prod,team=*` |
|
|
178
|
-
| `ai_provider` | string | `null` | AI provider: `openai`, `bedrock`, `azure`, `ollama` |
|
|
179
|
-
| `ai_model` | string | `null` | Model override: `gpt-4`, `llama3` |
|
|
180
|
-
| `project_name` | string | `null` | Project name for history tracking |
|
|
181
|
-
|
|
182
|
-
**Response includes:**
|
|
183
|
-
- Drift summary with drifted resources, severity, and tags
|
|
184
|
-
- Policy evaluation (blocked, ignored, auto-accepted resources)
|
|
185
|
-
- Coverage trend (improving/degrading/stable with delta)
|
|
186
|
-
- AI analysis with risk score and recommendations (when `ai_provider` is set)
|
|
187
|
-
|
|
188
|
-
For full documentation, see the [Drift Detection Documentation](./framework/commands/check/drift-detection.md).
|
|
145
|
+
| Tool | Description |
|
|
146
|
+
|------|-------------|
|
|
147
|
+
| `thothctl_init_space` | Initialize a new space |
|
|
148
|
+
| `thothctl_remove_space` | Remove a space |
|
|
149
|
+
| `thothctl_list_spaces` | List all spaces |
|
|
150
|
+
| `thothctl_get_projects_in_space` | Get projects in a specific space |
|
|
151
|
+
|
|
152
|
+
### Security & Compliance
|
|
153
|
+
| Tool | Description |
|
|
154
|
+
|------|-------------|
|
|
155
|
+
| `thothctl_scan_iac` | Scan IaC for security issues (Checkov, Trivy, KICS, OPA) |
|
|
156
|
+
| `thothctl_check_environment` | Check development environment tools |
|
|
157
|
+
| `thothctl_check_iac` | Check IaC artifacts (plans, structure) |
|
|
158
|
+
| `thothctl_check_project` | Validate project structure |
|
|
159
|
+
|
|
160
|
+
### Cost & Drift Analysis
|
|
161
|
+
| Tool | Description |
|
|
162
|
+
|------|-------------|
|
|
163
|
+
| `thothctl_cost_analysis` | Estimate AWS costs from Terraform plans or CloudFormation templates |
|
|
164
|
+
| `thothctl_drift_detection` | Detect infrastructure drift with tag filtering, policy enforcement, and AI analysis |
|
|
165
|
+
|
|
166
|
+
### AI-Powered Review
|
|
167
|
+
| Tool | Description |
|
|
168
|
+
|------|-------------|
|
|
169
|
+
| `thothctl_ai_review` | Multi-mode AI security analysis: analyze, decide, improve, orchestrate |
|
|
170
|
+
|
|
171
|
+
### Infrastructure Tooling
|
|
172
|
+
| Tool | Description |
|
|
173
|
+
|------|-------------|
|
|
174
|
+
| `thothctl_inventory_iac` | Create IaC composition inventory |
|
|
175
|
+
| `thothctl_document_iac` | Generate documentation for IaC projects |
|
|
176
|
+
| `thothctl_generate_stacks` | Generate infrastructure stacks |
|
|
177
|
+
| `thothctl_list_templates` | List available templates from VCS providers |
|
|
189
178
|
|
|
190
179
|
### Utility
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
180
|
+
| Tool | Description |
|
|
181
|
+
|------|-------------|
|
|
182
|
+
| `thothctl_version` | Get ThothCTL version |
|
|
183
|
+
| `thothctl_upgrade` | Upgrade thothctl to latest version |
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
### Tool Details
|
|
188
|
+
|
|
189
|
+
#### `thothctl_cost_analysis`
|
|
190
|
+
|
|
191
|
+
Estimate AWS infrastructure costs from Terraform plans or CloudFormation templates.
|
|
192
|
+
|
|
193
|
+
```json
|
|
194
|
+
{
|
|
195
|
+
"recursive": true
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
| Parameter | Type | Default | Description |
|
|
200
|
+
|-----------|------|---------|-------------|
|
|
201
|
+
| `recursive` | bool | `false` | Search recursively for plan files |
|
|
202
|
+
|
|
203
|
+
#### `thothctl_drift_detection`
|
|
204
|
+
|
|
205
|
+
Detect infrastructure drift with tag filtering, policy enforcement, coverage trending, and AI-powered analysis.
|
|
206
|
+
|
|
207
|
+
```json
|
|
208
|
+
{
|
|
209
|
+
"recursive": true,
|
|
210
|
+
"tftool": "tofu",
|
|
211
|
+
"filter_tags": "env=prod,team=platform",
|
|
212
|
+
"ai_provider": "ollama",
|
|
213
|
+
"ai_model": "llama3"
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
| Parameter | Type | Default | Description |
|
|
218
|
+
|-----------|------|---------|-------------|
|
|
219
|
+
| `recursive` | bool | `false` | Scan subdirectories |
|
|
220
|
+
| `tftool` | string | `"tofu"` | `terraform` or `tofu` |
|
|
221
|
+
| `filter_tags` | string | `null` | Filter by tags: `env=prod,team=*` |
|
|
222
|
+
| `ai_provider` | string | `null` | AI provider: `openai`, `bedrock`, `azure`, `ollama` |
|
|
223
|
+
| `ai_model` | string | `null` | Model override: `gpt-4`, `llama3` |
|
|
224
|
+
|
|
225
|
+
#### `thothctl_ai_review`
|
|
226
|
+
|
|
227
|
+
AI-powered security analysis and code review for Infrastructure as Code.
|
|
228
|
+
|
|
229
|
+
```json
|
|
230
|
+
{
|
|
231
|
+
"provider": "ollama",
|
|
232
|
+
"mode": "analyze",
|
|
233
|
+
"severity": "high",
|
|
234
|
+
"agents": ["security", "architecture", "fix"]
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
| Parameter | Type | Default | Description |
|
|
239
|
+
|-----------|------|---------|-------------|
|
|
240
|
+
| `provider` | string | — | `openai`, `bedrock`, `azure`, `ollama` |
|
|
241
|
+
| `mode` | string | `"analyze"` | `analyze`, `decide`, `improve`, `orchestrate` |
|
|
242
|
+
| `severity` | string | — | Min severity for fix generation (improve mode) |
|
|
243
|
+
| `agents` | array | all | Agents to run in orchestrate mode |
|
|
218
244
|
|
|
219
245
|
## Architecture
|
|
220
246
|
|
|
221
|
-
|
|
247
|
+
ThothCTL MCP exposes two server modes:
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
src/thothctl/services/mcp/
|
|
251
|
+
├── stdio_server.py ← stdio mode (Kiro, Amazon Q, Claude Code, Copilot)
|
|
252
|
+
└── simple_http_server.py ← HTTP mode (network integrations, CI/CD)
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Stdio mode** (`thothctl mcp server --stdio`):
|
|
256
|
+
- Used by AI coding assistants via MCP protocol over stdin/stdout
|
|
257
|
+
- Each tool maps to a subprocess call to the thothctl CLI
|
|
258
|
+
- 22 tools at full feature parity
|
|
222
259
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
260
|
+
**HTTP mode** (`thothctl mcp server -p 8080`):
|
|
261
|
+
- REST endpoints: `GET /tools`, `POST /execute`, `GET /health`
|
|
262
|
+
- CORS-enabled for browser/network integrations
|
|
263
|
+
- Same 22 tools via subprocess execution
|
|
227
264
|
|
|
228
265
|
## Space Management
|
|
229
266
|
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"""Show space configuration summary."""
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
import click
|
|
5
|
+
import toml
|
|
6
|
+
from rich.console import Console
|
|
7
|
+
from rich.panel import Panel
|
|
8
|
+
from rich.table import Table
|
|
9
|
+
from rich import box
|
|
10
|
+
|
|
11
|
+
from ....common.common import list_spaces, get_projects_in_space
|
|
12
|
+
from ....core.commands import ClickCommand
|
|
13
|
+
from ....core.cli_ui import CliUI
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
ACTIVE_SPACE_FILE = Path.home() / ".thothcf" / "active_space"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ShowSpaceCommand(ClickCommand):
|
|
20
|
+
"""Command to display a space's full configuration summary."""
|
|
21
|
+
|
|
22
|
+
def __init__(self):
|
|
23
|
+
super().__init__()
|
|
24
|
+
self.ui = CliUI()
|
|
25
|
+
self.console = Console()
|
|
26
|
+
|
|
27
|
+
def validate(self, space_name: str, **kwargs) -> bool:
|
|
28
|
+
spaces = list_spaces()
|
|
29
|
+
if space_name not in spaces:
|
|
30
|
+
self.ui.print_error(f"Space '{space_name}' does not exist")
|
|
31
|
+
self.ui.print_info(f"Available spaces: {', '.join(spaces) if spaces else 'none'}")
|
|
32
|
+
raise ValueError(f"Space '{space_name}' does not exist")
|
|
33
|
+
return True
|
|
34
|
+
|
|
35
|
+
def _execute(self, space_name: str, **kwargs) -> None:
|
|
36
|
+
config_path = Path.home() / ".thothcf" / "spaces.toml"
|
|
37
|
+
config = toml.load(config_path)
|
|
38
|
+
space = config["spaces"][space_name]
|
|
39
|
+
|
|
40
|
+
# Check if this is the active space
|
|
41
|
+
active_space = ""
|
|
42
|
+
if ACTIVE_SPACE_FILE.exists():
|
|
43
|
+
active_space = ACTIVE_SPACE_FILE.read_text(encoding="utf-8").strip()
|
|
44
|
+
is_active = space_name == active_space
|
|
45
|
+
|
|
46
|
+
# Header
|
|
47
|
+
status = "🟢 ACTIVE" if is_active else "⚪ INACTIVE"
|
|
48
|
+
self.console.print(Panel(
|
|
49
|
+
f"[bold]{space.get('name', space_name)}[/bold] — {space.get('description', 'No description')}\n"
|
|
50
|
+
f"Status: {status} | Created: {space.get('created_at', 'unknown')[:10]}",
|
|
51
|
+
title="🌐 Space Configuration",
|
|
52
|
+
border_style="cyan",
|
|
53
|
+
))
|
|
54
|
+
|
|
55
|
+
# Configuration table
|
|
56
|
+
table = Table(box=box.ROUNDED, show_header=True, header_style="bold cyan")
|
|
57
|
+
table.add_column("Section", style="bold")
|
|
58
|
+
table.add_column("Setting")
|
|
59
|
+
table.add_column("Value")
|
|
60
|
+
|
|
61
|
+
# VCS
|
|
62
|
+
vcs = space.get("version_control", {})
|
|
63
|
+
table.add_row("Version Control", "Provider", vcs.get("provider", "—"))
|
|
64
|
+
|
|
65
|
+
# Terraform
|
|
66
|
+
tf = space.get("terraform", {})
|
|
67
|
+
table.add_row("Terraform", "Registry", tf.get("registry", "—"))
|
|
68
|
+
table.add_row("", "Auth Method", tf.get("auth_method", "—"))
|
|
69
|
+
|
|
70
|
+
# Orchestration
|
|
71
|
+
orch = space.get("orchestration", {})
|
|
72
|
+
table.add_row("Orchestration", "Tool", orch.get("tool", "—"))
|
|
73
|
+
|
|
74
|
+
# Governance
|
|
75
|
+
gov = space.get("governance", {})
|
|
76
|
+
if gov:
|
|
77
|
+
table.add_row("Governance", "Policy Repo", gov.get("policy_repo", "—"))
|
|
78
|
+
|
|
79
|
+
self.console.print(table)
|
|
80
|
+
|
|
81
|
+
# Projects in this space
|
|
82
|
+
projects = get_projects_in_space(space_name)
|
|
83
|
+
if projects:
|
|
84
|
+
self.console.print(f"\n[bold]📦 Projects ({len(projects)}):[/bold]")
|
|
85
|
+
for p in projects:
|
|
86
|
+
self.console.print(f" • {p}")
|
|
87
|
+
else:
|
|
88
|
+
self.console.print("\n[dim]No projects in this space.[/dim]")
|
|
89
|
+
|
|
90
|
+
# Credentials status
|
|
91
|
+
creds_path = Path.home() / ".thothcf" / "spaces" / space_name / "credentials"
|
|
92
|
+
if creds_path.exists():
|
|
93
|
+
cred_files = list(creds_path.iterdir())
|
|
94
|
+
self.console.print(f"\n[bold]🔒 Credentials:[/bold] {len(cred_files)} stored (encrypted)")
|
|
95
|
+
else:
|
|
96
|
+
self.console.print("\n[dim]🔒 No credentials configured.[/dim]")
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
cli = ShowSpaceCommand.as_click_command(help="Show space configuration summary")(
|
|
100
|
+
click.argument("space_name"),
|
|
101
|
+
)
|
|
@@ -17,15 +17,15 @@ class UpdateSpaceCommand(ClickCommand):
|
|
|
17
17
|
super().__init__()
|
|
18
18
|
self.ui = CliUI()
|
|
19
19
|
|
|
20
|
-
def validate(self, space_name: str, description, vcs_provider, orchestration_tool, terraform_registry, **kwargs) -> bool:
|
|
20
|
+
def validate(self, space_name: str, description, vcs_provider, orchestration_tool, terraform_registry, policy_repo, **kwargs) -> bool:
|
|
21
21
|
spaces = list_spaces()
|
|
22
22
|
if space_name not in spaces:
|
|
23
23
|
raise ValueError(f"Space '{space_name}' does not exist")
|
|
24
|
-
if not any([description, vcs_provider, orchestration_tool, terraform_registry]):
|
|
25
|
-
raise ValueError("Provide at least one option to update (--description, --vcs-provider, --orchestration-tool, --terraform-registry)")
|
|
24
|
+
if not any([description, vcs_provider, orchestration_tool, terraform_registry, policy_repo]):
|
|
25
|
+
raise ValueError("Provide at least one option to update (--description, --vcs-provider, --orchestration-tool, --terraform-registry, --policy-repo)")
|
|
26
26
|
return True
|
|
27
27
|
|
|
28
|
-
def _execute(self, space_name: str, description, vcs_provider, orchestration_tool, terraform_registry, **kwargs) -> None:
|
|
28
|
+
def _execute(self, space_name: str, description, vcs_provider, orchestration_tool, terraform_registry, policy_repo, **kwargs) -> None:
|
|
29
29
|
config_path = Path.home() / ".thothcf" / "spaces.toml"
|
|
30
30
|
with open(config_path, mode="rt", encoding="utf-8") as fp:
|
|
31
31
|
config = toml.load(fp)
|
|
@@ -40,6 +40,8 @@ class UpdateSpaceCommand(ClickCommand):
|
|
|
40
40
|
space.setdefault("orchestration", {})["tool"] = orchestration_tool
|
|
41
41
|
if terraform_registry is not None:
|
|
42
42
|
space.setdefault("terraform", {})["registry"] = terraform_registry
|
|
43
|
+
if policy_repo is not None:
|
|
44
|
+
space.setdefault("governance", {})["policy_repo"] = policy_repo
|
|
43
45
|
|
|
44
46
|
space["updated_at"] = datetime.now().isoformat()
|
|
45
47
|
|
|
@@ -69,4 +71,9 @@ cli = UpdateSpaceCommand.as_click_command(help="Update an existing space's confi
|
|
|
69
71
|
help="Terraform registry URL",
|
|
70
72
|
default=None,
|
|
71
73
|
),
|
|
74
|
+
click.option(
|
|
75
|
+
"-pr", "--policy-repo",
|
|
76
|
+
help="Git repository URL or local path for organization-level IaC policies",
|
|
77
|
+
default=None,
|
|
78
|
+
),
|
|
72
79
|
)
|