thothctl 0.25.2__tar.gz → 0.25.3__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.25.2 → thothctl-0.25.3}/PKG-INFO +2 -2
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/concepts.md +2 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/framework_architecture.md +2 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/roadmap_fdi.md +16 -1
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/software_architecture.md +2 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/use_cases/README.md +2 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/use_cases/ai_dlc.md +2 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/use_cases/tasks/workflow_implementation_plan.md +8 -1
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/toolkit_overview.md +3 -1
- {thothctl-0.25.2 → thothctl-0.25.3}/mkdocs.yaml +1 -1
- {thothctl-0.25.2 → thothctl-0.25.3}/pyproject.toml +1 -1
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/check/commands/iac.py +105 -1
- thothctl-0.25.3/src/thothctl/services/check/rules_compiler.py +418 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/intent/context_builder.py +126 -23
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/intent/intent_service.py +154 -11
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/intent/models.py +82 -5
- thothctl-0.25.3/src/thothctl/services/generate/intent/validator.py +740 -0
- thothctl-0.25.3/src/thothctl/services/mcp/stdio_server.py +306 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/version.py +1 -1
- thothctl-0.25.3/tests/test_intent_quick_wins.py +276 -0
- thothctl-0.25.3/tests/test_rules_compiler.py +292 -0
- thothctl-0.25.2/docs/iac_devsecops_use_case.md +0 -436
- thothctl-0.25.2/docs/img/automate_tasks_command.png +0 -0
- thothctl-0.25.2/docs/img/create_component.gif +0 -0
- thothctl-0.25.2/docs/img/create_inventory.gif +0 -0
- thothctl-0.25.2/docs/img/doc_command.png +0 -0
- thothctl-0.25.2/docs/img/document_project_code.gif +0 -0
- thothctl-0.25.2/docs/img/iacpeerbot_summary.png +0 -0
- thothctl-0.25.2/docs/img/inventory_command.png +0 -0
- thothctl-0.25.2/docs/img/notification_img.png +0 -0
- thothctl-0.25.2/docs/img/report_dependencies.png +0 -0
- thothctl-0.25.2/docs/img/report_dependencies_summary.png +0 -0
- thothctl-0.25.2/docs/img/restore_inventory_version.gif +0 -0
- thothctl-0.25.2/docs/img/reuse_project_pattern.gif +0 -0
- thothctl-0.25.2/docs/img/scan_code.gif +0 -0
- thothctl-0.25.2/docs/img/scan_command.png +0 -0
- thothctl-0.25.2/docs/img/sync_wk_command.png +0 -0
- thothctl-0.25.2/docs/img/transform_command.png +0 -0
- thothctl-0.25.2/docs/img/update_inventory_version.gif +0 -0
- thothctl-0.25.2/docs/img/validate_command.png +0 -0
- thothctl-0.25.2/docs/img/validate_environment.gif +0 -0
- thothctl-0.25.2/docs/img/validate_project.gif +0 -0
- thothctl-0.25.2/src/thothctl/services/generate/intent/validator.py +0 -298
- thothctl-0.25.2/src/thothctl/services/mcp/stdio_server.py +0 -679
- {thothctl-0.25.2 → thothctl-0.25.3}/.devcontainer/Dockerfile +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/.devcontainer/README.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/.devcontainer/devcontainer.json +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/.github/workflows/docs.yml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/.github/workflows/python-publish.yml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/.github/workflows/release.yml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/.gitignore +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/.pre-commit-config.yaml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/.pydocstyle +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/.readthedocs.yaml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/Dockerfile +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/LICENSE +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/README.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/catalog/catalog-info.yaml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/dashboard/README.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/ai-review/README.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/ai-review/agent_specifications.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/ai-review/agentcore.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/blast-radius.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/check_environment.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/check_iac.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/check_overview.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/check_project_iac.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/check_space.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/cost-analysis-quick-reference.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/cost-analysis.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/customizing_rules.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/deps-advanced.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/deps.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/drift-detection.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/check/plan.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/dashboard/dashboard_overview.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/document/customizing_docs.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/document/document_iac.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/document/document_overview.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/document/iac.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/document/mermaid_examples.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/document/mermaid_quickref.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/document/use_cases.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/generate/generate_components.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/generate/generate_iac.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/generate/generate_stacks.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/init/init.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/init/init_space.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/inventory/CHANGELOG.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/inventory/frameworks/terraform.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/inventory/frameworks/terragrunt.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/inventory/iac.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/inventory/inventory_iac.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/inventory/inventory_overview.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/list/list_overview.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/list/list_projects.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/list/list_spaces.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/mcp/mcp.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/project/iac.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/project/project_cleanup.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/project/project_convert.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/project/project_overview.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/project/project_upgrade.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/project/use_cases.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/remove/remove_overview.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/remove/remove_project.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/remove/remove_space.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/scan/iac.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/scan/scan_iac.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/scan/scan_overview.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/scan/use_cases.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/space/space_overview.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/upgrade/upgrade_overview.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/workflow/workflow_devsecops.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/commands/workflow/workflow_overview.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/cross_platform_support.md +0 -0
- /thothctl-0.25.2/docs/framework/infrasctructure_composition.md → /thothctl-0.25.3/docs/framework/infrastructure_composition.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/policy_as_code.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/space_configuration.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/specs/phase1_intent_to_iac.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/use_cases/check_command.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/use_cases/devsecops_quickstart.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/use_cases/devsecops_sdlc.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/use_cases/inventory_command.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/use_cases/platform_engineering_templates.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/use_cases/space_management.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/use_cases/tasks/create_template.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/img/commnad_init.png +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/img/framework/thothforge-framework.svg +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/img/framework/thothfr.png +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/img/icon-light.png +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/img/icon.png +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/img/init_project.gif +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/img/stable/scan_report_example.png +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/includes/abbreviations.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/index.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/installation/devcontainer_setup.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/installation/linux_installation.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/installation/windows_installation.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/javascripts/tablesort.js +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/mcp.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/navigation.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/quick_start.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/requirements.txt +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/stylesheets/extra-enhanced.css +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/stylesheets/extra.css +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/telemetry.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/template_engine/cli_commands_audit.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/template_engine/for_developers.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/template_engine/for_platform_engineers.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/template_engine/github_templates.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/template_engine/template_engine.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/troubleshooting/linux_troubleshooting.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/troubleshooting/macos_troubleshooting.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/troubleshooting/troubleshooting.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/docs/troubleshooting/windows_troubleshooting.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/scripts/check_output_consistency.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/scripts/run_mcp_server.sh +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/application/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/autocomplete.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/analyze.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/apply_fix.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/configure.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/configure_decisions.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/decide.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/history.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/improve.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/orchestrate.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/override.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/report.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/ai_review/commands/serve.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/check/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/check/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/check/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/check/commands/config.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/check/commands/environment.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/check/commands/project/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/check/commands/project/iac.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/check/commands/project.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/check/commands/space.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/dashboard/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/dashboard/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/dashboard/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/dashboard/commands/launch.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/document/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/document/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/document/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/document/commands/iac.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/generate/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/generate/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/generate/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/generate/commands/component.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/generate/commands/iac.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/generate/commands/stacks.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/init/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/init/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/init/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/init/commands/env.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/init/commands/project.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/init/commands/space.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/init/commands/template.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/inventory/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/inventory/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/inventory/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/inventory/commands/check.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/inventory/commands/iac.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/list/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/list/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/list/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/list/commands/projects.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/list/commands/spaces.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/list/commands/templates.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/mcp/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/mcp/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/mcp/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/mcp/commands/register.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/mcp/commands/server.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/mcp/commands/status.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/mcp/commands/stop.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/project/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/project/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/project/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/project/commands/bootstrap.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/project/commands/cleanup.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/project/commands/convert.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/project/commands/upgrade.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/quickstart/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/quickstart/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/remove/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/remove/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/remove/project.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/remove/space.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/scan/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/scan/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/scan/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/scan/commands/iac.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/space/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/space/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/space/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/space/commands/activate.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/space/commands/deactivate.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/space/commands/export_space.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/space/commands/import_space.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/space/commands/show.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/space/commands/update.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/upgrade/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/workflow/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/workflow/cli.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/workflow/commands/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/workflow/commands/devsecops.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/commands/workflow/commands/run.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/common/.thothcf.setup.toml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/common/.thothcf_home.toml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/common/.thothcf_module.toml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/common/.thothcf_project.toml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/common/.thothcf_template_parameters.toml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/common/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/common/common.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/common/terragrunt/.thothcf_project.toml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/config/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/config/constants.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/config/default_values.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/config/defaults.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/config/models.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/config/settings.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/config/template_config.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/config/template_configs.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/config/templates.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/config/validation.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/cli_ui.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/commands.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/config.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/azure_devops/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/azure_devops/get_azure_devops.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/azure_devops/pull_request_comments.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/github/get_github.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/github/pull_request_comments.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/integrate_messages_services/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/integrate_messages_services/microsoft_teams.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/integrate_messages_services/sent_message_teams.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/pattern_names.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/pr_comments/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/integrations/pr_comments/pr_comment_publisher.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/logger.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/telemetry.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/core/version_tools.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/domain/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/domain/interfaces/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/domain/models/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/mcp/README.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/mcp/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/mcp/server.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/agentcore/agentcore.json +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/ai_agent.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/analyzers/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/analyzers/code_reviewer.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/analyzers/context_builder.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/analyzers/report_analyzer.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/analyzers/risk_assessor.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/bedrock_agent_api.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/config/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/config/ai_settings.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/config/decision_rules.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/decision_engine.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/main.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/memory.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/orchestrator.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/pr_decision_publisher.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/providers/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/providers/azure_provider.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/providers/bedrock_agent_provider.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/providers/bedrock_provider.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/providers/ollama_provider.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/providers/openai_provider.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/safety/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/safety/safety_guard.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/strands_agent.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/tracing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/utils/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/utils/cost_tracker.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/utils/fix_patterns.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/utils/fix_prompts.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/utils/formatters.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/ai_review/utils/prompts.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/environment/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/environment/check_environment.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/org_policy_loader.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/blast_radius_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cfn_blast_radius_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/check_origin_version.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/check_project_structure.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/cost_analyzer.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/models/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/models/cloudformation_mapper.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/models/cost_models.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/aws_pricing_client.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/base_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/apigateway_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/bedrock_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/cloudwatch_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/dynamodb_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/ebs_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/ec2_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/ecs_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/eip_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/eks_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/elb_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/free_resources_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/kms_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/lambda_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/msk_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/rds_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/s3_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/secrets_manager_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/pricing/providers/vpc_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/cost/unified_cost_report.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/drift/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/drift/cfn_drift_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/drift/drift_ai.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/drift/drift_history.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/drift/drift_policy.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/drift/drift_report.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/drift/drift_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/drift/models.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/risk_assessment.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/project/validate_project_structure.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/rule_merger.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/check/stack_optimizer/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/dashboard/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/dashboard/dashboard_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/dashboard/data_loader.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/document/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/document/architecture_renderer.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/document/create_documentation.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/document/files_content.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/document/files_scan.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/document/iac_documentation.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/document/iac_grunt_graph.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/document/iac_grunt_info.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/document/topology_generator.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_stacks/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_stacks/config_generator.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_stacks/remote_config_generation.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_stacks/stack_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_stacks/templates/terragrunt.hcl.j2 +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_stacks/terragrunt.hcl +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_template/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_template/config.yaml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_template/create_code.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_template/create_component.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_template/create_component_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_template/create_stacks.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_template/create_template.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_template/files_content.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_template/github_template_loader.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/create_template/project_templates.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/intent/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/intent/code_generator.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/generate/intent/prompts.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/environment/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/environment/install_tools.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/environment/prerequisite_checker.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/environment/tool_packs.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/project/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/project/project.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/space/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/space/example_space.toml +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/space/export_import.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/space/inheritance.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/space/space.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/init/space/terraform_module_cache.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/cdk_parsers.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/cdk_sbom_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/changelog_parser.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/inventory_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/models.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/module_compatibility_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/report_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/schema_compatibility_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/terragrunt_parser.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/update_versions.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/inventory/version_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/mcp/README.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/mcp/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/mcp/simple_http_server.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/bootstrap/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/bootstrap/bootstrap_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/cleanup/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/cleanup/clean_project.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/cleanup/clean_space.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/convert/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/convert/conversion_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/convert/get_project_data.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/convert/post_init.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/convert/project_converter.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/convert/project_defaults.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/convert/set_project_parameters.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/create_terramate/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/create_terramate/create_terramate_stacks.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/create_terramate/detect_changes_stacks.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/create_terramate/manage_terramate_stacks.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/upgrade/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/project/upgrade/upgrade_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/compliance_review.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/import_reports.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/models.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/report_parser.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/sarif_output.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/scan_history.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/scan_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/scanners/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/scanners/checkov.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/scanners/kics.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/scanners/opa.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/scanners/scan_reports.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/scanners/scanners.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/scanners/terraform_compliance.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/scanners/tfsec.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/scan/scanners/trivy.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/custom_workflow_engine.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/models.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/phases/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/phases/base.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/phases/build.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/phases/deploy.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/phases/develop.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/phases/monitor.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/phases/plan.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/phases/secure.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/phases/test.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/services/workflow/workflow_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/templates/ai_reports/pr_comment.md +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/templates/reports/inventory_report.html +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/templates/reports/inventory_report.js +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/templates/unified_report_styles.css +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/banner.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/create_compliance_html_reports.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/create_html_reports.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/delete_directory.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/fix_report_styling.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/render_scan_report.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/report_html_utils.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/templates/dashboard.html +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/templates/index_report.html +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/templates/individual_report.html +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/templates/simple_report.html +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/templates/unified_report_styles.css +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/templates/unified_scan_report.html +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/templates/unified_simple_report.html +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/common/templates/xunit_report.html +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/crypto.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/git_changes.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/manage_backend_resources/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/manage_backend_resources/manage_backend_resources.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/modules_ops/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/modules_ops/terraform_module_details.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/modules_ops/terraform_modules_fetcher.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/platform_utils.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/process_hcl/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/process_hcl/analyze_terraform_plan.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/process_hcl/graph_manager.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/process_hcl/graph_terragrunt_dependencies.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/process_hcl/process_terraform_file.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/process_hcl/risk_analyzing_terraform_plan.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/sync_workspaces/__init__.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/sync_workspaces/sync_terraform_workspaces.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/sync_workspaces/sync_terragrunt_workspaces.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/template_loader.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/utils/thoth_colors.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/src/thothctl/wellcome_banner.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/conftest.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_agentcore_entrypoint.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_ai_apply_fix.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_ai_decision_engine.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_ai_fix_patterns.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_ai_memory.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_ai_orchestrator.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_ai_pr_decision.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_ai_safety_guard.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_aws_pricing_client.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_azure_devops_pr_comments.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_bedrock_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_cdk_inventory.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_cdk_language_selection.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_cfn_blast_radius.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_cfn_drift_detection.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_context_steering.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_cost_analyzer.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_cost_models.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_cost_policy_enforcement.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_cost_pr_comments.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_dashboard_loading_fix.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_dashboard_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_drift.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_drift_detection.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_ec2_pricing.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_generate_iac_codegen.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_generate_iac_context.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_generate_iac_prompts.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_generate_iac_service.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_generate_iac_validator.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_github_pr_comments.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_iac_cost_integration.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_init_ai_tools.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_init_template_params.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_inventory_pr_comments.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_kics_scanner.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_mermaid_edge_labels.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_new_cost_providers.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_opa_data_files.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_parallel_scan.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_platform_utils.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_pr_comment_publisher.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_provider_source_url_fix.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_provider_versions.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_scan_cfn_support.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_scan_command.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_scan_pr_comments.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_space_command.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_space_management.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_stack_optimizer.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_template_url_fix.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_terragrunt_parser.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_topology_generator.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tests/test_workflow_integration.py +0 -0
- {thothctl-0.25.2 → thothctl-0.25.3}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: thothctl
|
|
3
|
-
Version: 0.25.
|
|
3
|
+
Version: 0.25.3
|
|
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
|
|
@@ -24,7 +24,7 @@ Requires-Dist: inquirer>=3.3.0
|
|
|
24
24
|
Requires-Dist: json2html>=1.3.0
|
|
25
25
|
Requires-Dist: junit2html>=30.1.3
|
|
26
26
|
Requires-Dist: junitparser>=2.0.0
|
|
27
|
-
Requires-Dist: mcp>=
|
|
27
|
+
Requires-Dist: mcp>=2.0.0
|
|
28
28
|
Requires-Dist: pre-commit>=3.7.1
|
|
29
29
|
Requires-Dist: psutil
|
|
30
30
|
Requires-Dist: pyfiglet>=1.0.2
|
|
@@ -8,6 +8,8 @@ ThothCTL integrates AI across the infrastructure lifecycle through three distinc
|
|
|
8
8
|
|
|
9
9
|
The **AI SDLC** is the overarching framework — not a single command, but the governed lifecycle that all ThothCTL features plug into. It defines *when* and *how* AI assists at each phase of infrastructure development.
|
|
10
10
|
|
|
11
|
+
> 📖 **For the complete phase-by-phase guide** (enforcement modes, CI/CD integration, configuration, and detailed examples), see the [DevSecOps SDLC Guide](use_cases/devsecops_sdlc.md).
|
|
12
|
+
|
|
11
13
|
```mermaid
|
|
12
14
|
%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#e3f2fd','primaryTextColor':'#1565c0','primaryBorderColor':'#1976d2','lineColor':'#42a5f5','secondaryColor':'#fff3e0','tertiaryColor':'#f3e5f5','fontSize':'14px'}}}%%
|
|
13
15
|
graph LR
|
|
@@ -125,6 +125,8 @@ ThothCTL aligns with IDP business objectives through five core principles:
|
|
|
125
125
|
- [terraform-scaffold](https://github.com/thothforge/terraform_project_scaffold) - Standard Terraform projects
|
|
126
126
|
- [terragrunt-scaffold](https://github.com/thothforge/terragrunt_project_scaffold) - Multi-environment Terragrunt
|
|
127
127
|
- [terraform-module-scaffold](https://github.com/thothforge/terraform_module_scaffold) - Reusable modules
|
|
128
|
+
- [cdk-scaffold](https://github.com/thothforge/cdk_project_scaffold) - AWS CDK v2 (TypeScript/Python)
|
|
129
|
+
- [cloudformation-scaffold](https://github.com/thothforge/cloudformation_project_scaffold) - CloudFormation / SAM
|
|
128
130
|
|
|
129
131
|
**Commands:** `thothctl init env`, `thothctl init space`, `thothctl init project`
|
|
130
132
|
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
# Roadmap: ThothCTL as a Framework-Defined Infrastructure (FdI) Platform
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
!!! warning "Deprecated — Superseded by 2026 Roadmap"
|
|
4
|
+
This document reflects the **original FdI roadmap** (v0.16–v0.22 phases) and is no longer the active planning document.
|
|
5
|
+
|
|
6
|
+
**The current roadmap is**: `thothctl_roadmap_2026.md` (in the ThothForge root, outside this docs site) — integrates PlatformCon 2026 insights, competitive analysis, and updated implementation status.
|
|
7
|
+
|
|
8
|
+
Key differences:
|
|
9
|
+
|
|
10
|
+
- Phase numbering has changed (this doc's Phase 1–4 ≠ the 2026 roadmap's Phase 1–6)
|
|
11
|
+
- The 2026 roadmap reflects what is actually implemented (Intent-to-IaC, Workflow Engine partially done)
|
|
12
|
+
- New priorities added: Agent Governance, MCP Gateway, Compliance Scoring, Context Lake
|
|
13
|
+
|
|
14
|
+
This file is preserved for historical context only. Do not use it for planning.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Vision (Historical)
|
|
4
19
|
|
|
5
20
|
Transform ThothCTL from an IaC management CLI into an **IaC-native Framework-Defined Infrastructure platform** where business intent and application conventions automatically produce production-ready infrastructure code — without requiring developers to write Terraform manually.
|
|
6
21
|
|
|
@@ -693,6 +693,8 @@ Git-based templates for project creation.
|
|
|
693
693
|
- [terraform-scaffold](https://github.com/thothforge/terraform-scaffold)
|
|
694
694
|
- [terragrunt-scaffold](https://github.com/thothforge/terragrunt-scaffold)
|
|
695
695
|
- [tofu-scaffold](https://github.com/thothforge/tofu-scaffold)
|
|
696
|
+
- [cdk-scaffold](https://github.com/thothforge/cdk-scaffold) - AWS CDK v2
|
|
697
|
+
- [cloudformation-scaffold](https://github.com/thothforge/cloudformation-scaffold) - CloudFormation / SAM
|
|
696
698
|
|
|
697
699
|
**Scaffold Structure:**
|
|
698
700
|
```
|
|
@@ -136,6 +136,8 @@ ThothCTL exposes these capabilities through MCP:
|
|
|
136
136
|
| `get_version` | Get ThothCTL version | "What version of ThothCTL is installed?" |
|
|
137
137
|
| `upgrade_thothctl` | Upgrade ThothCTL | "Upgrade ThothCTL to latest version" |
|
|
138
138
|
|
|
139
|
+
> 📖 The `workflow_devsecops` tool orchestrates the full DevSecOps SDLC pipeline. For detailed phase descriptions, enforcement modes, and configuration, see the [DevSecOps SDLC Guide](devsecops_sdlc.md).
|
|
140
|
+
|
|
139
141
|
---
|
|
140
142
|
|
|
141
143
|
## Component 2: Scaffold Templates
|
{thothctl-0.25.2 → thothctl-0.25.3}/docs/framework/use_cases/tasks/workflow_implementation_plan.md
RENAMED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Implementation Plan: DevSecOps Workflow Abstraction
|
|
2
2
|
|
|
3
|
+
!!! success "Implementation Complete"
|
|
4
|
+
This workflow has been fully implemented. The `thothctl workflow devsecops` command is available since v0.25.x.
|
|
5
|
+
For usage documentation, see the **[DevSecOps SDLC Guide](../devsecops_sdlc.md)** — the single source of truth for all DevSecOps workflow phases, commands, and configuration.
|
|
6
|
+
For command reference, see [workflow devsecops command](../../commands/workflow/workflow_devsecops.md).
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
3
10
|
## Objective
|
|
4
11
|
|
|
5
12
|
Provide two abstraction layers over the existing DevSecOps SDLC stages:
|
|
@@ -707,7 +714,7 @@ Decision matrix for project type → command variations:
|
|
|
707
714
|
|
|
708
715
|
| # | Task | Type | Effort |
|
|
709
716
|
|---|------|------|--------|
|
|
710
|
-
| 24 | Workflow YAML config support (`.thothcf.toml` [workflow] section) | Feature | M |
|
|
717
|
+
| 24 | Workflow YAML config support (`.thothcf.toml` \[workflow\] section) | Feature | M |
|
|
711
718
|
| 25 | `--post-to-pr` support on workflow command | Feature | S |
|
|
712
719
|
| 26 | JSON/SARIF output for workflow results | Feature | M |
|
|
713
720
|
| 27 | GitHub Actions reusable workflow template | Docs | M |
|
|
@@ -137,7 +137,7 @@ thothctl workflow devsecops --phase deploy # 🚀 Enforcement gate
|
|
|
137
137
|
thothctl workflow devsecops --phase monitor # 📊 Drift detection
|
|
138
138
|
```
|
|
139
139
|
|
|
140
|
-
📖 [Workflow Documentation](framework/commands/workflow/workflow_devsecops.md)
|
|
140
|
+
📖 [Workflow Documentation](framework/commands/workflow/workflow_devsecops.md) | [Complete DevSecOps SDLC Guide](framework/use_cases/devsecops_sdlc.md)
|
|
141
141
|
|
|
142
142
|
---
|
|
143
143
|
|
|
@@ -218,6 +218,8 @@ thothctl init project -p my-infra --reuse --space my-space
|
|
|
218
218
|
| [terraform-terragrunt-scaffold](https://github.com/thothforge/terraform_terragrunt_scaffold_project) | Multi-environment Terragrunt |
|
|
219
219
|
| [terraform-scaffold](https://github.com/thothforge/terraform_project_scaffold) | Standard Terraform |
|
|
220
220
|
| [terraform-module-scaffold](https://github.com/thothforge/terraform_module_scaffold) | Reusable modules |
|
|
221
|
+
| [cdk-scaffold](https://github.com/thothforge/cdk_project_scaffold) | AWS CDK v2 (TypeScript/Python) |
|
|
222
|
+
| [cloudformation-scaffold](https://github.com/thothforge/cloudformation_project_scaffold) | CloudFormation / SAM |
|
|
221
223
|
|
|
222
224
|
---
|
|
223
225
|
|
|
@@ -95,7 +95,7 @@ nav:
|
|
|
95
95
|
- Software Architecture: framework/software_architecture.md
|
|
96
96
|
- Policy as Code: framework/policy_as_code.md
|
|
97
97
|
- Concepts: framework/concepts.md
|
|
98
|
-
- Infrastructure Composition: framework/
|
|
98
|
+
- Infrastructure Composition: framework/infrastructure_composition.md
|
|
99
99
|
- Space Configuration: framework/space_configuration.md
|
|
100
100
|
- Cross-Platform Support: framework/cross_platform_support.md
|
|
101
101
|
- Troubleshooting:
|
|
@@ -35,6 +35,7 @@ class CheckIaCCommand(ClickCommand):
|
|
|
35
35
|
"cost-analysis",
|
|
36
36
|
"drift",
|
|
37
37
|
"stack-optimizer",
|
|
38
|
+
"rules",
|
|
38
39
|
]
|
|
39
40
|
|
|
40
41
|
def validate(self, **kwargs) -> bool:
|
|
@@ -101,6 +102,10 @@ class CheckIaCCommand(ClickCommand):
|
|
|
101
102
|
elif kwargs["check_type"] == "stack-optimizer":
|
|
102
103
|
result = self._run_stack_optimizer(directory=directory, **kwargs)
|
|
103
104
|
return result
|
|
105
|
+
elif kwargs["check_type"] == "rules":
|
|
106
|
+
self.ui.print_info("📏 Running organizational rules evaluation...")
|
|
107
|
+
result = self._run_rules_evaluation(directory=directory, **kwargs)
|
|
108
|
+
return result
|
|
104
109
|
|
|
105
110
|
self.logger.debug("Check completed successfully")
|
|
106
111
|
return True
|
|
@@ -2446,6 +2451,104 @@ new vis.Network(container, data, options);
|
|
|
2446
2451
|
}
|
|
2447
2452
|
return color_map.get(criticality, "white")
|
|
2448
2453
|
|
|
2454
|
+
def _run_rules_evaluation(self, directory: str, **kwargs) -> bool:
|
|
2455
|
+
"""Run organizational rules evaluation using OPA/conftest.
|
|
2456
|
+
|
|
2457
|
+
Compiles .thothcf.toml [rules] into Rego policies, then delegates
|
|
2458
|
+
evaluation to the existing OPA/conftest scanner. No custom evaluation
|
|
2459
|
+
engine — OPA is the single policy framework.
|
|
2460
|
+
"""
|
|
2461
|
+
try:
|
|
2462
|
+
from ....services.check.rules_compiler import RulesCompiler
|
|
2463
|
+
from ....services.scan.scanners.opa import OPAScanner
|
|
2464
|
+
|
|
2465
|
+
# Step 1: Compile TOML rules → Rego policies
|
|
2466
|
+
compiler = RulesCompiler()
|
|
2467
|
+
compiled_dir = compiler.compile(directory)
|
|
2468
|
+
|
|
2469
|
+
if not compiled_dir:
|
|
2470
|
+
self.ui.print_warning(
|
|
2471
|
+
"No rules found in .thothcf.toml [rules] section. "
|
|
2472
|
+
"Add [[rules.naming]], [[rules.tagging]], "
|
|
2473
|
+
"[[rules.security]], or [[rules.architecture]] sections."
|
|
2474
|
+
)
|
|
2475
|
+
return True
|
|
2476
|
+
|
|
2477
|
+
self.ui.print_info(
|
|
2478
|
+
f"📏 Compiled rules to Rego policies in {compiled_dir}"
|
|
2479
|
+
)
|
|
2480
|
+
|
|
2481
|
+
# Step 2: Run conftest with the compiled policies
|
|
2482
|
+
scanner = OPAScanner()
|
|
2483
|
+
reports_dir = kwargs.get("reports_dir", "Reports")
|
|
2484
|
+
result = scanner.scan(
|
|
2485
|
+
directory=directory,
|
|
2486
|
+
reports_dir=reports_dir,
|
|
2487
|
+
options={
|
|
2488
|
+
"mode": "conftest",
|
|
2489
|
+
"policy_dir": compiled_dir,
|
|
2490
|
+
},
|
|
2491
|
+
)
|
|
2492
|
+
|
|
2493
|
+
# Step 3: Report results
|
|
2494
|
+
exit_code = result.get("exit_code", 0)
|
|
2495
|
+
report_path = result.get("json_report", "")
|
|
2496
|
+
|
|
2497
|
+
if exit_code == 0:
|
|
2498
|
+
self.ui.print_success(
|
|
2499
|
+
"✅ All organizational rules passed!"
|
|
2500
|
+
)
|
|
2501
|
+
return True
|
|
2502
|
+
|
|
2503
|
+
# Parse conftest JSON output for structured display
|
|
2504
|
+
if report_path and os.path.exists(report_path):
|
|
2505
|
+
import json
|
|
2506
|
+
|
|
2507
|
+
with open(report_path, "r") as f:
|
|
2508
|
+
findings = json.load(f)
|
|
2509
|
+
|
|
2510
|
+
failures = []
|
|
2511
|
+
warnings = []
|
|
2512
|
+
for entry in findings:
|
|
2513
|
+
for failure in entry.get("failures", []):
|
|
2514
|
+
failures.append(failure.get("msg", ""))
|
|
2515
|
+
for warning in entry.get("warnings", []):
|
|
2516
|
+
warnings.append(warning.get("msg", ""))
|
|
2517
|
+
|
|
2518
|
+
if failures or warnings:
|
|
2519
|
+
table = Table(
|
|
2520
|
+
title="📏 Rule Violations",
|
|
2521
|
+
box=box.ROUNDED,
|
|
2522
|
+
show_lines=True,
|
|
2523
|
+
)
|
|
2524
|
+
table.add_column("Severity")
|
|
2525
|
+
table.add_column("Message")
|
|
2526
|
+
|
|
2527
|
+
for msg in failures:
|
|
2528
|
+
table.add_row("[red]ERROR[/red]", msg)
|
|
2529
|
+
for msg in warnings:
|
|
2530
|
+
table.add_row("[yellow]WARN[/yellow]", msg)
|
|
2531
|
+
|
|
2532
|
+
self.console.print(table)
|
|
2533
|
+
self.console.print(
|
|
2534
|
+
f"\n[bold]Summary:[/bold] "
|
|
2535
|
+
f"[red]{len(failures)} failure(s)[/red], "
|
|
2536
|
+
f"[yellow]{len(warnings)} warning(s)[/yellow]"
|
|
2537
|
+
)
|
|
2538
|
+
|
|
2539
|
+
if exit_code != 0:
|
|
2540
|
+
self.ui.print_error(
|
|
2541
|
+
"❌ Rule evaluation failed — policy violations found."
|
|
2542
|
+
)
|
|
2543
|
+
return False
|
|
2544
|
+
|
|
2545
|
+
return True
|
|
2546
|
+
|
|
2547
|
+
except Exception as e:
|
|
2548
|
+
self.logger.error(f"Rules evaluation failed: {e}")
|
|
2549
|
+
self.ui.print_error(f"Failed to run rules evaluation: {str(e)}")
|
|
2550
|
+
return False
|
|
2551
|
+
|
|
2449
2552
|
def _run_stack_optimizer(self, directory: str, **kwargs) -> bool:
|
|
2450
2553
|
"""Run stack optimizer to deduplicate overlapping terragrunt filters."""
|
|
2451
2554
|
import sys
|
|
@@ -2539,7 +2642,7 @@ cli = CheckIaCCommand.as_click_command(
|
|
|
2539
2642
|
click.option(
|
|
2540
2643
|
"-type",
|
|
2541
2644
|
"--check_type",
|
|
2542
|
-
help="tfplan: analyze plans | deps: view dependencies | blast-radius: impact analysis | cost-analysis: estimate costs | drift: detect infrastructure drift | stack-optimizer: deduplicate overlapping stacks",
|
|
2645
|
+
help="tfplan: analyze plans | deps: view dependencies | blast-radius: impact analysis | cost-analysis: estimate costs | drift: detect infrastructure drift | stack-optimizer: deduplicate overlapping stacks | rules: evaluate organizational rules",
|
|
2543
2646
|
type=click.Choice(
|
|
2544
2647
|
[
|
|
2545
2648
|
"tfplan",
|
|
@@ -2548,6 +2651,7 @@ cli = CheckIaCCommand.as_click_command(
|
|
|
2548
2651
|
"cost-analysis",
|
|
2549
2652
|
"drift",
|
|
2550
2653
|
"stack-optimizer",
|
|
2654
|
+
"rules",
|
|
2551
2655
|
],
|
|
2552
2656
|
case_sensitive=True,
|
|
2553
2657
|
),
|