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.
Files changed (594) hide show
  1. {thothctl-0.29.0 → thothctl-0.30.1}/CHANGELOG.md +37 -0
  2. {thothctl-0.29.0 → thothctl-0.30.1}/PKG-INFO +1 -1
  3. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/mcp/mcp.md +33 -29
  4. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/software_architecture.md +1 -1
  5. {thothctl-0.29.0 → thothctl-0.30.1}/docs/mcp.md +36 -15
  6. {thothctl-0.29.0 → thothctl-0.30.1}/docs/whats_new.md +35 -0
  7. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/commands/iac.py +25 -2
  8. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/generation_history.py +54 -25
  9. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/intent_service.py +333 -280
  10. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/models.py +5 -1
  11. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/plan_validator.py +32 -3
  12. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/scaffold_loader.py +5 -0
  13. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/validator.py +17 -11
  14. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/environment/install_tools.py +29 -3
  15. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/version.py +1 -1
  16. {thothctl-0.29.0 → thothctl-0.30.1}/.devcontainer/Dockerfile +0 -0
  17. {thothctl-0.29.0 → thothctl-0.30.1}/.devcontainer/README.md +0 -0
  18. {thothctl-0.29.0 → thothctl-0.30.1}/.devcontainer/devcontainer.json +0 -0
  19. {thothctl-0.29.0 → thothctl-0.30.1}/.github/workflows/docs.yml +0 -0
  20. {thothctl-0.29.0 → thothctl-0.30.1}/.github/workflows/python-publish.yml +0 -0
  21. {thothctl-0.29.0 → thothctl-0.30.1}/.gitignore +0 -0
  22. {thothctl-0.29.0 → thothctl-0.30.1}/.pre-commit-config.yaml +0 -0
  23. {thothctl-0.29.0 → thothctl-0.30.1}/.pydocstyle +0 -0
  24. {thothctl-0.29.0 → thothctl-0.30.1}/.readthedocs.yaml +0 -0
  25. {thothctl-0.29.0 → thothctl-0.30.1}/CONTRIBUTING.md +0 -0
  26. {thothctl-0.29.0 → thothctl-0.30.1}/Dockerfile +0 -0
  27. {thothctl-0.29.0 → thothctl-0.30.1}/LICENSE +0 -0
  28. {thothctl-0.29.0 → thothctl-0.30.1}/README.md +0 -0
  29. {thothctl-0.29.0 → thothctl-0.30.1}/__init__.py +0 -0
  30. {thothctl-0.29.0 → thothctl-0.30.1}/docs/catalog/catalog-info.yaml +0 -0
  31. {thothctl-0.29.0 → thothctl-0.30.1}/docs/dashboard/README.md +0 -0
  32. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/ai-review/README.md +0 -0
  33. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/ai-review/agent_specifications.md +0 -0
  34. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/ai-review/agentcore.md +0 -0
  35. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/blast-radius.md +0 -0
  36. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/check_environment.md +0 -0
  37. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/check_iac.md +0 -0
  38. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/check_overview.md +0 -0
  39. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/check_project_iac.md +0 -0
  40. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/check_space.md +0 -0
  41. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/cost-analysis-quick-reference.md +0 -0
  42. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/cost-analysis.md +0 -0
  43. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/customizing_rules.md +0 -0
  44. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/deps-advanced.md +0 -0
  45. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/deps.md +0 -0
  46. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/drift-detection.md +0 -0
  47. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/check/plan.md +0 -0
  48. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/dashboard/dashboard_overview.md +0 -0
  49. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/customizing_docs.md +0 -0
  50. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/document_iac.md +0 -0
  51. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/document_overview.md +0 -0
  52. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/iac.md +0 -0
  53. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/mermaid_examples.md +0 -0
  54. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/mermaid_quickref.md +0 -0
  55. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/document/use_cases.md +0 -0
  56. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/generate/generate_components.md +0 -0
  57. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/generate/generate_iac.md +0 -0
  58. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/generate/generate_stacks.md +0 -0
  59. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/init/init.md +0 -0
  60. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/init/init_space.md +0 -0
  61. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/CHANGELOG.md +0 -0
  62. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/frameworks/terraform.md +0 -0
  63. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/frameworks/terragrunt.md +0 -0
  64. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/iac.md +0 -0
  65. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/inventory_iac.md +0 -0
  66. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/inventory/inventory_overview.md +0 -0
  67. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/list/list_overview.md +0 -0
  68. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/list/list_projects.md +0 -0
  69. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/list/list_spaces.md +0 -0
  70. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/iac.md +0 -0
  71. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/project_cleanup.md +0 -0
  72. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/project_convert.md +0 -0
  73. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/project_overview.md +0 -0
  74. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/project_upgrade.md +0 -0
  75. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/project/use_cases.md +0 -0
  76. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/remove/remove_overview.md +0 -0
  77. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/remove/remove_project.md +0 -0
  78. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/remove/remove_space.md +0 -0
  79. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/scan/iac.md +0 -0
  80. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/scan/scan_iac.md +0 -0
  81. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/scan/scan_overview.md +0 -0
  82. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/scan/use_cases.md +0 -0
  83. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/space/space_overview.md +0 -0
  84. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/upgrade/upgrade_overview.md +0 -0
  85. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/workflow/workflow_devsecops.md +0 -0
  86. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/commands/workflow/workflow_overview.md +0 -0
  87. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/concepts.md +0 -0
  88. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/cross_platform_support.md +0 -0
  89. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/framework_architecture.md +0 -0
  90. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/infrastructure_composition.md +0 -0
  91. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/policy_as_code.md +0 -0
  92. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/roadmap_fdi.md +0 -0
  93. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/space_configuration.md +0 -0
  94. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/specs/phase1.10_plan_validation.md +0 -0
  95. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/specs/phase1.9_composition_generation.md +0 -0
  96. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/specs/phase1_intent_to_iac.md +0 -0
  97. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/specs/phase2.5.1_autonomy_model.md +0 -0
  98. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/README.md +0 -0
  99. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/ai_dlc.md +0 -0
  100. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/check_command.md +0 -0
  101. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/devsecops_quickstart.md +0 -0
  102. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/devsecops_sdlc.md +0 -0
  103. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/inventory_command.md +0 -0
  104. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/platform_engineering_templates.md +0 -0
  105. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/space_management.md +0 -0
  106. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/tasks/create_template.md +0 -0
  107. {thothctl-0.29.0 → thothctl-0.30.1}/docs/framework/use_cases/tasks/workflow_implementation_plan.md +0 -0
  108. {thothctl-0.29.0 → thothctl-0.30.1}/docs/how_it_works.md +0 -0
  109. {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/commnad_init.png +0 -0
  110. {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/framework/thothforge-framework.svg +0 -0
  111. {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/framework/thothfr.png +0 -0
  112. {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/icon-light.png +0 -0
  113. {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/icon.png +0 -0
  114. {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/init_project.gif +0 -0
  115. {thothctl-0.29.0 → thothctl-0.30.1}/docs/img/stable/scan_report_example.png +0 -0
  116. {thothctl-0.29.0 → thothctl-0.30.1}/docs/includes/abbreviations.md +0 -0
  117. {thothctl-0.29.0 → thothctl-0.30.1}/docs/index.md +0 -0
  118. {thothctl-0.29.0 → thothctl-0.30.1}/docs/installation/devcontainer_setup.md +0 -0
  119. {thothctl-0.29.0 → thothctl-0.30.1}/docs/installation/linux_installation.md +0 -0
  120. {thothctl-0.29.0 → thothctl-0.30.1}/docs/installation/windows_installation.md +0 -0
  121. {thothctl-0.29.0 → thothctl-0.30.1}/docs/javascripts/tablesort.js +0 -0
  122. {thothctl-0.29.0 → thothctl-0.30.1}/docs/navigation.md +0 -0
  123. {thothctl-0.29.0 → thothctl-0.30.1}/docs/quick_start.md +0 -0
  124. {thothctl-0.29.0 → thothctl-0.30.1}/docs/requirements.txt +0 -0
  125. {thothctl-0.29.0 → thothctl-0.30.1}/docs/stylesheets/extra-enhanced.css +0 -0
  126. {thothctl-0.29.0 → thothctl-0.30.1}/docs/stylesheets/extra.css +0 -0
  127. {thothctl-0.29.0 → thothctl-0.30.1}/docs/telemetry.md +0 -0
  128. {thothctl-0.29.0 → thothctl-0.30.1}/docs/template_engine/cli_commands_audit.md +0 -0
  129. {thothctl-0.29.0 → thothctl-0.30.1}/docs/template_engine/for_developers.md +0 -0
  130. {thothctl-0.29.0 → thothctl-0.30.1}/docs/template_engine/for_platform_engineers.md +0 -0
  131. {thothctl-0.29.0 → thothctl-0.30.1}/docs/template_engine/github_templates.md +0 -0
  132. {thothctl-0.29.0 → thothctl-0.30.1}/docs/template_engine/template_engine.md +0 -0
  133. {thothctl-0.29.0 → thothctl-0.30.1}/docs/toolkit_overview.md +0 -0
  134. {thothctl-0.29.0 → thothctl-0.30.1}/docs/troubleshooting/linux_troubleshooting.md +0 -0
  135. {thothctl-0.29.0 → thothctl-0.30.1}/docs/troubleshooting/macos_troubleshooting.md +0 -0
  136. {thothctl-0.29.0 → thothctl-0.30.1}/docs/troubleshooting/troubleshooting.md +0 -0
  137. {thothctl-0.29.0 → thothctl-0.30.1}/docs/troubleshooting/windows_troubleshooting.md +0 -0
  138. {thothctl-0.29.0 → thothctl-0.30.1}/mkdocs.yaml +0 -0
  139. {thothctl-0.29.0 → thothctl-0.30.1}/pyproject.toml +0 -0
  140. {thothctl-0.29.0 → thothctl-0.30.1}/scripts/check_output_consistency.py +0 -0
  141. {thothctl-0.29.0 → thothctl-0.30.1}/scripts/run_mcp_server.sh +0 -0
  142. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/__init__.py +0 -0
  143. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/application/__init__.py +0 -0
  144. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/autocomplete.py +0 -0
  145. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/cli.py +0 -0
  146. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/__init__.py +0 -0
  147. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/__init__.py +0 -0
  148. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/cli.py +0 -0
  149. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/__init__.py +0 -0
  150. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/analyze.py +0 -0
  151. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/apply_fix.py +0 -0
  152. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/configure.py +0 -0
  153. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/configure_decisions.py +0 -0
  154. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/decide.py +0 -0
  155. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/history.py +0 -0
  156. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/improve.py +0 -0
  157. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/orchestrate.py +0 -0
  158. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/override.py +0 -0
  159. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/report.py +0 -0
  160. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/ai_review/commands/serve.py +0 -0
  161. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/__init__.py +0 -0
  162. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/cli.py +0 -0
  163. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/__init__.py +0 -0
  164. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/config.py +0 -0
  165. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/environment.py +0 -0
  166. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/iac.py +0 -0
  167. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/project/__init__.py +0 -0
  168. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/project/iac.py +0 -0
  169. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/project.py +0 -0
  170. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/check/commands/space.py +0 -0
  171. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/dashboard/__init__.py +0 -0
  172. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/dashboard/cli.py +0 -0
  173. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/dashboard/commands/__init__.py +0 -0
  174. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/dashboard/commands/launch.py +0 -0
  175. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/document/__init__.py +0 -0
  176. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/document/cli.py +0 -0
  177. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/document/commands/__init__.py +0 -0
  178. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/document/commands/iac.py +0 -0
  179. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/__init__.py +0 -0
  180. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/cli.py +0 -0
  181. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/commands/__init__.py +0 -0
  182. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/commands/component.py +0 -0
  183. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/generate/commands/stacks.py +0 -0
  184. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/__init__.py +0 -0
  185. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/cli.py +0 -0
  186. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/commands/__init__.py +0 -0
  187. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/commands/env.py +0 -0
  188. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/commands/project.py +0 -0
  189. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/commands/space.py +0 -0
  190. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/init/commands/template.py +0 -0
  191. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/inventory/__init__.py +0 -0
  192. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/inventory/cli.py +0 -0
  193. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/inventory/commands/__init__.py +0 -0
  194. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/inventory/commands/check.py +0 -0
  195. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/inventory/commands/iac.py +0 -0
  196. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/__init__.py +0 -0
  197. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/cli.py +0 -0
  198. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/commands/__init__.py +0 -0
  199. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/commands/projects.py +0 -0
  200. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/commands/spaces.py +0 -0
  201. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/list/commands/templates.py +0 -0
  202. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/__init__.py +0 -0
  203. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/cli.py +0 -0
  204. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/commands/__init__.py +0 -0
  205. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/commands/register.py +0 -0
  206. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/commands/server.py +0 -0
  207. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/commands/status.py +0 -0
  208. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/mcp/commands/stop.py +0 -0
  209. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/__init__.py +0 -0
  210. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/cli.py +0 -0
  211. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/commands/__init__.py +0 -0
  212. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/commands/bootstrap.py +0 -0
  213. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/commands/cleanup.py +0 -0
  214. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/commands/convert.py +0 -0
  215. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/project/commands/upgrade.py +0 -0
  216. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/quickstart/__init__.py +0 -0
  217. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/quickstart/cli.py +0 -0
  218. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/remove/__init__.py +0 -0
  219. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/remove/cli.py +0 -0
  220. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/remove/project.py +0 -0
  221. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/remove/space.py +0 -0
  222. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/scan/__init__.py +0 -0
  223. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/scan/cli.py +0 -0
  224. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/scan/commands/__init__.py +0 -0
  225. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/scan/commands/iac.py +0 -0
  226. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/__init__.py +0 -0
  227. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/cli.py +0 -0
  228. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/__init__.py +0 -0
  229. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/activate.py +0 -0
  230. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/deactivate.py +0 -0
  231. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/export_space.py +0 -0
  232. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/import_space.py +0 -0
  233. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/show.py +0 -0
  234. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/space/commands/update.py +0 -0
  235. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/upgrade/cli.py +0 -0
  236. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/workflow/__init__.py +0 -0
  237. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/workflow/cli.py +0 -0
  238. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/workflow/commands/__init__.py +0 -0
  239. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/workflow/commands/devsecops.py +0 -0
  240. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/commands/workflow/commands/run.py +0 -0
  241. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/.thothcf.setup.toml +0 -0
  242. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/.thothcf_home.toml +0 -0
  243. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/.thothcf_module.toml +0 -0
  244. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/.thothcf_project.toml +0 -0
  245. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/.thothcf_template_parameters.toml +0 -0
  246. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/__init__.py +0 -0
  247. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/common.py +0 -0
  248. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/common/terragrunt/.thothcf_project.toml +0 -0
  249. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/__init__.py +0 -0
  250. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/constants.py +0 -0
  251. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/default_values.py +0 -0
  252. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/defaults.py +0 -0
  253. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/models.py +0 -0
  254. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/settings.py +0 -0
  255. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/template_config.py +0 -0
  256. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/template_configs.py +0 -0
  257. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/templates.py +0 -0
  258. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/config/validation.py +0 -0
  259. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/__init__.py +0 -0
  260. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/cli_ui.py +0 -0
  261. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/commands.py +0 -0
  262. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/config.py +0 -0
  263. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/__init__.py +0 -0
  264. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/azure_devops/__init__.py +0 -0
  265. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/azure_devops/get_azure_devops.py +0 -0
  266. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/azure_devops/pull_request_comments.py +0 -0
  267. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/github/get_github.py +0 -0
  268. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/github/pull_request_comments.py +0 -0
  269. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/integrate_messages_services/__init__.py +0 -0
  270. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/integrate_messages_services/microsoft_teams.py +0 -0
  271. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/integrate_messages_services/sent_message_teams.py +0 -0
  272. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/pattern_names.py +0 -0
  273. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/pr_comments/__init__.py +0 -0
  274. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/integrations/pr_comments/pr_comment_publisher.py +0 -0
  275. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/logger.py +0 -0
  276. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/telemetry.py +0 -0
  277. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/core/version_tools.py +0 -0
  278. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/domain/__init__.py +0 -0
  279. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/domain/interfaces/__init__.py +0 -0
  280. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/domain/models/__init__.py +0 -0
  281. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/mcp/README.md +0 -0
  282. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/mcp/__init__.py +0 -0
  283. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/mcp/server.py +0 -0
  284. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/__init__.py +0 -0
  285. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/__init__.py +0 -0
  286. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/agentcore/agentcore.json +0 -0
  287. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/ai_agent.py +0 -0
  288. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/analyzers/__init__.py +0 -0
  289. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/analyzers/code_reviewer.py +0 -0
  290. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/analyzers/context_builder.py +0 -0
  291. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/analyzers/report_analyzer.py +0 -0
  292. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/analyzers/risk_assessor.py +0 -0
  293. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/bedrock_agent_api.py +0 -0
  294. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/config/__init__.py +0 -0
  295. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/config/ai_settings.py +0 -0
  296. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/config/autonomy.py +0 -0
  297. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/config/decision_rules.py +0 -0
  298. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/decision_engine.py +0 -0
  299. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/main.py +0 -0
  300. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/memory.py +0 -0
  301. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/orchestrator.py +0 -0
  302. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/pr_decision_publisher.py +0 -0
  303. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/__init__.py +0 -0
  304. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/azure_provider.py +0 -0
  305. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/bedrock_agent_provider.py +0 -0
  306. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/bedrock_provider.py +0 -0
  307. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/kiro_provider.py +0 -0
  308. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/ollama_provider.py +0 -0
  309. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/providers/openai_provider.py +0 -0
  310. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/safety/__init__.py +0 -0
  311. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/safety/safety_guard.py +0 -0
  312. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/strands_agent.py +0 -0
  313. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/tracing.py +0 -0
  314. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/__init__.py +0 -0
  315. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/cost_tracker.py +0 -0
  316. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/fix_patterns.py +0 -0
  317. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/fix_prompts.py +0 -0
  318. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/formatters.py +0 -0
  319. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/ai_review/utils/prompts.py +0 -0
  320. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/__init__.py +0 -0
  321. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/environment/__init__.py +0 -0
  322. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/environment/check_environment.py +0 -0
  323. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/org_policy_loader.py +0 -0
  324. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/__init__.py +0 -0
  325. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/blast_radius_service.py +0 -0
  326. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cfn_blast_radius_service.py +0 -0
  327. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/check_origin_version.py +0 -0
  328. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/check_project_structure.py +0 -0
  329. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/__init__.py +0 -0
  330. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/cost_analyzer.py +0 -0
  331. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/models/__init__.py +0 -0
  332. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/models/cloudformation_mapper.py +0 -0
  333. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/models/cost_models.py +0 -0
  334. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/__init__.py +0 -0
  335. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/aws_pricing_client.py +0 -0
  336. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/base_pricing.py +0 -0
  337. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/__init__.py +0 -0
  338. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/apigateway_pricing.py +0 -0
  339. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/bedrock_pricing.py +0 -0
  340. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/cloudwatch_pricing.py +0 -0
  341. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/dynamodb_pricing.py +0 -0
  342. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/ebs_pricing.py +0 -0
  343. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/ec2_pricing.py +0 -0
  344. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/ecr_pricing.py +0 -0
  345. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/ecs_pricing.py +0 -0
  346. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/eip_pricing.py +0 -0
  347. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/eks_pricing.py +0 -0
  348. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/elb_pricing.py +0 -0
  349. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/free_resources_pricing.py +0 -0
  350. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/kms_pricing.py +0 -0
  351. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/lambda_pricing.py +0 -0
  352. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/msk_pricing.py +0 -0
  353. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/rds_pricing.py +0 -0
  354. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/s3_pricing.py +0 -0
  355. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/secrets_manager_pricing.py +0 -0
  356. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/pricing/providers/vpc_pricing.py +0 -0
  357. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/cost/unified_cost_report.py +0 -0
  358. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/__init__.py +0 -0
  359. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/cfn_drift_service.py +0 -0
  360. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/drift_ai.py +0 -0
  361. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/drift_history.py +0 -0
  362. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/drift_policy.py +0 -0
  363. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/drift_report.py +0 -0
  364. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/drift_service.py +0 -0
  365. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/drift/models.py +0 -0
  366. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/risk_assessment.py +0 -0
  367. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/project/validate_project_structure.py +0 -0
  368. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/rule_merger.py +0 -0
  369. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/rules_compiler.py +0 -0
  370. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/check/stack_optimizer/__init__.py +0 -0
  371. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/dashboard/__init__.py +0 -0
  372. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/dashboard/dashboard_service.py +0 -0
  373. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/dashboard/data_loader.py +0 -0
  374. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/__init__.py +0 -0
  375. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/architecture_renderer.py +0 -0
  376. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/create_documentation.py +0 -0
  377. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/files_content.py +0 -0
  378. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/files_scan.py +0 -0
  379. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/iac_documentation.py +0 -0
  380. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/iac_grunt_graph.py +0 -0
  381. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/iac_grunt_info.py +0 -0
  382. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/document/topology_generator.py +0 -0
  383. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/__init__.py +0 -0
  384. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/__init__.py +0 -0
  385. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/config_generator.py +0 -0
  386. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/remote_config_generation.py +0 -0
  387. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/stack_service.py +0 -0
  388. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/templates/terragrunt.hcl.j2 +0 -0
  389. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_stacks/terragrunt.hcl +0 -0
  390. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/__init__.py +0 -0
  391. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/config.yaml +0 -0
  392. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/create_code.py +0 -0
  393. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/create_component.py +0 -0
  394. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/create_component_service.py +0 -0
  395. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/create_stacks.py +0 -0
  396. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/create_template.py +0 -0
  397. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/files_content.py +0 -0
  398. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/github_template_loader.py +0 -0
  399. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/create_template/project_templates.py +0 -0
  400. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/__init__.py +0 -0
  401. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/code_generator.py +0 -0
  402. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/composition_models.py +0 -0
  403. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/context_builder.py +0 -0
  404. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/intent_decomposer.py +0 -0
  405. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/parameter_resolver.py +0 -0
  406. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/plan_runner.py +0 -0
  407. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/project_assembler.py +0 -0
  408. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/prompts.py +0 -0
  409. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/generate/intent/state_resolver.py +0 -0
  410. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/__init__.py +0 -0
  411. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/environment/__init__.py +0 -0
  412. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/environment/prerequisite_checker.py +0 -0
  413. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/environment/tool_packs.py +0 -0
  414. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/project/__init__.py +0 -0
  415. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/project/project.py +0 -0
  416. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/__init__.py +0 -0
  417. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/example_space.toml +0 -0
  418. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/export_import.py +0 -0
  419. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/inheritance.py +0 -0
  420. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/space.py +0 -0
  421. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/init/space/terraform_module_cache.py +0 -0
  422. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/__init__.py +0 -0
  423. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/cdk_parsers.py +0 -0
  424. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/cdk_sbom_service.py +0 -0
  425. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/changelog_parser.py +0 -0
  426. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/defectdojo_publisher.py +0 -0
  427. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/dtrack_publisher.py +0 -0
  428. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/inventory_service.py +0 -0
  429. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/models.py +0 -0
  430. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/module_compatibility_service.py +0 -0
  431. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/report_service.py +0 -0
  432. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/schema_compatibility_service.py +0 -0
  433. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/secobserve_publisher.py +0 -0
  434. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/terragrunt_parser.py +0 -0
  435. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/update_versions.py +0 -0
  436. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/inventory/version_service.py +0 -0
  437. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/mcp/README.md +0 -0
  438. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/mcp/__init__.py +0 -0
  439. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/mcp/simple_http_server.py +0 -0
  440. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/mcp/stdio_server.py +0 -0
  441. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/__init__.py +0 -0
  442. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/bootstrap/__init__.py +0 -0
  443. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/bootstrap/bootstrap_service.py +0 -0
  444. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/cleanup/__init__.py +0 -0
  445. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/cleanup/clean_project.py +0 -0
  446. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/cleanup/clean_space.py +0 -0
  447. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/__init__.py +0 -0
  448. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/conversion_service.py +0 -0
  449. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/get_project_data.py +0 -0
  450. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/post_init.py +0 -0
  451. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/project_converter.py +0 -0
  452. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/project_defaults.py +0 -0
  453. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/convert/set_project_parameters.py +0 -0
  454. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/create_terramate/__init__.py +0 -0
  455. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/create_terramate/create_terramate_stacks.py +0 -0
  456. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/create_terramate/detect_changes_stacks.py +0 -0
  457. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/create_terramate/manage_terramate_stacks.py +0 -0
  458. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/upgrade/__init__.py +0 -0
  459. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/project/upgrade/upgrade_service.py +0 -0
  460. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/__init__.py +0 -0
  461. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/compliance_review.py +0 -0
  462. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/import_reports.py +0 -0
  463. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/models.py +0 -0
  464. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/report_parser.py +0 -0
  465. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/sarif_output.py +0 -0
  466. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scan_history.py +0 -0
  467. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scan_service.py +0 -0
  468. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/__init__.py +0 -0
  469. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/checkov.py +0 -0
  470. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/kics.py +0 -0
  471. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/opa.py +0 -0
  472. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/scan_reports.py +0 -0
  473. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/scanners.py +0 -0
  474. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/terraform_compliance.py +0 -0
  475. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/tfsec.py +0 -0
  476. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/scan/scanners/trivy.py +0 -0
  477. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/__init__.py +0 -0
  478. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/custom_workflow_engine.py +0 -0
  479. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/models.py +0 -0
  480. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/__init__.py +0 -0
  481. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/base.py +0 -0
  482. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/build.py +0 -0
  483. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/deploy.py +0 -0
  484. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/develop.py +0 -0
  485. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/monitor.py +0 -0
  486. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/plan.py +0 -0
  487. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/secure.py +0 -0
  488. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/phases/test.py +0 -0
  489. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/services/workflow/workflow_service.py +0 -0
  490. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/templates/ai_reports/pr_comment.md +0 -0
  491. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/templates/reports/inventory_report.html +0 -0
  492. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/templates/reports/inventory_report.js +0 -0
  493. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/templates/unified_report_styles.css +0 -0
  494. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/__init__.py +0 -0
  495. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/banner.py +0 -0
  496. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/__init__.py +0 -0
  497. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/create_compliance_html_reports.py +0 -0
  498. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/create_html_reports.py +0 -0
  499. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/delete_directory.py +0 -0
  500. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/fix_report_styling.py +0 -0
  501. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/render_scan_report.py +0 -0
  502. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/report_html_utils.py +0 -0
  503. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/dashboard.html +0 -0
  504. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/index_report.html +0 -0
  505. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/individual_report.html +0 -0
  506. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/simple_report.html +0 -0
  507. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/unified_report_styles.css +0 -0
  508. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/unified_scan_report.html +0 -0
  509. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/unified_simple_report.html +0 -0
  510. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/common/templates/xunit_report.html +0 -0
  511. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/crypto.py +0 -0
  512. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/git_changes.py +0 -0
  513. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/manage_backend_resources/__init__.py +0 -0
  514. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/manage_backend_resources/manage_backend_resources.py +0 -0
  515. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/modules_ops/__init__.py +0 -0
  516. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/modules_ops/terraform_module_details.py +0 -0
  517. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/modules_ops/terraform_modules_fetcher.py +0 -0
  518. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/platform_utils.py +0 -0
  519. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/__init__.py +0 -0
  520. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/analyze_terraform_plan.py +0 -0
  521. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/graph_manager.py +0 -0
  522. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/graph_terragrunt_dependencies.py +0 -0
  523. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/process_terraform_file.py +0 -0
  524. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/process_hcl/risk_analyzing_terraform_plan.py +0 -0
  525. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/sync_workspaces/__init__.py +0 -0
  526. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/sync_workspaces/sync_terraform_workspaces.py +0 -0
  527. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/sync_workspaces/sync_terragrunt_workspaces.py +0 -0
  528. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/template_loader.py +0 -0
  529. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/utils/thoth_colors.py +0 -0
  530. {thothctl-0.29.0 → thothctl-0.30.1}/src/thothctl/wellcome_banner.py +0 -0
  531. {thothctl-0.29.0 → thothctl-0.30.1}/tests/conftest.py +0 -0
  532. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_agentcore_entrypoint.py +0 -0
  533. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_apply_fix.py +0 -0
  534. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_autonomy.py +0 -0
  535. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_decision_engine.py +0 -0
  536. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_fix_patterns.py +0 -0
  537. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_memory.py +0 -0
  538. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_orchestrator.py +0 -0
  539. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_pr_decision.py +0 -0
  540. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ai_safety_guard.py +0 -0
  541. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_aws_pricing_client.py +0 -0
  542. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_azure_devops_pr_comments.py +0 -0
  543. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_bedrock_pricing.py +0 -0
  544. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cdk_inventory.py +0 -0
  545. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cdk_language_selection.py +0 -0
  546. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cfn_blast_radius.py +0 -0
  547. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cfn_drift_detection.py +0 -0
  548. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_context_steering.py +0 -0
  549. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cost_analyzer.py +0 -0
  550. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cost_models.py +0 -0
  551. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cost_policy_enforcement.py +0 -0
  552. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_cost_pr_comments.py +0 -0
  553. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_dashboard_loading_fix.py +0 -0
  554. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_dashboard_service.py +0 -0
  555. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_defectdojo_publisher.py +0 -0
  556. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_drift.py +0 -0
  557. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_drift_detection.py +0 -0
  558. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_dtrack_publisher.py +0 -0
  559. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_ec2_pricing.py +0 -0
  560. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_generate_iac_codegen.py +0 -0
  561. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_generate_iac_context.py +0 -0
  562. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_generate_iac_prompts.py +0 -0
  563. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_generate_iac_service.py +0 -0
  564. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_generate_iac_validator.py +0 -0
  565. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_github_pr_comments.py +0 -0
  566. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_iac_cost_integration.py +0 -0
  567. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_init_ai_tools.py +0 -0
  568. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_init_template_params.py +0 -0
  569. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_intent_quick_wins.py +0 -0
  570. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_intent_rules_integration.py +0 -0
  571. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_inventory_pr_comments.py +0 -0
  572. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_kics_scanner.py +0 -0
  573. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_kiro_provider.py +0 -0
  574. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_mermaid_edge_labels.py +0 -0
  575. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_new_cost_providers.py +0 -0
  576. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_opa_data_files.py +0 -0
  577. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_parallel_scan.py +0 -0
  578. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_plan_validation.py +0 -0
  579. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_platform_utils.py +0 -0
  580. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_pr_comment_publisher.py +0 -0
  581. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_provider_source_url_fix.py +0 -0
  582. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_provider_versions.py +0 -0
  583. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_rules_compiler.py +0 -0
  584. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_scan_cfn_support.py +0 -0
  585. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_scan_command.py +0 -0
  586. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_scan_pr_comments.py +0 -0
  587. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_space_command.py +0 -0
  588. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_space_management.py +0 -0
  589. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_stack_optimizer.py +0 -0
  590. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_template_url_fix.py +0 -0
  591. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_terragrunt_parser.py +0 -0
  592. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_topology_generator.py +0 -0
  593. {thothctl-0.29.0 → thothctl-0.30.1}/tests/test_workflow_integration.py +0 -0
  594. {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.29.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
- q mcp add --name thothctl --command "thothctl mcp server"
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
- q chat "Generate a VPC with 3 private subnets and NAT gateway for production in us-east-1 using terraform-terragrunt composition full mode"
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
- q chat "List all ThothCTL projects"
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
- q mcp list
267
+ kiro-cli mcp list
268
268
 
269
269
  # Remove incorrect registration if needed
270
- q mcp remove thothctl
270
+ kiro-cli mcp remove --name thothctl
271
271
 
272
272
  # Register correctly
273
- q mcp add --name thothctl --command "thothctl mcp server"
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: `~/.aws/amazonq/mcp.json` - Applies to all workspaces
280
- - Workspace Configuration: `.amazonq/mcp.json` - Specific to the current workspace
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 ~/.aws/amazonq/mcp.json # Global config (Linux/macOS)
285
- ls -la .amazonq/mcp.json # Workspace config (Linux/macOS)
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 ~/.aws/amazonq/mcp.json # Global config (Linux/macOS)
289
- cat .amazonq/mcp.json # Workspace config (Linux/macOS)
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
- q mcp remove thothctl
293
- q mcp add --name thothctl --command "thothctl mcp server"
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 the `q mcp add` command to ensure proper formatting.
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 as suggested in the error message.
319
+ 5. **Detailed debugging**: Run with increased logging.
313
320
  ```bash
314
- Q_LOG_LEVEL=trace q chat "List ThothCTL projects"
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
- q mcp remove thothctl
338
- q mcp add --name thothctl --command "thothctl" --args "mcp" --args "server" --args "-p" --args "8081"
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
@@ -578,7 +578,7 @@ Model Context Protocol server for AI integration.
578
578
  "mcpServers": {
579
579
  "thothctl": {
580
580
  "command": "thothctl",
581
- "args": ["mcp", "server"]
581
+ "args": ["mcp", "server", "--stdio"]
582
582
  }
583
583
  }
584
584
  }
@@ -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
- kiro mcp add thothctl --command "thothctl mcp server"
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: `~/.aws/amazonq/mcp.json` - Applies to all workspaces
94
- - Workspace Configuration: `.amazonq/mcp.json` - Specific to the current workspace
95
-
96
- The MCP configuration file should have this structure:
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
- q mcp remove thothctl
113
- q mcp add --name thothctl --command "thothctl" --args "mcp" --args "server"
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 = _time.time() - self._start_time if hasattr(self, "_start_time") else 0
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
  )
@@ -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
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
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 as e:
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 = conn.execute(
347
- f"SELECT AVG(duration_seconds) FROM generation_runs {success_where}",
348
- params,
349
- ).fetchone()[0] or 0
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 = conn.execute(
352
- f"SELECT AVG(iterations) FROM generation_runs {success_where}",
353
- params,
354
- ).fetchone()[0] or 0
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 = conn.execute(
357
- f"SELECT SUM(context_tokens + generation_tokens) FROM generation_runs {where}",
358
- params,
359
- ).fetchone()[0] or 0
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 = conn.execute(
362
- f"SELECT AVG(files_count) FROM generation_runs {success_where}",
363
- params,
364
- ).fetchone()[0] or 0
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(