thothctl 0.29.0__tar.gz → 0.30.1__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.29.0 → thothctl-0.30.1}/CHANGELOG.md +37 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/PKG-INFO +1 -1
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/mcp/mcp.md +33 -29
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/software_architecture.md +1 -1
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/mcp.md +36 -15
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/whats_new.md +35 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/commands/iac.py +25 -2
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/generation_history.py +54 -25
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/intent_service.py +333 -280
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/models.py +5 -1
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/plan_validator.py +32 -3
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/scaffold_loader.py +5 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/validator.py +17 -11
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/environment/install_tools.py +29 -3
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/version.py +1 -1
- {thothctl-0.29.0 → thothctl-0.30.1}/.devcontainer/Dockerfile +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/.devcontainer/README.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/.devcontainer/devcontainer.json +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/.github/workflows/docs.yml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/.github/workflows/python-publish.yml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/.gitignore +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/.pre-commit-config.yaml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/.pydocstyle +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/.readthedocs.yaml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/CONTRIBUTING.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/Dockerfile +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/LICENSE +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/README.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/catalog/catalog-info.yaml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/dashboard/README.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/ai-review/README.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/ai-review/agent_specifications.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/ai-review/agentcore.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/blast-radius.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/check_environment.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/check_iac.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/check_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/check_project_iac.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/check_space.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/cost-analysis-quick-reference.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/cost-analysis.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/customizing_rules.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/deps-advanced.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/deps.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/drift-detection.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/plan.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/dashboard/dashboard_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/customizing_docs.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/document_iac.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/document_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/iac.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/mermaid_examples.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/mermaid_quickref.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/use_cases.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/generate/generate_components.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/generate/generate_iac.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/generate/generate_stacks.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/init/init.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/init/init_space.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/CHANGELOG.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/frameworks/terraform.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/frameworks/terragrunt.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/iac.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/inventory_iac.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/inventory_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/list/list_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/list/list_projects.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/list/list_spaces.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/iac.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/project_cleanup.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/project_convert.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/project_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/project_upgrade.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/use_cases.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/remove/remove_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/remove/remove_project.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/remove/remove_space.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/scan/iac.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/scan/scan_iac.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/scan/scan_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/scan/use_cases.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/space/space_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/upgrade/upgrade_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/workflow/workflow_devsecops.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/workflow/workflow_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/concepts.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/cross_platform_support.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/framework_architecture.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/infrastructure_composition.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/policy_as_code.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/roadmap_fdi.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/space_configuration.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/specs/phase1.10_plan_validation.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/specs/phase1.9_composition_generation.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/specs/phase1_intent_to_iac.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/specs/phase2.5.1_autonomy_model.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/README.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/ai_dlc.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/check_command.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/devsecops_quickstart.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/devsecops_sdlc.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/inventory_command.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/platform_engineering_templates.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/space_management.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/tasks/create_template.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/tasks/workflow_implementation_plan.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/how_it_works.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/commnad_init.png +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/framework/thothforge-framework.svg +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/framework/thothfr.png +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/icon-light.png +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/icon.png +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/init_project.gif +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/stable/scan_report_example.png +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/includes/abbreviations.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/index.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/installation/devcontainer_setup.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/installation/linux_installation.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/installation/windows_installation.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/javascripts/tablesort.js +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/navigation.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/quick_start.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/requirements.txt +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/stylesheets/extra-enhanced.css +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/stylesheets/extra.css +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/telemetry.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/template_engine/cli_commands_audit.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/template_engine/for_developers.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/template_engine/for_platform_engineers.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/template_engine/github_templates.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/template_engine/template_engine.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/toolkit_overview.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/troubleshooting/linux_troubleshooting.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/troubleshooting/macos_troubleshooting.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/troubleshooting/troubleshooting.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/docs/troubleshooting/windows_troubleshooting.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/mkdocs.yaml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/pyproject.toml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/scripts/check_output_consistency.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/scripts/run_mcp_server.sh +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/application/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/autocomplete.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/analyze.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/apply_fix.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/configure.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/configure_decisions.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/decide.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/history.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/improve.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/orchestrate.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/override.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/report.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/serve.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/config.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/environment.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/iac.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/project/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/project/iac.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/project.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/space.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/dashboard/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/dashboard/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/dashboard/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/dashboard/commands/launch.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/document/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/document/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/document/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/document/commands/iac.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/commands/component.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/commands/stacks.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/commands/env.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/commands/project.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/commands/space.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/commands/template.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/inventory/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/inventory/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/inventory/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/inventory/commands/check.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/inventory/commands/iac.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/commands/projects.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/commands/spaces.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/commands/templates.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/commands/register.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/commands/server.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/commands/status.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/commands/stop.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/commands/bootstrap.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/commands/cleanup.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/commands/convert.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/commands/upgrade.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/quickstart/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/quickstart/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/remove/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/remove/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/remove/project.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/remove/space.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/scan/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/scan/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/scan/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/scan/commands/iac.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/activate.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/deactivate.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/export_space.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/import_space.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/show.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/update.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/upgrade/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/workflow/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/workflow/cli.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/workflow/commands/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/workflow/commands/devsecops.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/workflow/commands/run.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/.thothcf.setup.toml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/.thothcf_home.toml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/.thothcf_module.toml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/.thothcf_project.toml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/.thothcf_template_parameters.toml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/common.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/terragrunt/.thothcf_project.toml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/constants.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/default_values.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/defaults.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/models.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/settings.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/template_config.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/template_configs.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/templates.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/validation.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/cli_ui.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/commands.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/config.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/azure_devops/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/azure_devops/get_azure_devops.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/azure_devops/pull_request_comments.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/github/get_github.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/github/pull_request_comments.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/integrate_messages_services/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/integrate_messages_services/microsoft_teams.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/integrate_messages_services/sent_message_teams.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/pattern_names.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/pr_comments/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/pr_comments/pr_comment_publisher.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/logger.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/telemetry.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/version_tools.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/domain/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/domain/interfaces/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/domain/models/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/mcp/README.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/mcp/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/mcp/server.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/agentcore/agentcore.json +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/ai_agent.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/analyzers/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/analyzers/code_reviewer.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/analyzers/context_builder.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/analyzers/report_analyzer.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/analyzers/risk_assessor.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/bedrock_agent_api.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/config/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/config/ai_settings.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/config/autonomy.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/config/decision_rules.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/decision_engine.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/main.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/memory.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/orchestrator.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/pr_decision_publisher.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/azure_provider.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/bedrock_agent_provider.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/bedrock_provider.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/kiro_provider.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/ollama_provider.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/openai_provider.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/safety/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/safety/safety_guard.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/strands_agent.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/tracing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/cost_tracker.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/fix_patterns.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/fix_prompts.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/formatters.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/prompts.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/environment/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/environment/check_environment.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/org_policy_loader.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/blast_radius_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cfn_blast_radius_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/check_origin_version.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/check_project_structure.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/cost_analyzer.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/models/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/models/cloudformation_mapper.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/models/cost_models.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/aws_pricing_client.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/base_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/apigateway_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/bedrock_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/cloudwatch_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/dynamodb_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/ebs_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/ec2_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/ecr_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/ecs_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/eip_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/eks_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/elb_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/free_resources_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/kms_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/lambda_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/msk_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/rds_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/s3_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/secrets_manager_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/vpc_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/unified_cost_report.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/cfn_drift_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/drift_ai.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/drift_history.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/drift_policy.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/drift_report.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/drift_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/models.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/risk_assessment.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/validate_project_structure.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/rule_merger.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/rules_compiler.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/stack_optimizer/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/dashboard/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/dashboard/dashboard_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/dashboard/data_loader.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/architecture_renderer.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/create_documentation.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/files_content.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/files_scan.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/iac_documentation.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/iac_grunt_graph.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/iac_grunt_info.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/topology_generator.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/config_generator.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/remote_config_generation.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/stack_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/templates/terragrunt.hcl.j2 +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/terragrunt.hcl +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/config.yaml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/create_code.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/create_component.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/create_component_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/create_stacks.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/create_template.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/files_content.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/github_template_loader.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/project_templates.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/code_generator.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/composition_models.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/context_builder.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/intent_decomposer.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/parameter_resolver.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/plan_runner.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/project_assembler.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/prompts.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/state_resolver.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/environment/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/environment/prerequisite_checker.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/environment/tool_packs.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/project/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/project/project.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/example_space.toml +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/export_import.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/inheritance.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/space.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/terraform_module_cache.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/cdk_parsers.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/cdk_sbom_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/changelog_parser.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/defectdojo_publisher.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/dtrack_publisher.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/inventory_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/models.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/module_compatibility_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/report_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/schema_compatibility_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/secobserve_publisher.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/terragrunt_parser.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/update_versions.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/version_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/mcp/README.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/mcp/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/mcp/simple_http_server.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/mcp/stdio_server.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/bootstrap/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/bootstrap/bootstrap_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/cleanup/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/cleanup/clean_project.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/cleanup/clean_space.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/conversion_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/get_project_data.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/post_init.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/project_converter.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/project_defaults.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/set_project_parameters.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/create_terramate/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/create_terramate/create_terramate_stacks.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/create_terramate/detect_changes_stacks.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/create_terramate/manage_terramate_stacks.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/upgrade/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/upgrade/upgrade_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/compliance_review.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/import_reports.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/models.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/report_parser.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/sarif_output.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scan_history.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scan_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/checkov.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/kics.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/opa.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/scan_reports.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/scanners.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/terraform_compliance.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/tfsec.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/trivy.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/custom_workflow_engine.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/models.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/base.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/build.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/deploy.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/develop.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/monitor.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/plan.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/secure.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/test.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/workflow_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/templates/ai_reports/pr_comment.md +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/templates/reports/inventory_report.html +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/templates/reports/inventory_report.js +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/templates/unified_report_styles.css +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/banner.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/create_compliance_html_reports.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/create_html_reports.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/delete_directory.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/fix_report_styling.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/render_scan_report.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/report_html_utils.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/dashboard.html +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/index_report.html +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/individual_report.html +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/simple_report.html +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/unified_report_styles.css +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/unified_scan_report.html +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/unified_simple_report.html +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/xunit_report.html +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/crypto.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/git_changes.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/manage_backend_resources/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/manage_backend_resources/manage_backend_resources.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/modules_ops/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/modules_ops/terraform_module_details.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/modules_ops/terraform_modules_fetcher.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/platform_utils.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/analyze_terraform_plan.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/graph_manager.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/graph_terragrunt_dependencies.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/process_terraform_file.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/risk_analyzing_terraform_plan.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/sync_workspaces/__init__.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/sync_workspaces/sync_terraform_workspaces.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/sync_workspaces/sync_terragrunt_workspaces.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/template_loader.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/thoth_colors.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/wellcome_banner.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/conftest.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_agentcore_entrypoint.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_apply_fix.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_autonomy.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_decision_engine.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_fix_patterns.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_memory.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_orchestrator.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_pr_decision.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_safety_guard.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_aws_pricing_client.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_azure_devops_pr_comments.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_bedrock_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cdk_inventory.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cdk_language_selection.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cfn_blast_radius.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cfn_drift_detection.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_context_steering.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cost_analyzer.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cost_models.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cost_policy_enforcement.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cost_pr_comments.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_dashboard_loading_fix.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_dashboard_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_defectdojo_publisher.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_drift.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_drift_detection.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_dtrack_publisher.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ec2_pricing.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_generate_iac_codegen.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_generate_iac_context.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_generate_iac_prompts.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_generate_iac_service.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_generate_iac_validator.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_github_pr_comments.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_iac_cost_integration.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_init_ai_tools.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_init_template_params.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_intent_quick_wins.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_intent_rules_integration.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_inventory_pr_comments.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_kics_scanner.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_kiro_provider.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_mermaid_edge_labels.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_new_cost_providers.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_opa_data_files.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_parallel_scan.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_plan_validation.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_platform_utils.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_pr_comment_publisher.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_provider_source_url_fix.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_provider_versions.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_rules_compiler.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_scan_cfn_support.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_scan_command.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_scan_pr_comments.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_space_command.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_space_management.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_stack_optimizer.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_template_url_fix.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_terragrunt_parser.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_topology_generator.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_workflow_integration.py +0 -0
- {thothctl-0.29.0 → thothctl-0.30.1}/tox.ini +0 -0
|
@@ -5,6 +5,43 @@ All notable changes to ThothCTL are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.30.0] - 2026-09-22
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Intent-to-IaC plan validation** — per-stack plan validation is now skipped for
|
|
13
|
+
terragrunt projects when no `stack_path` is given (previously it wrote stray `.tf`
|
|
14
|
+
files into the project root and ran `terragrunt plan` against `root.hcl`).
|
|
15
|
+
Single-mode validation now routes `full-project` mode to `validate_full_project`.
|
|
16
|
+
- **HCL-aware block stripping** — `terraform {}` / `provider {}` removal now uses a
|
|
17
|
+
string/comment-aware brace scanner that correctly handles arbitrarily nested
|
|
18
|
+
blocks (e.g. `backend`, `assume_role`, `default_tags`) and braces inside strings
|
|
19
|
+
or comments, replacing the previous single-level regex.
|
|
20
|
+
- Added a missing module logger in `generate iac` CLI (undefined `logger` in the
|
|
21
|
+
history-save error handler).
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- **`--plan-filter` wiring** — the flag (plus `THOTH_PLAN_FILTER` env and
|
|
26
|
+
`[generation.plan].stack_filter`) is now honored end-to-end; `validate_full_project`
|
|
27
|
+
routes to `validate_filtered` when set.
|
|
28
|
+
- **Real dependency-graph diagrams** — composition-mode architecture diagrams now
|
|
29
|
+
render actual `depends_on` edges and layer subgraphs (new `_build_stack_diagram`)
|
|
30
|
+
instead of inferred/hardcoded edges.
|
|
31
|
+
- **Raw-response debugging** — the raw AI response is persisted to generation history
|
|
32
|
+
on parse failure (new `raw_response` column + idempotent migration) and surfaced in
|
|
33
|
+
the CLI.
|
|
34
|
+
- Single-mode `--mode project` now resolves `#{...}#` placeholders (previously only
|
|
35
|
+
the composition path did).
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
|
|
39
|
+
- Unified self-correction into a shared loop (with stagnation detection) used by both
|
|
40
|
+
single and composition paths; deduplicated stack file processing.
|
|
41
|
+
- `generation_tokens` is now estimated consistently across single and composition modes.
|
|
42
|
+
- Removed dead scaffold helpers; added a public `ScaffoldLoader.scaffold_dir` property;
|
|
43
|
+
warn when scaffold examples are unavailable (missing `gh` CLI).
|
|
44
|
+
|
|
8
45
|
## [0.29.0] - 2026-09-15
|
|
9
46
|
|
|
10
47
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: thothctl
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.30.1
|
|
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
|
|
@@ -82,7 +82,7 @@ thothctl mcp register
|
|
|
82
82
|
This command will internally use the correct MCP registration syntax:
|
|
83
83
|
|
|
84
84
|
```bash
|
|
85
|
-
|
|
85
|
+
kiro-cli mcp add --name thothctl --command "thothctl" --args "mcp" --args "server" --args "--stdio"
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
Register the MCP server running on a custom port:
|
|
@@ -209,7 +209,7 @@ This tool generates governed Infrastructure as Code from natural language. It su
|
|
|
209
209
|
|
|
210
210
|
**Example via AI Assistant**:
|
|
211
211
|
```
|
|
212
|
-
|
|
212
|
+
kiro-cli chat "Generate a VPC with 3 private subnets and NAT gateway for production in us-east-1 using terraform-terragrunt composition full mode"
|
|
213
213
|
```
|
|
214
214
|
|
|
215
215
|
## Integration with AI Assistants
|
|
@@ -217,7 +217,7 @@ q chat "Generate a VPC with 3 private subnets and NAT gateway for production in
|
|
|
217
217
|
After starting the MCP server and registering it with your AI assistant, you can interact with ThothCTL using natural language:
|
|
218
218
|
|
|
219
219
|
```bash
|
|
220
|
-
|
|
220
|
+
kiro-cli chat "List all ThothCTL projects"
|
|
221
221
|
```
|
|
222
222
|
|
|
223
223
|
Example interactions:
|
|
@@ -264,57 +264,61 @@ This typically means one of the following:
|
|
|
264
264
|
3. **Wrong command in registration**: Verify your registration command.
|
|
265
265
|
```bash
|
|
266
266
|
# List your registered MCP servers
|
|
267
|
-
|
|
267
|
+
kiro-cli mcp list
|
|
268
268
|
|
|
269
269
|
# Remove incorrect registration if needed
|
|
270
|
-
|
|
270
|
+
kiro-cli mcp remove --name thothctl
|
|
271
271
|
|
|
272
272
|
# Register correctly
|
|
273
|
-
|
|
273
|
+
kiro-cli mcp add --name thothctl --command "thothctl" --args "mcp" --args "server" --args "--stdio"
|
|
274
274
|
```
|
|
275
275
|
|
|
276
276
|
4. **MCP configuration file is missing or corrupted**: Your AI assistant stores MCP server configurations in JSON files.
|
|
277
277
|
|
|
278
|
-
**Configuration file locations**:
|
|
279
|
-
- Global Configuration: `~/.
|
|
280
|
-
- Workspace Configuration: `.
|
|
278
|
+
**Configuration file locations (Kiro CLI)**:
|
|
279
|
+
- Global Configuration: `~/.kiro/settings/mcp.json` - Applies to all workspaces
|
|
280
|
+
- Workspace Configuration: `.kiro/settings/mcp.json` - Specific to the current workspace (takes precedence over global)
|
|
281
|
+
|
|
282
|
+
For **Claude Desktop**, MCP servers are configured in:
|
|
283
|
+
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
284
|
+
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
281
285
|
|
|
282
286
|
```bash
|
|
283
|
-
# Check if the configuration files exist
|
|
284
|
-
ls -la ~/.
|
|
285
|
-
ls -la .
|
|
287
|
+
# Check if the configuration files exist (Kiro CLI)
|
|
288
|
+
ls -la ~/.kiro/settings/mcp.json # Global config (Linux/macOS)
|
|
289
|
+
ls -la .kiro/settings/mcp.json # Workspace config (Linux/macOS)
|
|
286
290
|
|
|
287
291
|
# View the current configuration
|
|
288
|
-
cat ~/.
|
|
289
|
-
cat .
|
|
292
|
+
cat ~/.kiro/settings/mcp.json # Global config (Linux/macOS)
|
|
293
|
+
cat .kiro/settings/mcp.json # Workspace config (Linux/macOS)
|
|
290
294
|
|
|
291
|
-
# If missing or corrupted, recreate it
|
|
292
|
-
|
|
293
|
-
|
|
295
|
+
# If missing or corrupted, recreate it (stdio is the default)
|
|
296
|
+
thothctl mcp register
|
|
297
|
+
# ...or register manually with the Kiro CLI (note the required --stdio flag)
|
|
298
|
+
kiro-cli mcp remove --name thothctl
|
|
299
|
+
kiro-cli mcp add --name thothctl --command "thothctl" --args "mcp" --args "server" --args "--stdio"
|
|
294
300
|
```
|
|
295
301
|
|
|
296
|
-
The MCP configuration file (`mcp.json`) should have the following structure
|
|
302
|
+
The MCP configuration file (`mcp.json`) should have the following structure.
|
|
303
|
+
The `--stdio` flag is required — Kiro CLI and Claude talk to the server over
|
|
304
|
+
stdin/stdout, so stdio mode must be enabled explicitly. Without it,
|
|
305
|
+
`thothctl mcp server` starts in HTTP mode and the assistant cannot connect:
|
|
297
306
|
```json
|
|
298
307
|
{
|
|
299
308
|
"mcpServers": {
|
|
300
309
|
"thothctl": {
|
|
301
310
|
"command": "thothctl",
|
|
302
|
-
"args": ["mcp", "server"]
|
|
303
|
-
"env": {},
|
|
304
|
-
"timeout": 60000
|
|
311
|
+
"args": ["mcp", "server", "--stdio"]
|
|
305
312
|
}
|
|
306
313
|
}
|
|
307
314
|
}
|
|
308
315
|
```
|
|
309
316
|
|
|
310
|
-
You can manually create or edit this file if needed, but it's recommended to use
|
|
317
|
+
You can manually create or edit this file if needed, but it's recommended to use `thothctl mcp register` (or `kiro-cli mcp add`) to ensure proper formatting.
|
|
311
318
|
|
|
312
|
-
5. **Detailed debugging**: Run with increased logging
|
|
319
|
+
5. **Detailed debugging**: Run with increased logging.
|
|
313
320
|
```bash
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
# Then check the logs
|
|
317
|
-
cat $TMPDIR/qchat/latest.log
|
|
321
|
+
kiro-cli chat --verbose "List ThothCTL projects"
|
|
318
322
|
```
|
|
319
323
|
|
|
320
324
|
#### Port Already in Use
|
|
@@ -334,8 +338,8 @@ thothctl mcp server -p 8081
|
|
|
334
338
|
And update your registration accordingly:
|
|
335
339
|
|
|
336
340
|
```bash
|
|
337
|
-
|
|
338
|
-
|
|
341
|
+
kiro-cli mcp remove --name thothctl
|
|
342
|
+
kiro-cli mcp add --name thothctl --command "thothctl" --args "mcp" --args "server" --args "-p" --args "8081"
|
|
339
343
|
```
|
|
340
344
|
|
|
341
345
|
## Architecture
|
|
@@ -36,16 +36,25 @@ This will start the MCP server on port 8080 (default).
|
|
|
36
36
|
|
|
37
37
|
### Registering with Kiro CLI
|
|
38
38
|
|
|
39
|
-
To use ThothCTL with Kiro CLI or Claude, you need to register the MCP server
|
|
39
|
+
To use ThothCTL with Kiro CLI or Claude, you need to register the MCP server.
|
|
40
|
+
The easiest way is the built-in command, which writes a stdio-mode config to
|
|
41
|
+
`~/.kiro/settings/mcp.json` (or `.kiro/settings/mcp.json` with `--scope workspace`):
|
|
40
42
|
|
|
41
43
|
```bash
|
|
42
|
-
|
|
44
|
+
thothctl mcp register
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Alternatively, register it directly with the Kiro CLI. Note the `--stdio` flag —
|
|
48
|
+
it is required so the server speaks MCP over stdin/stdout instead of HTTP:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
kiro-cli mcp add --name thothctl --command "thothctl" --args "mcp" --args "server" --args "--stdio"
|
|
43
52
|
```
|
|
44
53
|
|
|
45
54
|
Once registered, you can interact with ThothCTL through Kiro CLI using natural language:
|
|
46
55
|
|
|
47
56
|
```bash
|
|
48
|
-
kiro chat "List all ThothCTL projects using the MCP integration"
|
|
57
|
+
kiro-cli chat "List all ThothCTL projects using the MCP integration"
|
|
49
58
|
```
|
|
50
59
|
|
|
51
60
|
### Checking Server Status
|
|
@@ -88,29 +97,41 @@ This typically means one of the following:
|
|
|
88
97
|
```
|
|
89
98
|
|
|
90
99
|
3. **MCP configuration file is missing or corrupted**: Your AI assistant stores MCP server configurations in JSON files.
|
|
91
|
-
|
|
92
|
-
**Configuration file locations**:
|
|
93
|
-
- Global Configuration: `~/.
|
|
94
|
-
- Workspace Configuration: `.
|
|
95
|
-
|
|
96
|
-
|
|
100
|
+
|
|
101
|
+
**Configuration file locations (Kiro CLI)**:
|
|
102
|
+
- Global Configuration: `~/.kiro/settings/mcp.json` - Applies to all workspaces
|
|
103
|
+
- Workspace Configuration: `.kiro/settings/mcp.json` - Specific to the current workspace (takes precedence over global)
|
|
104
|
+
|
|
105
|
+
For **Claude Desktop**, MCP servers are configured in:
|
|
106
|
+
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
107
|
+
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
108
|
+
|
|
109
|
+
The MCP configuration file should have this structure. Note the `--stdio`
|
|
110
|
+
flag — Kiro CLI and Claude communicate with the server over stdin/stdout,
|
|
111
|
+
so stdio mode must be enabled explicitly (without it, `thothctl mcp server`
|
|
112
|
+
starts in HTTP mode and the assistant cannot connect):
|
|
97
113
|
```json
|
|
98
114
|
{
|
|
99
115
|
"mcpServers": {
|
|
100
116
|
"thothctl": {
|
|
101
117
|
"command": "thothctl",
|
|
102
|
-
"args": ["mcp", "server"]
|
|
103
|
-
"env": {},
|
|
104
|
-
"timeout": 60000
|
|
118
|
+
"args": ["mcp", "server", "--stdio"]
|
|
105
119
|
}
|
|
106
120
|
}
|
|
107
121
|
}
|
|
108
122
|
```
|
|
109
123
|
|
|
110
|
-
To recreate the configuration
|
|
124
|
+
To recreate the configuration, the simplest way is the built-in registration
|
|
125
|
+
command (stdio is the default and writes to `~/.kiro/settings/mcp.json`):
|
|
126
|
+
```bash
|
|
127
|
+
thothctl mcp register # global scope, stdio mode
|
|
128
|
+
thothctl mcp register --scope workspace # writes .kiro/settings/mcp.json
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Or register it manually via the Kiro CLI:
|
|
111
132
|
```bash
|
|
112
|
-
|
|
113
|
-
|
|
133
|
+
kiro-cli mcp remove --name thothctl
|
|
134
|
+
kiro-cli mcp add --name thothctl --command "thothctl" --args "mcp" --args "server" --args "--stdio"
|
|
114
135
|
```
|
|
115
136
|
|
|
116
137
|
For more detailed troubleshooting, see the [MCP Command Documentation](./framework/commands/mcp/mcp.md#troubleshooting).
|
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# What's New
|
|
2
2
|
|
|
3
|
+
## v0.30.0 — Intent-to-IaC Hardening (September 2026)
|
|
4
|
+
|
|
5
|
+
### Highlights
|
|
6
|
+
|
|
7
|
+
!!! success "Accurate dependency-graph diagrams for multi-stack generation"
|
|
8
|
+
Composition-mode diagrams now render the real stack dependency graph
|
|
9
|
+
(from each stack's `depends_on`) grouped by layer — no more inferred edges.
|
|
10
|
+
|
|
11
|
+
!!! success "Targeted plan validation with --plan-filter"
|
|
12
|
+
```bash
|
|
13
|
+
thothctl generate iac -i "add an RDS stack" \
|
|
14
|
+
--composition incremental \
|
|
15
|
+
--plan-validation full-project \
|
|
16
|
+
--plan-filter "stacks/platform/data/*"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
- **Safer plan validation** — per-stack plan validation no longer runs against the
|
|
20
|
+
terragrunt project root (`root.hcl`); single-stack + `full-project` mode is routed
|
|
21
|
+
correctly
|
|
22
|
+
- **`--plan-filter` wired end-to-end** — also settable via `THOTH_PLAN_FILTER` or
|
|
23
|
+
`[generation.plan].stack_filter`
|
|
24
|
+
- **HCL-aware block stripping** — `terraform {}` / `provider {}` blocks are removed
|
|
25
|
+
with a string/comment-aware scanner that handles nested blocks (`backend`,
|
|
26
|
+
`assume_role`, `default_tags`) reliably
|
|
27
|
+
- **Single-mode placeholder resolution** — `--mode project` now resolves `#{...}#`
|
|
28
|
+
placeholders for single-stack generation too
|
|
29
|
+
- **Raw-response debugging** — when the AI returns unparseable output, the raw
|
|
30
|
+
response is saved to generation history for troubleshooting
|
|
31
|
+
- **Unified self-correction** — single and composition paths now share the same
|
|
32
|
+
validate → fix → re-validate loop with stagnation detection
|
|
33
|
+
- Consistent `generation_tokens` metrics across modes; clearer warning when scaffold
|
|
34
|
+
examples are unavailable (missing `gh` CLI)
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
3
38
|
## v0.28.0 — Security Platform Integrations (August 2026)
|
|
4
39
|
|
|
5
40
|
### Highlights
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""CLI command: thothctl generate iac — Generate IaC from natural language intent."""
|
|
2
2
|
|
|
3
|
+
import logging
|
|
3
4
|
from typing import Optional
|
|
4
5
|
|
|
5
6
|
import click
|
|
@@ -7,6 +8,8 @@ import click
|
|
|
7
8
|
from ....core.cli_ui import CliUI
|
|
8
9
|
from ....core.commands import ClickCommand
|
|
9
10
|
|
|
11
|
+
logger = logging.getLogger(__name__)
|
|
12
|
+
|
|
10
13
|
|
|
11
14
|
class GenerateIaCCommand(ClickCommand):
|
|
12
15
|
"""Generate governed Infrastructure as Code from natural language intent."""
|
|
@@ -65,6 +68,7 @@ class GenerateIaCCommand(ClickCommand):
|
|
|
65
68
|
plan_iam_role=plan_iam_role,
|
|
66
69
|
plan_profile=plan_profile,
|
|
67
70
|
project_type=project_type,
|
|
71
|
+
plan_filter=plan_filter,
|
|
68
72
|
)
|
|
69
73
|
|
|
70
74
|
# Show intent
|
|
@@ -149,11 +153,21 @@ class GenerateIaCCommand(ClickCommand):
|
|
|
149
153
|
# Display results
|
|
150
154
|
if not result.success:
|
|
151
155
|
self.ui.print_error(f"Generation failed: {result.error}")
|
|
156
|
+
if result.raw_response:
|
|
157
|
+
self.ui.print_info(
|
|
158
|
+
"The raw AI response was saved to generation history for "
|
|
159
|
+
"debugging (view via the dashboard Generation tab or "
|
|
160
|
+
"generation_history.db)."
|
|
161
|
+
)
|
|
152
162
|
# Still record failed runs to history
|
|
153
163
|
try:
|
|
154
164
|
import time as _time
|
|
155
165
|
|
|
156
|
-
_elapsed =
|
|
166
|
+
_elapsed = (
|
|
167
|
+
_time.time() - self._start_time
|
|
168
|
+
if hasattr(self, "_start_time")
|
|
169
|
+
else 0
|
|
170
|
+
)
|
|
157
171
|
from ....services.generate.intent.generation_history import (
|
|
158
172
|
save_generation_run,
|
|
159
173
|
)
|
|
@@ -308,6 +322,7 @@ class GenerateIaCCommand(ClickCommand):
|
|
|
308
322
|
plan_iam_role: Optional[str],
|
|
309
323
|
plan_profile: Optional[str],
|
|
310
324
|
project_type: str,
|
|
325
|
+
plan_filter: Optional[str] = None,
|
|
311
326
|
) -> Optional[dict]:
|
|
312
327
|
"""Build plan validation config from CLI flags + .thothcf.toml.
|
|
313
328
|
|
|
@@ -346,6 +361,12 @@ class GenerateIaCCommand(ClickCommand):
|
|
|
346
361
|
elif os.environ.get("THOTH_PLAN_AWS_PROFILE"):
|
|
347
362
|
config["aws_profile"] = os.environ["THOTH_PLAN_AWS_PROFILE"]
|
|
348
363
|
|
|
364
|
+
# Stack filter for targeted plan validation
|
|
365
|
+
if plan_filter:
|
|
366
|
+
config["stack_filter"] = plan_filter
|
|
367
|
+
elif os.environ.get("THOTH_PLAN_FILTER"):
|
|
368
|
+
config["stack_filter"] = os.environ["THOTH_PLAN_FILTER"]
|
|
369
|
+
|
|
349
370
|
# Always pass project type for routing
|
|
350
371
|
config["project_type"] = project_type
|
|
351
372
|
|
|
@@ -492,6 +513,8 @@ cli = GenerateIaCCommand.as_click_command(
|
|
|
492
513
|
click.option(
|
|
493
514
|
"--plan-filter",
|
|
494
515
|
default=None,
|
|
495
|
-
help="Terragrunt filter pattern for targeted plan validation"
|
|
516
|
+
help="Terragrunt filter pattern for targeted plan validation "
|
|
517
|
+
"(scopes 'full-project' plan validation to matching stacks). "
|
|
518
|
+
"Also settable via THOTH_PLAN_FILTER or [generation.plan].stack_filter.",
|
|
496
519
|
),
|
|
497
520
|
)
|
{thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/generation_history.py
RENAMED
|
@@ -6,8 +6,6 @@ and generated file listings. Powers the dashboard Generation tab.
|
|
|
6
6
|
Database: ~/.thothcf/generation_history.db
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
import json
|
|
10
|
-
import os
|
|
11
9
|
import sqlite3
|
|
12
10
|
import uuid
|
|
13
11
|
from datetime import datetime
|
|
@@ -37,7 +35,8 @@ CREATE TABLE IF NOT EXISTS generation_runs (
|
|
|
37
35
|
violations_initial INTEGER DEFAULT 0,
|
|
38
36
|
violations_final INTEGER DEFAULT 0,
|
|
39
37
|
output_dir TEXT DEFAULT '',
|
|
40
|
-
plan_validation TEXT DEFAULT 'disabled'
|
|
38
|
+
plan_validation TEXT DEFAULT 'disabled',
|
|
39
|
+
raw_response TEXT DEFAULT ''
|
|
41
40
|
);
|
|
42
41
|
|
|
43
42
|
CREATE TABLE IF NOT EXISTS generation_files (
|
|
@@ -82,9 +81,26 @@ def _get_conn() -> sqlite3.Connection:
|
|
|
82
81
|
conn = sqlite3.connect(str(DB_PATH))
|
|
83
82
|
conn.row_factory = sqlite3.Row
|
|
84
83
|
conn.executescript(_SCHEMA)
|
|
84
|
+
_migrate(conn)
|
|
85
85
|
return conn
|
|
86
86
|
|
|
87
87
|
|
|
88
|
+
def _migrate(conn: sqlite3.Connection) -> None:
|
|
89
|
+
"""Apply lightweight, idempotent migrations for pre-existing databases.
|
|
90
|
+
|
|
91
|
+
CREATE TABLE IF NOT EXISTS does not add columns to an already-existing
|
|
92
|
+
table, so newly introduced columns are added here via ALTER TABLE.
|
|
93
|
+
"""
|
|
94
|
+
existing = {
|
|
95
|
+
row[1] for row in conn.execute("PRAGMA table_info(generation_runs)").fetchall()
|
|
96
|
+
}
|
|
97
|
+
if "raw_response" not in existing:
|
|
98
|
+
conn.execute(
|
|
99
|
+
"ALTER TABLE generation_runs ADD COLUMN raw_response TEXT DEFAULT ''"
|
|
100
|
+
)
|
|
101
|
+
conn.commit()
|
|
102
|
+
|
|
103
|
+
|
|
88
104
|
def save_generation_run(
|
|
89
105
|
intent: str,
|
|
90
106
|
result: Any,
|
|
@@ -126,8 +142,9 @@ def save_generation_run(
|
|
|
126
142
|
(id, timestamp, intent, project_type, composition, output_mode,
|
|
127
143
|
space, provider, model, success, error, files_count, iterations,
|
|
128
144
|
context_tokens, generation_tokens, duration_seconds,
|
|
129
|
-
violations_initial, violations_final, output_dir, plan_validation
|
|
130
|
-
|
|
145
|
+
violations_initial, violations_final, output_dir, plan_validation,
|
|
146
|
+
raw_response)
|
|
147
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
|
|
131
148
|
(
|
|
132
149
|
run_id,
|
|
133
150
|
datetime.now().isoformat(),
|
|
@@ -149,6 +166,8 @@ def save_generation_run(
|
|
|
149
166
|
result.validation.total_violations if result.validation else 0,
|
|
150
167
|
output_dir or "",
|
|
151
168
|
plan_validation,
|
|
169
|
+
# Only persisted on failed parses; truncate defensively.
|
|
170
|
+
(getattr(result, "raw_response", None) or "")[:10000],
|
|
152
171
|
),
|
|
153
172
|
)
|
|
154
173
|
|
|
@@ -188,7 +207,7 @@ def save_generation_run(
|
|
|
188
207
|
conn.commit()
|
|
189
208
|
return run_id
|
|
190
209
|
|
|
191
|
-
except Exception
|
|
210
|
+
except Exception:
|
|
192
211
|
conn.rollback()
|
|
193
212
|
raise
|
|
194
213
|
finally:
|
|
@@ -335,33 +354,43 @@ def _compute_metrics(
|
|
|
335
354
|
}
|
|
336
355
|
|
|
337
356
|
# Add success condition to existing WHERE
|
|
338
|
-
success_where =
|
|
339
|
-
f"{where} AND success = 1" if where else "WHERE success = 1"
|
|
340
|
-
)
|
|
357
|
+
success_where = f"{where} AND success = 1" if where else "WHERE success = 1"
|
|
341
358
|
|
|
342
359
|
success = conn.execute(
|
|
343
360
|
f"SELECT COUNT(*) FROM generation_runs {success_where}", params
|
|
344
361
|
).fetchone()[0]
|
|
345
362
|
|
|
346
|
-
avg_duration =
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
363
|
+
avg_duration = (
|
|
364
|
+
conn.execute(
|
|
365
|
+
f"SELECT AVG(duration_seconds) FROM generation_runs {success_where}",
|
|
366
|
+
params,
|
|
367
|
+
).fetchone()[0]
|
|
368
|
+
or 0
|
|
369
|
+
)
|
|
350
370
|
|
|
351
|
-
avg_iterations =
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
371
|
+
avg_iterations = (
|
|
372
|
+
conn.execute(
|
|
373
|
+
f"SELECT AVG(iterations) FROM generation_runs {success_where}",
|
|
374
|
+
params,
|
|
375
|
+
).fetchone()[0]
|
|
376
|
+
or 0
|
|
377
|
+
)
|
|
355
378
|
|
|
356
|
-
total_tokens =
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
379
|
+
total_tokens = (
|
|
380
|
+
conn.execute(
|
|
381
|
+
f"SELECT SUM(context_tokens + generation_tokens) FROM generation_runs {where}",
|
|
382
|
+
params,
|
|
383
|
+
).fetchone()[0]
|
|
384
|
+
or 0
|
|
385
|
+
)
|
|
360
386
|
|
|
361
|
-
avg_files =
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
387
|
+
avg_files = (
|
|
388
|
+
conn.execute(
|
|
389
|
+
f"SELECT AVG(files_count) FROM generation_runs {success_where}",
|
|
390
|
+
params,
|
|
391
|
+
).fetchone()[0]
|
|
392
|
+
or 0
|
|
393
|
+
)
|
|
365
394
|
|
|
366
395
|
# Composition breakdown
|
|
367
396
|
compositions = conn.execute(
|