thothctl 0.25.2__tar.gz → 0.25.4__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 (590) hide show
  1. {thothctl-0.25.2 → thothctl-0.25.4}/PKG-INFO +2 -2
  2. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/concepts.md +129 -1
  3. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/framework_architecture.md +2 -0
  4. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/roadmap_fdi.md +16 -1
  5. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/software_architecture.md +2 -0
  6. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/use_cases/README.md +2 -0
  7. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/use_cases/ai_dlc.md +2 -0
  8. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/use_cases/tasks/workflow_implementation_plan.md +8 -1
  9. {thothctl-0.25.2 → thothctl-0.25.4}/docs/toolkit_overview.md +3 -1
  10. {thothctl-0.25.2 → thothctl-0.25.4}/mkdocs.yaml +1 -1
  11. {thothctl-0.25.2 → thothctl-0.25.4}/pyproject.toml +1 -1
  12. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/check/commands/iac.py +105 -1
  13. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/init/commands/project.py +39 -60
  14. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/github/get_github.py +6 -2
  15. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/pattern_names.py +6 -0
  16. thothctl-0.25.4/src/thothctl/services/check/rules_compiler.py +418 -0
  17. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/intent/context_builder.py +126 -23
  18. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/intent/intent_service.py +154 -11
  19. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/intent/models.py +82 -5
  20. thothctl-0.25.4/src/thothctl/services/generate/intent/validator.py +740 -0
  21. thothctl-0.25.4/src/thothctl/services/mcp/stdio_server.py +306 -0
  22. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/version.py +1 -1
  23. thothctl-0.25.4/tests/test_intent_quick_wins.py +276 -0
  24. thothctl-0.25.4/tests/test_rules_compiler.py +292 -0
  25. thothctl-0.25.2/docs/iac_devsecops_use_case.md +0 -436
  26. thothctl-0.25.2/docs/img/automate_tasks_command.png +0 -0
  27. thothctl-0.25.2/docs/img/create_component.gif +0 -0
  28. thothctl-0.25.2/docs/img/create_inventory.gif +0 -0
  29. thothctl-0.25.2/docs/img/doc_command.png +0 -0
  30. thothctl-0.25.2/docs/img/document_project_code.gif +0 -0
  31. thothctl-0.25.2/docs/img/iacpeerbot_summary.png +0 -0
  32. thothctl-0.25.2/docs/img/inventory_command.png +0 -0
  33. thothctl-0.25.2/docs/img/notification_img.png +0 -0
  34. thothctl-0.25.2/docs/img/report_dependencies.png +0 -0
  35. thothctl-0.25.2/docs/img/report_dependencies_summary.png +0 -0
  36. thothctl-0.25.2/docs/img/restore_inventory_version.gif +0 -0
  37. thothctl-0.25.2/docs/img/reuse_project_pattern.gif +0 -0
  38. thothctl-0.25.2/docs/img/scan_code.gif +0 -0
  39. thothctl-0.25.2/docs/img/scan_command.png +0 -0
  40. thothctl-0.25.2/docs/img/sync_wk_command.png +0 -0
  41. thothctl-0.25.2/docs/img/transform_command.png +0 -0
  42. thothctl-0.25.2/docs/img/update_inventory_version.gif +0 -0
  43. thothctl-0.25.2/docs/img/validate_command.png +0 -0
  44. thothctl-0.25.2/docs/img/validate_environment.gif +0 -0
  45. thothctl-0.25.2/docs/img/validate_project.gif +0 -0
  46. thothctl-0.25.2/src/thothctl/services/generate/intent/validator.py +0 -298
  47. thothctl-0.25.2/src/thothctl/services/mcp/stdio_server.py +0 -679
  48. {thothctl-0.25.2 → thothctl-0.25.4}/.devcontainer/Dockerfile +0 -0
  49. {thothctl-0.25.2 → thothctl-0.25.4}/.devcontainer/README.md +0 -0
  50. {thothctl-0.25.2 → thothctl-0.25.4}/.devcontainer/devcontainer.json +0 -0
  51. {thothctl-0.25.2 → thothctl-0.25.4}/.github/workflows/docs.yml +0 -0
  52. {thothctl-0.25.2 → thothctl-0.25.4}/.github/workflows/python-publish.yml +0 -0
  53. {thothctl-0.25.2 → thothctl-0.25.4}/.github/workflows/release.yml +0 -0
  54. {thothctl-0.25.2 → thothctl-0.25.4}/.gitignore +0 -0
  55. {thothctl-0.25.2 → thothctl-0.25.4}/.pre-commit-config.yaml +0 -0
  56. {thothctl-0.25.2 → thothctl-0.25.4}/.pydocstyle +0 -0
  57. {thothctl-0.25.2 → thothctl-0.25.4}/.readthedocs.yaml +0 -0
  58. {thothctl-0.25.2 → thothctl-0.25.4}/Dockerfile +0 -0
  59. {thothctl-0.25.2 → thothctl-0.25.4}/LICENSE +0 -0
  60. {thothctl-0.25.2 → thothctl-0.25.4}/README.md +0 -0
  61. {thothctl-0.25.2 → thothctl-0.25.4}/__init__.py +0 -0
  62. {thothctl-0.25.2 → thothctl-0.25.4}/docs/catalog/catalog-info.yaml +0 -0
  63. {thothctl-0.25.2 → thothctl-0.25.4}/docs/dashboard/README.md +0 -0
  64. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/ai-review/README.md +0 -0
  65. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/ai-review/agent_specifications.md +0 -0
  66. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/ai-review/agentcore.md +0 -0
  67. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/blast-radius.md +0 -0
  68. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/check_environment.md +0 -0
  69. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/check_iac.md +0 -0
  70. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/check_overview.md +0 -0
  71. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/check_project_iac.md +0 -0
  72. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/check_space.md +0 -0
  73. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/cost-analysis-quick-reference.md +0 -0
  74. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/cost-analysis.md +0 -0
  75. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/customizing_rules.md +0 -0
  76. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/deps-advanced.md +0 -0
  77. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/deps.md +0 -0
  78. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/drift-detection.md +0 -0
  79. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/check/plan.md +0 -0
  80. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/dashboard/dashboard_overview.md +0 -0
  81. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/document/customizing_docs.md +0 -0
  82. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/document/document_iac.md +0 -0
  83. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/document/document_overview.md +0 -0
  84. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/document/iac.md +0 -0
  85. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/document/mermaid_examples.md +0 -0
  86. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/document/mermaid_quickref.md +0 -0
  87. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/document/use_cases.md +0 -0
  88. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/generate/generate_components.md +0 -0
  89. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/generate/generate_iac.md +0 -0
  90. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/generate/generate_stacks.md +0 -0
  91. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/init/init.md +0 -0
  92. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/init/init_space.md +0 -0
  93. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/inventory/CHANGELOG.md +0 -0
  94. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/inventory/frameworks/terraform.md +0 -0
  95. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/inventory/frameworks/terragrunt.md +0 -0
  96. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/inventory/iac.md +0 -0
  97. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/inventory/inventory_iac.md +0 -0
  98. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/inventory/inventory_overview.md +0 -0
  99. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/list/list_overview.md +0 -0
  100. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/list/list_projects.md +0 -0
  101. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/list/list_spaces.md +0 -0
  102. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/mcp/mcp.md +0 -0
  103. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/project/iac.md +0 -0
  104. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/project/project_cleanup.md +0 -0
  105. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/project/project_convert.md +0 -0
  106. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/project/project_overview.md +0 -0
  107. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/project/project_upgrade.md +0 -0
  108. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/project/use_cases.md +0 -0
  109. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/remove/remove_overview.md +0 -0
  110. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/remove/remove_project.md +0 -0
  111. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/remove/remove_space.md +0 -0
  112. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/scan/iac.md +0 -0
  113. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/scan/scan_iac.md +0 -0
  114. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/scan/scan_overview.md +0 -0
  115. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/scan/use_cases.md +0 -0
  116. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/space/space_overview.md +0 -0
  117. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/upgrade/upgrade_overview.md +0 -0
  118. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/workflow/workflow_devsecops.md +0 -0
  119. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/commands/workflow/workflow_overview.md +0 -0
  120. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/cross_platform_support.md +0 -0
  121. /thothctl-0.25.2/docs/framework/infrasctructure_composition.md → /thothctl-0.25.4/docs/framework/infrastructure_composition.md +0 -0
  122. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/policy_as_code.md +0 -0
  123. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/space_configuration.md +0 -0
  124. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/specs/phase1_intent_to_iac.md +0 -0
  125. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/use_cases/check_command.md +0 -0
  126. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/use_cases/devsecops_quickstart.md +0 -0
  127. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/use_cases/devsecops_sdlc.md +0 -0
  128. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/use_cases/inventory_command.md +0 -0
  129. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/use_cases/platform_engineering_templates.md +0 -0
  130. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/use_cases/space_management.md +0 -0
  131. {thothctl-0.25.2 → thothctl-0.25.4}/docs/framework/use_cases/tasks/create_template.md +0 -0
  132. {thothctl-0.25.2 → thothctl-0.25.4}/docs/img/commnad_init.png +0 -0
  133. {thothctl-0.25.2 → thothctl-0.25.4}/docs/img/framework/thothforge-framework.svg +0 -0
  134. {thothctl-0.25.2 → thothctl-0.25.4}/docs/img/framework/thothfr.png +0 -0
  135. {thothctl-0.25.2 → thothctl-0.25.4}/docs/img/icon-light.png +0 -0
  136. {thothctl-0.25.2 → thothctl-0.25.4}/docs/img/icon.png +0 -0
  137. {thothctl-0.25.2 → thothctl-0.25.4}/docs/img/init_project.gif +0 -0
  138. {thothctl-0.25.2 → thothctl-0.25.4}/docs/img/stable/scan_report_example.png +0 -0
  139. {thothctl-0.25.2 → thothctl-0.25.4}/docs/includes/abbreviations.md +0 -0
  140. {thothctl-0.25.2 → thothctl-0.25.4}/docs/index.md +0 -0
  141. {thothctl-0.25.2 → thothctl-0.25.4}/docs/installation/devcontainer_setup.md +0 -0
  142. {thothctl-0.25.2 → thothctl-0.25.4}/docs/installation/linux_installation.md +0 -0
  143. {thothctl-0.25.2 → thothctl-0.25.4}/docs/installation/windows_installation.md +0 -0
  144. {thothctl-0.25.2 → thothctl-0.25.4}/docs/javascripts/tablesort.js +0 -0
  145. {thothctl-0.25.2 → thothctl-0.25.4}/docs/mcp.md +0 -0
  146. {thothctl-0.25.2 → thothctl-0.25.4}/docs/navigation.md +0 -0
  147. {thothctl-0.25.2 → thothctl-0.25.4}/docs/quick_start.md +0 -0
  148. {thothctl-0.25.2 → thothctl-0.25.4}/docs/requirements.txt +0 -0
  149. {thothctl-0.25.2 → thothctl-0.25.4}/docs/stylesheets/extra-enhanced.css +0 -0
  150. {thothctl-0.25.2 → thothctl-0.25.4}/docs/stylesheets/extra.css +0 -0
  151. {thothctl-0.25.2 → thothctl-0.25.4}/docs/telemetry.md +0 -0
  152. {thothctl-0.25.2 → thothctl-0.25.4}/docs/template_engine/cli_commands_audit.md +0 -0
  153. {thothctl-0.25.2 → thothctl-0.25.4}/docs/template_engine/for_developers.md +0 -0
  154. {thothctl-0.25.2 → thothctl-0.25.4}/docs/template_engine/for_platform_engineers.md +0 -0
  155. {thothctl-0.25.2 → thothctl-0.25.4}/docs/template_engine/github_templates.md +0 -0
  156. {thothctl-0.25.2 → thothctl-0.25.4}/docs/template_engine/template_engine.md +0 -0
  157. {thothctl-0.25.2 → thothctl-0.25.4}/docs/troubleshooting/linux_troubleshooting.md +0 -0
  158. {thothctl-0.25.2 → thothctl-0.25.4}/docs/troubleshooting/macos_troubleshooting.md +0 -0
  159. {thothctl-0.25.2 → thothctl-0.25.4}/docs/troubleshooting/troubleshooting.md +0 -0
  160. {thothctl-0.25.2 → thothctl-0.25.4}/docs/troubleshooting/windows_troubleshooting.md +0 -0
  161. {thothctl-0.25.2 → thothctl-0.25.4}/scripts/check_output_consistency.py +0 -0
  162. {thothctl-0.25.2 → thothctl-0.25.4}/scripts/run_mcp_server.sh +0 -0
  163. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/__init__.py +0 -0
  164. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/application/__init__.py +0 -0
  165. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/autocomplete.py +0 -0
  166. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/cli.py +0 -0
  167. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/__init__.py +0 -0
  168. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/__init__.py +0 -0
  169. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/cli.py +0 -0
  170. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/__init__.py +0 -0
  171. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/analyze.py +0 -0
  172. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/apply_fix.py +0 -0
  173. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/configure.py +0 -0
  174. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/configure_decisions.py +0 -0
  175. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/decide.py +0 -0
  176. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/history.py +0 -0
  177. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/improve.py +0 -0
  178. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/orchestrate.py +0 -0
  179. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/override.py +0 -0
  180. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/report.py +0 -0
  181. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/ai_review/commands/serve.py +0 -0
  182. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/check/__init__.py +0 -0
  183. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/check/cli.py +0 -0
  184. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/check/commands/__init__.py +0 -0
  185. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/check/commands/config.py +0 -0
  186. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/check/commands/environment.py +0 -0
  187. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/check/commands/project/__init__.py +0 -0
  188. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/check/commands/project/iac.py +0 -0
  189. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/check/commands/project.py +0 -0
  190. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/check/commands/space.py +0 -0
  191. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/dashboard/__init__.py +0 -0
  192. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/dashboard/cli.py +0 -0
  193. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/dashboard/commands/__init__.py +0 -0
  194. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/dashboard/commands/launch.py +0 -0
  195. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/document/__init__.py +0 -0
  196. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/document/cli.py +0 -0
  197. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/document/commands/__init__.py +0 -0
  198. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/document/commands/iac.py +0 -0
  199. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/generate/__init__.py +0 -0
  200. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/generate/cli.py +0 -0
  201. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/generate/commands/__init__.py +0 -0
  202. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/generate/commands/component.py +0 -0
  203. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/generate/commands/iac.py +0 -0
  204. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/generate/commands/stacks.py +0 -0
  205. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/init/__init__.py +0 -0
  206. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/init/cli.py +0 -0
  207. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/init/commands/__init__.py +0 -0
  208. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/init/commands/env.py +0 -0
  209. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/init/commands/space.py +0 -0
  210. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/init/commands/template.py +0 -0
  211. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/inventory/__init__.py +0 -0
  212. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/inventory/cli.py +0 -0
  213. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/inventory/commands/__init__.py +0 -0
  214. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/inventory/commands/check.py +0 -0
  215. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/inventory/commands/iac.py +0 -0
  216. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/list/__init__.py +0 -0
  217. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/list/cli.py +0 -0
  218. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/list/commands/__init__.py +0 -0
  219. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/list/commands/projects.py +0 -0
  220. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/list/commands/spaces.py +0 -0
  221. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/list/commands/templates.py +0 -0
  222. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/mcp/__init__.py +0 -0
  223. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/mcp/cli.py +0 -0
  224. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/mcp/commands/__init__.py +0 -0
  225. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/mcp/commands/register.py +0 -0
  226. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/mcp/commands/server.py +0 -0
  227. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/mcp/commands/status.py +0 -0
  228. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/mcp/commands/stop.py +0 -0
  229. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/project/__init__.py +0 -0
  230. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/project/cli.py +0 -0
  231. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/project/commands/__init__.py +0 -0
  232. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/project/commands/bootstrap.py +0 -0
  233. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/project/commands/cleanup.py +0 -0
  234. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/project/commands/convert.py +0 -0
  235. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/project/commands/upgrade.py +0 -0
  236. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/quickstart/__init__.py +0 -0
  237. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/quickstart/cli.py +0 -0
  238. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/remove/__init__.py +0 -0
  239. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/remove/cli.py +0 -0
  240. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/remove/project.py +0 -0
  241. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/remove/space.py +0 -0
  242. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/scan/__init__.py +0 -0
  243. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/scan/cli.py +0 -0
  244. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/scan/commands/__init__.py +0 -0
  245. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/scan/commands/iac.py +0 -0
  246. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/space/__init__.py +0 -0
  247. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/space/cli.py +0 -0
  248. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/space/commands/__init__.py +0 -0
  249. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/space/commands/activate.py +0 -0
  250. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/space/commands/deactivate.py +0 -0
  251. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/space/commands/export_space.py +0 -0
  252. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/space/commands/import_space.py +0 -0
  253. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/space/commands/show.py +0 -0
  254. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/space/commands/update.py +0 -0
  255. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/upgrade/cli.py +0 -0
  256. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/workflow/__init__.py +0 -0
  257. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/workflow/cli.py +0 -0
  258. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/workflow/commands/__init__.py +0 -0
  259. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/workflow/commands/devsecops.py +0 -0
  260. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/commands/workflow/commands/run.py +0 -0
  261. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/common/.thothcf.setup.toml +0 -0
  262. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/common/.thothcf_home.toml +0 -0
  263. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/common/.thothcf_module.toml +0 -0
  264. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/common/.thothcf_project.toml +0 -0
  265. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/common/.thothcf_template_parameters.toml +0 -0
  266. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/common/__init__.py +0 -0
  267. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/common/common.py +0 -0
  268. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/common/terragrunt/.thothcf_project.toml +0 -0
  269. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/config/__init__.py +0 -0
  270. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/config/constants.py +0 -0
  271. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/config/default_values.py +0 -0
  272. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/config/defaults.py +0 -0
  273. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/config/models.py +0 -0
  274. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/config/settings.py +0 -0
  275. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/config/template_config.py +0 -0
  276. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/config/template_configs.py +0 -0
  277. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/config/templates.py +0 -0
  278. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/config/validation.py +0 -0
  279. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/__init__.py +0 -0
  280. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/cli_ui.py +0 -0
  281. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/commands.py +0 -0
  282. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/config.py +0 -0
  283. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/__init__.py +0 -0
  284. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/azure_devops/__init__.py +0 -0
  285. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/azure_devops/get_azure_devops.py +0 -0
  286. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/azure_devops/pull_request_comments.py +0 -0
  287. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/github/pull_request_comments.py +0 -0
  288. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/integrate_messages_services/__init__.py +0 -0
  289. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/integrate_messages_services/microsoft_teams.py +0 -0
  290. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/integrate_messages_services/sent_message_teams.py +0 -0
  291. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/pr_comments/__init__.py +0 -0
  292. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/integrations/pr_comments/pr_comment_publisher.py +0 -0
  293. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/logger.py +0 -0
  294. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/telemetry.py +0 -0
  295. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/core/version_tools.py +0 -0
  296. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/domain/__init__.py +0 -0
  297. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/domain/interfaces/__init__.py +0 -0
  298. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/domain/models/__init__.py +0 -0
  299. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/mcp/README.md +0 -0
  300. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/mcp/__init__.py +0 -0
  301. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/mcp/server.py +0 -0
  302. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/__init__.py +0 -0
  303. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/__init__.py +0 -0
  304. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/agentcore/agentcore.json +0 -0
  305. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/ai_agent.py +0 -0
  306. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/analyzers/__init__.py +0 -0
  307. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/analyzers/code_reviewer.py +0 -0
  308. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/analyzers/context_builder.py +0 -0
  309. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/analyzers/report_analyzer.py +0 -0
  310. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/analyzers/risk_assessor.py +0 -0
  311. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/bedrock_agent_api.py +0 -0
  312. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/config/__init__.py +0 -0
  313. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/config/ai_settings.py +0 -0
  314. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/config/decision_rules.py +0 -0
  315. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/decision_engine.py +0 -0
  316. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/main.py +0 -0
  317. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/memory.py +0 -0
  318. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/orchestrator.py +0 -0
  319. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/pr_decision_publisher.py +0 -0
  320. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/providers/__init__.py +0 -0
  321. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/providers/azure_provider.py +0 -0
  322. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/providers/bedrock_agent_provider.py +0 -0
  323. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/providers/bedrock_provider.py +0 -0
  324. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/providers/ollama_provider.py +0 -0
  325. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/providers/openai_provider.py +0 -0
  326. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/safety/__init__.py +0 -0
  327. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/safety/safety_guard.py +0 -0
  328. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/strands_agent.py +0 -0
  329. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/tracing.py +0 -0
  330. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/utils/__init__.py +0 -0
  331. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/utils/cost_tracker.py +0 -0
  332. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/utils/fix_patterns.py +0 -0
  333. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/utils/fix_prompts.py +0 -0
  334. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/utils/formatters.py +0 -0
  335. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/ai_review/utils/prompts.py +0 -0
  336. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/__init__.py +0 -0
  337. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/environment/__init__.py +0 -0
  338. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/environment/check_environment.py +0 -0
  339. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/org_policy_loader.py +0 -0
  340. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/__init__.py +0 -0
  341. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/blast_radius_service.py +0 -0
  342. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cfn_blast_radius_service.py +0 -0
  343. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/check_origin_version.py +0 -0
  344. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/check_project_structure.py +0 -0
  345. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/__init__.py +0 -0
  346. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/cost_analyzer.py +0 -0
  347. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/models/__init__.py +0 -0
  348. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/models/cloudformation_mapper.py +0 -0
  349. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/models/cost_models.py +0 -0
  350. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/__init__.py +0 -0
  351. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/aws_pricing_client.py +0 -0
  352. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/base_pricing.py +0 -0
  353. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/__init__.py +0 -0
  354. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/apigateway_pricing.py +0 -0
  355. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/bedrock_pricing.py +0 -0
  356. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/cloudwatch_pricing.py +0 -0
  357. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/dynamodb_pricing.py +0 -0
  358. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/ebs_pricing.py +0 -0
  359. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/ec2_pricing.py +0 -0
  360. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/ecs_pricing.py +0 -0
  361. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/eip_pricing.py +0 -0
  362. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/eks_pricing.py +0 -0
  363. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/elb_pricing.py +0 -0
  364. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/free_resources_pricing.py +0 -0
  365. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/kms_pricing.py +0 -0
  366. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/lambda_pricing.py +0 -0
  367. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/msk_pricing.py +0 -0
  368. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/rds_pricing.py +0 -0
  369. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/s3_pricing.py +0 -0
  370. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/secrets_manager_pricing.py +0 -0
  371. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/pricing/providers/vpc_pricing.py +0 -0
  372. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/cost/unified_cost_report.py +0 -0
  373. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/drift/__init__.py +0 -0
  374. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/drift/cfn_drift_service.py +0 -0
  375. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/drift/drift_ai.py +0 -0
  376. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/drift/drift_history.py +0 -0
  377. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/drift/drift_policy.py +0 -0
  378. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/drift/drift_report.py +0 -0
  379. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/drift/drift_service.py +0 -0
  380. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/drift/models.py +0 -0
  381. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/risk_assessment.py +0 -0
  382. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/project/validate_project_structure.py +0 -0
  383. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/rule_merger.py +0 -0
  384. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/check/stack_optimizer/__init__.py +0 -0
  385. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/dashboard/__init__.py +0 -0
  386. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/dashboard/dashboard_service.py +0 -0
  387. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/dashboard/data_loader.py +0 -0
  388. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/document/__init__.py +0 -0
  389. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/document/architecture_renderer.py +0 -0
  390. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/document/create_documentation.py +0 -0
  391. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/document/files_content.py +0 -0
  392. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/document/files_scan.py +0 -0
  393. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/document/iac_documentation.py +0 -0
  394. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/document/iac_grunt_graph.py +0 -0
  395. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/document/iac_grunt_info.py +0 -0
  396. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/document/topology_generator.py +0 -0
  397. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/__init__.py +0 -0
  398. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_stacks/__init__.py +0 -0
  399. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_stacks/config_generator.py +0 -0
  400. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_stacks/remote_config_generation.py +0 -0
  401. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_stacks/stack_service.py +0 -0
  402. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_stacks/templates/terragrunt.hcl.j2 +0 -0
  403. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_stacks/terragrunt.hcl +0 -0
  404. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_template/__init__.py +0 -0
  405. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_template/config.yaml +0 -0
  406. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_template/create_code.py +0 -0
  407. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_template/create_component.py +0 -0
  408. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_template/create_component_service.py +0 -0
  409. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_template/create_stacks.py +0 -0
  410. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_template/create_template.py +0 -0
  411. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_template/files_content.py +0 -0
  412. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_template/github_template_loader.py +0 -0
  413. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/create_template/project_templates.py +0 -0
  414. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/intent/__init__.py +0 -0
  415. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/intent/code_generator.py +0 -0
  416. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/generate/intent/prompts.py +0 -0
  417. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/__init__.py +0 -0
  418. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/environment/__init__.py +0 -0
  419. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/environment/install_tools.py +0 -0
  420. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/environment/prerequisite_checker.py +0 -0
  421. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/environment/tool_packs.py +0 -0
  422. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/project/__init__.py +0 -0
  423. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/project/project.py +0 -0
  424. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/space/__init__.py +0 -0
  425. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/space/example_space.toml +0 -0
  426. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/space/export_import.py +0 -0
  427. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/space/inheritance.py +0 -0
  428. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/space/space.py +0 -0
  429. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/init/space/terraform_module_cache.py +0 -0
  430. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/__init__.py +0 -0
  431. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/cdk_parsers.py +0 -0
  432. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/cdk_sbom_service.py +0 -0
  433. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/changelog_parser.py +0 -0
  434. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/inventory_service.py +0 -0
  435. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/models.py +0 -0
  436. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/module_compatibility_service.py +0 -0
  437. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/report_service.py +0 -0
  438. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/schema_compatibility_service.py +0 -0
  439. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/terragrunt_parser.py +0 -0
  440. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/update_versions.py +0 -0
  441. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/inventory/version_service.py +0 -0
  442. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/mcp/README.md +0 -0
  443. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/mcp/__init__.py +0 -0
  444. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/mcp/simple_http_server.py +0 -0
  445. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/__init__.py +0 -0
  446. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/bootstrap/__init__.py +0 -0
  447. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/bootstrap/bootstrap_service.py +0 -0
  448. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/cleanup/__init__.py +0 -0
  449. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/cleanup/clean_project.py +0 -0
  450. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/cleanup/clean_space.py +0 -0
  451. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/convert/__init__.py +0 -0
  452. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/convert/conversion_service.py +0 -0
  453. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/convert/get_project_data.py +0 -0
  454. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/convert/post_init.py +0 -0
  455. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/convert/project_converter.py +0 -0
  456. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/convert/project_defaults.py +0 -0
  457. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/convert/set_project_parameters.py +0 -0
  458. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/create_terramate/__init__.py +0 -0
  459. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/create_terramate/create_terramate_stacks.py +0 -0
  460. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/create_terramate/detect_changes_stacks.py +0 -0
  461. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/create_terramate/manage_terramate_stacks.py +0 -0
  462. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/upgrade/__init__.py +0 -0
  463. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/project/upgrade/upgrade_service.py +0 -0
  464. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/__init__.py +0 -0
  465. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/compliance_review.py +0 -0
  466. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/import_reports.py +0 -0
  467. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/models.py +0 -0
  468. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/report_parser.py +0 -0
  469. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/sarif_output.py +0 -0
  470. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/scan_history.py +0 -0
  471. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/scan_service.py +0 -0
  472. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/scanners/__init__.py +0 -0
  473. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/scanners/checkov.py +0 -0
  474. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/scanners/kics.py +0 -0
  475. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/scanners/opa.py +0 -0
  476. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/scanners/scan_reports.py +0 -0
  477. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/scanners/scanners.py +0 -0
  478. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/scanners/terraform_compliance.py +0 -0
  479. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/scanners/tfsec.py +0 -0
  480. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/scan/scanners/trivy.py +0 -0
  481. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/__init__.py +0 -0
  482. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/custom_workflow_engine.py +0 -0
  483. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/models.py +0 -0
  484. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/phases/__init__.py +0 -0
  485. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/phases/base.py +0 -0
  486. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/phases/build.py +0 -0
  487. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/phases/deploy.py +0 -0
  488. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/phases/develop.py +0 -0
  489. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/phases/monitor.py +0 -0
  490. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/phases/plan.py +0 -0
  491. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/phases/secure.py +0 -0
  492. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/phases/test.py +0 -0
  493. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/services/workflow/workflow_service.py +0 -0
  494. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/templates/ai_reports/pr_comment.md +0 -0
  495. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/templates/reports/inventory_report.html +0 -0
  496. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/templates/reports/inventory_report.js +0 -0
  497. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/templates/unified_report_styles.css +0 -0
  498. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/__init__.py +0 -0
  499. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/banner.py +0 -0
  500. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/__init__.py +0 -0
  501. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/create_compliance_html_reports.py +0 -0
  502. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/create_html_reports.py +0 -0
  503. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/delete_directory.py +0 -0
  504. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/fix_report_styling.py +0 -0
  505. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/render_scan_report.py +0 -0
  506. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/report_html_utils.py +0 -0
  507. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/templates/dashboard.html +0 -0
  508. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/templates/index_report.html +0 -0
  509. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/templates/individual_report.html +0 -0
  510. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/templates/simple_report.html +0 -0
  511. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/templates/unified_report_styles.css +0 -0
  512. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/templates/unified_scan_report.html +0 -0
  513. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/templates/unified_simple_report.html +0 -0
  514. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/common/templates/xunit_report.html +0 -0
  515. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/crypto.py +0 -0
  516. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/git_changes.py +0 -0
  517. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/manage_backend_resources/__init__.py +0 -0
  518. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/manage_backend_resources/manage_backend_resources.py +0 -0
  519. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/modules_ops/__init__.py +0 -0
  520. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/modules_ops/terraform_module_details.py +0 -0
  521. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/modules_ops/terraform_modules_fetcher.py +0 -0
  522. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/platform_utils.py +0 -0
  523. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/process_hcl/__init__.py +0 -0
  524. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/process_hcl/analyze_terraform_plan.py +0 -0
  525. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/process_hcl/graph_manager.py +0 -0
  526. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/process_hcl/graph_terragrunt_dependencies.py +0 -0
  527. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/process_hcl/process_terraform_file.py +0 -0
  528. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/process_hcl/risk_analyzing_terraform_plan.py +0 -0
  529. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/sync_workspaces/__init__.py +0 -0
  530. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/sync_workspaces/sync_terraform_workspaces.py +0 -0
  531. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/sync_workspaces/sync_terragrunt_workspaces.py +0 -0
  532. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/template_loader.py +0 -0
  533. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/utils/thoth_colors.py +0 -0
  534. {thothctl-0.25.2 → thothctl-0.25.4}/src/thothctl/wellcome_banner.py +0 -0
  535. {thothctl-0.25.2 → thothctl-0.25.4}/tests/conftest.py +0 -0
  536. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_agentcore_entrypoint.py +0 -0
  537. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_ai_apply_fix.py +0 -0
  538. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_ai_decision_engine.py +0 -0
  539. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_ai_fix_patterns.py +0 -0
  540. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_ai_memory.py +0 -0
  541. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_ai_orchestrator.py +0 -0
  542. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_ai_pr_decision.py +0 -0
  543. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_ai_safety_guard.py +0 -0
  544. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_aws_pricing_client.py +0 -0
  545. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_azure_devops_pr_comments.py +0 -0
  546. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_bedrock_pricing.py +0 -0
  547. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_cdk_inventory.py +0 -0
  548. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_cdk_language_selection.py +0 -0
  549. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_cfn_blast_radius.py +0 -0
  550. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_cfn_drift_detection.py +0 -0
  551. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_context_steering.py +0 -0
  552. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_cost_analyzer.py +0 -0
  553. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_cost_models.py +0 -0
  554. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_cost_policy_enforcement.py +0 -0
  555. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_cost_pr_comments.py +0 -0
  556. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_dashboard_loading_fix.py +0 -0
  557. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_dashboard_service.py +0 -0
  558. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_drift.py +0 -0
  559. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_drift_detection.py +0 -0
  560. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_ec2_pricing.py +0 -0
  561. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_generate_iac_codegen.py +0 -0
  562. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_generate_iac_context.py +0 -0
  563. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_generate_iac_prompts.py +0 -0
  564. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_generate_iac_service.py +0 -0
  565. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_generate_iac_validator.py +0 -0
  566. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_github_pr_comments.py +0 -0
  567. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_iac_cost_integration.py +0 -0
  568. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_init_ai_tools.py +0 -0
  569. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_init_template_params.py +0 -0
  570. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_inventory_pr_comments.py +0 -0
  571. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_kics_scanner.py +0 -0
  572. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_mermaid_edge_labels.py +0 -0
  573. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_new_cost_providers.py +0 -0
  574. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_opa_data_files.py +0 -0
  575. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_parallel_scan.py +0 -0
  576. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_platform_utils.py +0 -0
  577. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_pr_comment_publisher.py +0 -0
  578. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_provider_source_url_fix.py +0 -0
  579. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_provider_versions.py +0 -0
  580. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_scan_cfn_support.py +0 -0
  581. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_scan_command.py +0 -0
  582. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_scan_pr_comments.py +0 -0
  583. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_space_command.py +0 -0
  584. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_space_management.py +0 -0
  585. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_stack_optimizer.py +0 -0
  586. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_template_url_fix.py +0 -0
  587. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_terragrunt_parser.py +0 -0
  588. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_topology_generator.py +0 -0
  589. {thothctl-0.25.2 → thothctl-0.25.4}/tests/test_workflow_integration.py +0 -0
  590. {thothctl-0.25.2 → thothctl-0.25.4}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: thothctl
3
- Version: 0.25.2
3
+ Version: 0.25.4
4
4
  Summary: A CLI for Developer Control Plane. Accelerate your cloud IaC deployments.
5
5
  Project-URL: SourceCode, https://github.com/thothforge/thothctl
6
6
  Project-URL: HomePage, https://github.com/thothforge/thothctl
@@ -24,7 +24,7 @@ Requires-Dist: inquirer>=3.3.0
24
24
  Requires-Dist: json2html>=1.3.0
25
25
  Requires-Dist: junit2html>=30.1.3
26
26
  Requires-Dist: junitparser>=2.0.0
27
- Requires-Dist: mcp>=1.9.4
27
+ Requires-Dist: mcp>=2.0.0
28
28
  Requires-Dist: pre-commit>=3.7.1
29
29
  Requires-Dist: psutil
30
30
  Requires-Dist: pyfiglet>=1.0.2
@@ -8,6 +8,8 @@ ThothCTL integrates AI across the infrastructure lifecycle through three distinc
8
8
 
9
9
  The **AI SDLC** is the overarching framework — not a single command, but the governed lifecycle that all ThothCTL features plug into. It defines *when* and *how* AI assists at each phase of infrastructure development.
10
10
 
11
+ > 📖 **For the complete phase-by-phase guide** (enforcement modes, CI/CD integration, configuration, and detailed examples), see the [DevSecOps SDLC Guide](use_cases/devsecops_sdlc.md).
12
+
11
13
  ```mermaid
12
14
  %%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#e3f2fd','primaryTextColor':'#1565c0','primaryBorderColor':'#1976d2','lineColor':'#42a5f5','secondaryColor':'#fff3e0','tertiaryColor':'#f3e5f5','fontSize':'14px'}}}%%
13
15
  graph LR
@@ -226,7 +228,133 @@ Define the development environment for IaC projects. For example, native OS like
226
228
 
227
229
  ## Project
228
230
 
229
- IaC project, could be around a use case, blueprint, starter template published in your Catalog or default setup.
231
+ IaC project, could be around a use case, blueprint, starter template published in your Catalog or default setup.
232
+
233
+ ## Scaffold vs Blueprint vs Template
234
+
235
+ ThothCTL distinguishes three types of reusable project artifacts. Understanding the difference is critical for proper project lifecycle management.
236
+
237
+ ### Scaffold
238
+
239
+ A **scaffold** is an **empty starting structure** — folders, placeholder files, and configuration boilerplate that a team fills in with their own code. It defines *where* things go, not *what* they do.
240
+
241
+ | Property | Value |
242
+ |----------|-------|
243
+ | **Purpose** | Start a new project from scratch with correct structure |
244
+ | **Contains business logic** | ❌ No — only empty files and folder conventions |
245
+ | **Parameterized** | ✅ Template placeholders (`#{ProjectName}#`, `#{Region}#`) |
246
+ | **Requires prerequisites** | ❌ None — self-contained starting point |
247
+ | **ThothCTL command** | `thothctl init project --project-type <type>` |
248
+ | **Example** | `terraform-scaffold`, `cdk-scaffold`, `cloudformation-scaffold` |
249
+
250
+ ```
251
+ terraform-scaffold/ ← SCAFFOLD: empty structure
252
+ ├── .thothcf.toml # Project rules + naming conventions
253
+ ├── .pre-commit-config.yaml
254
+ ├── common/
255
+ │ ├── common.hcl # Boilerplate (provider config)
256
+ │ └── variables.tf # Empty variables file
257
+ ├── stacks/ # Empty — YOU add stacks here
258
+ ├── modules/ # Empty — YOU add modules here
259
+ └── README.md # Instructions for the team
260
+ ```
261
+
262
+ **Official Scaffolds:**
263
+
264
+ | Scaffold | Use Case |
265
+ |----------|----------|
266
+ | [terraform-terragrunt-scaffold](https://github.com/thothforge/terraform_terragrunt_scaffold_project) | Multi-environment Terragrunt |
267
+ | [terraform-scaffold](https://github.com/thothforge/terraform_project_scaffold) | Standard Terraform |
268
+ | [terraform-module-scaffold](https://github.com/thothforge/terraform_module_scaffold) | Reusable modules |
269
+ | [cdk-scaffold](https://github.com/thothforge/cdk_project_scaffold) | AWS CDK v2 (TypeScript/Python) |
270
+ | [cloudformation-scaffold](https://github.com/thothforge/cloudformation_project_scaffold) | CloudFormation / SAM |
271
+
272
+ ---
273
+
274
+ ### Blueprint
275
+
276
+ A **blueprint** is an **opinionated, pre-configured reference implementation** for a specific use case. It contains real constructs, working stacks, tests, CI/CD, and configuration-driven deployment. Users **configure and deploy** — they don't code from scratch.
277
+
278
+ | Property | Value |
279
+ |----------|-------|
280
+ | **Purpose** | Deploy a proven architecture for a specific domain |
281
+ | **Contains business logic** | ✅ Yes — working stacks, constructs, pipelines |
282
+ | **Parameterized** | ✅ YAML-driven configuration (environments, accounts, regions) |
283
+ | **Requires prerequisites** | ✅ Often needs IAM roles, networking, or other infra to exist |
284
+ | **Has tests** | ✅ Unit tests, cdk-nag checks, snapshot tests |
285
+ | **Has CI/CD** | ✅ Complete deployment pipeline |
286
+ | **ThothCTL command** | `thothctl project convert --make-template` (to create from existing) |
287
+ | **Example** | `cdkv2-devops-agent-blueprint`, `eks-platform-blueprint` |
288
+
289
+ ```
290
+ cdkv2-devops-agent-blueprint/ ← BLUEPRINT: working implementation
291
+ ├── .thothcf.toml
292
+ ├── lib/
293
+ │ ├── stacks/
294
+ │ │ ├── foundation/ # Real stack — KMS, S3, IAM baselines
295
+ │ │ ├── agent/ # Real stack — DevOps Agent Space
296
+ │ │ ├── platform/ # Real stack — VPC, ECS
297
+ │ │ └── application/ # Real stack — Lambda, DynamoDB
298
+ │ └── constructs/ # Reusable L2/L3 constructs
299
+ ├── skills/ # DevOps Agent skills (domain knowledge)
300
+ ├── project_configs/
301
+ │ └── environment_options.yaml # Configure accounts, regions, features
302
+ ├── test/ # cdk-nag + snapshot + unit tests
303
+ └── .github/workflows/deploy.yml # Full CI/CD pipeline
304
+ ```
305
+
306
+ **Key difference from a scaffold**: You **configure** a blueprint (edit YAML), you **code into** a scaffold (write IaC from scratch).
307
+
308
+ ---
309
+
310
+ ### Template
311
+
312
+ A **template** is what you get when you run `thothctl project convert --make-template` on a working project. It's a **parameterized, reusable version** of a real project — with placeholders for project-specific values.
313
+
314
+ | Property | Value |
315
+ |----------|-------|
316
+ | **Purpose** | Replicate proven patterns across teams |
317
+ | **Created from** | An existing project or blueprint |
318
+ | **Contains business logic** | ✅ Yes, but parameterized with `#{Placeholders}#` |
319
+ | **Published to** | Git registry (GitHub/GitLab), Backstage catalog |
320
+ | **ThothCTL command** | `thothctl project convert --make-template` (create) |
321
+ | | `thothctl init project --template-url <git-url>` (consume) |
322
+
323
+ **Lifecycle**: Project → `convert --make-template` → Template → `init project` → New Project
324
+
325
+ ---
326
+
327
+ ### Relationship Diagram
328
+
329
+ ```mermaid
330
+ %%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#3b82f6','primaryTextColor':'#ffffff','lineColor':'#94a3b8','fontSize':'14px'}}}%%
331
+ graph LR
332
+ S["🏗️ Scaffold<br/><small>Empty structure</small>"]:::scaffoldNode
333
+ B["📐 Blueprint<br/><small>Reference implementation</small>"]:::blueprintNode
334
+ T["📦 Template<br/><small>Parameterized reusable</small>"]:::templateNode
335
+ P["🚀 Project<br/><small>Your working code</small>"]:::projectNode
336
+
337
+ S -->|"init project"| P
338
+ B -->|"configure & deploy"| P
339
+ P -->|"convert --make-template"| T
340
+ T -->|"init project --template-url"| P
341
+ B -->|"convert --make-template"| T
342
+
343
+ classDef scaffoldNode fill:#f59e0b,stroke:#d97706,stroke-width:2px,color:#fff
344
+ classDef blueprintNode fill:#8b5cf6,stroke:#7c3aed,stroke-width:2px,color:#fff
345
+ classDef templateNode fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff
346
+ classDef projectNode fill:#3b82f6,stroke:#2563eb,stroke-width:2px,color:#fff
347
+ ```
348
+
349
+ ### Quick Comparison
350
+
351
+ | | Scaffold | Blueprint | Template |
352
+ |---|---|---|---|
353
+ | **Start coding?** | ✅ Write everything | ❌ Configure YAML | ✅ Fill placeholders |
354
+ | **Has working code?** | ❌ Empty | ✅ Complete | ✅ Parameterized |
355
+ | **Domain-specific?** | ❌ Generic | ✅ Specific use case | ✅ From a real project |
356
+ | **Deploy immediately?** | ❌ Need to add code | ✅ After configuration | ✅ After init |
357
+ | **Use when** | Starting fresh | Adopting proven architecture | Replicating patterns |
230
358
 
231
359
  ## Space
232
360
 
@@ -125,6 +125,8 @@ ThothCTL aligns with IDP business objectives through five core principles:
125
125
  - [terraform-scaffold](https://github.com/thothforge/terraform_project_scaffold) - Standard Terraform projects
126
126
  - [terragrunt-scaffold](https://github.com/thothforge/terragrunt_project_scaffold) - Multi-environment Terragrunt
127
127
  - [terraform-module-scaffold](https://github.com/thothforge/terraform_module_scaffold) - Reusable modules
128
+ - [cdk-scaffold](https://github.com/thothforge/cdk_project_scaffold) - AWS CDK v2 (TypeScript/Python)
129
+ - [cloudformation-scaffold](https://github.com/thothforge/cloudformation_project_scaffold) - CloudFormation / SAM
128
130
 
129
131
  **Commands:** `thothctl init env`, `thothctl init space`, `thothctl init project`
130
132
 
@@ -1,6 +1,21 @@
1
1
  # Roadmap: ThothCTL as a Framework-Defined Infrastructure (FdI) Platform
2
2
 
3
- ## Vision
3
+ !!! warning "Deprecated — Superseded by 2026 Roadmap"
4
+ This document reflects the **original FdI roadmap** (v0.16–v0.22 phases) and is no longer the active planning document.
5
+
6
+ **The current roadmap is**: `thothctl_roadmap_2026.md` (in the ThothForge root, outside this docs site) — integrates PlatformCon 2026 insights, competitive analysis, and updated implementation status.
7
+
8
+ Key differences:
9
+
10
+ - Phase numbering has changed (this doc's Phase 1–4 ≠ the 2026 roadmap's Phase 1–6)
11
+ - The 2026 roadmap reflects what is actually implemented (Intent-to-IaC, Workflow Engine partially done)
12
+ - New priorities added: Agent Governance, MCP Gateway, Compliance Scoring, Context Lake
13
+
14
+ This file is preserved for historical context only. Do not use it for planning.
15
+
16
+ ---
17
+
18
+ ## Vision (Historical)
4
19
 
5
20
  Transform ThothCTL from an IaC management CLI into an **IaC-native Framework-Defined Infrastructure platform** where business intent and application conventions automatically produce production-ready infrastructure code — without requiring developers to write Terraform manually.
6
21
 
@@ -693,6 +693,8 @@ Git-based templates for project creation.
693
693
  - [terraform-scaffold](https://github.com/thothforge/terraform-scaffold)
694
694
  - [terragrunt-scaffold](https://github.com/thothforge/terragrunt-scaffold)
695
695
  - [tofu-scaffold](https://github.com/thothforge/tofu-scaffold)
696
+ - [cdk-scaffold](https://github.com/thothforge/cdk-scaffold) - AWS CDK v2
697
+ - [cloudformation-scaffold](https://github.com/thothforge/cloudformation-scaffold) - CloudFormation / SAM
696
698
 
697
699
  **Scaffold Structure:**
698
700
  ```
@@ -95,6 +95,8 @@ thothctl init project --project-name my-infra --reuse --space lab-github
95
95
  # - terraform-scaffold
96
96
  # - terragrunt-scaffold
97
97
  # - tofu-scaffold
98
+ # - cdk-scaffold
99
+ # - cloudformation-scaffold
98
100
  ```
99
101
 
100
102
  ### 3. DevSecOps Workflow
@@ -136,6 +136,8 @@ ThothCTL exposes these capabilities through MCP:
136
136
  | `get_version` | Get ThothCTL version | "What version of ThothCTL is installed?" |
137
137
  | `upgrade_thothctl` | Upgrade ThothCTL | "Upgrade ThothCTL to latest version" |
138
138
 
139
+ > 📖 The `workflow_devsecops` tool orchestrates the full DevSecOps SDLC pipeline. For detailed phase descriptions, enforcement modes, and configuration, see the [DevSecOps SDLC Guide](devsecops_sdlc.md).
140
+
139
141
  ---
140
142
 
141
143
  ## Component 2: Scaffold Templates
@@ -1,5 +1,12 @@
1
1
  # Implementation Plan: DevSecOps Workflow Abstraction
2
2
 
3
+ !!! success "Implementation Complete"
4
+ This workflow has been fully implemented. The `thothctl workflow devsecops` command is available since v0.25.x.
5
+ For usage documentation, see the **[DevSecOps SDLC Guide](../devsecops_sdlc.md)** — the single source of truth for all DevSecOps workflow phases, commands, and configuration.
6
+ For command reference, see [workflow devsecops command](../../commands/workflow/workflow_devsecops.md).
7
+
8
+ ---
9
+
3
10
  ## Objective
4
11
 
5
12
  Provide two abstraction layers over the existing DevSecOps SDLC stages:
@@ -707,7 +714,7 @@ Decision matrix for project type → command variations:
707
714
 
708
715
  | # | Task | Type | Effort |
709
716
  |---|------|------|--------|
710
- | 24 | Workflow YAML config support (`.thothcf.toml` [workflow] section) | Feature | M |
717
+ | 24 | Workflow YAML config support (`.thothcf.toml` \[workflow\] section) | Feature | M |
711
718
  | 25 | `--post-to-pr` support on workflow command | Feature | S |
712
719
  | 26 | JSON/SARIF output for workflow results | Feature | M |
713
720
  | 27 | GitHub Actions reusable workflow template | Docs | M |
@@ -137,7 +137,7 @@ thothctl workflow devsecops --phase deploy # 🚀 Enforcement gate
137
137
  thothctl workflow devsecops --phase monitor # 📊 Drift detection
138
138
  ```
139
139
 
140
- 📖 [Workflow Documentation](framework/commands/workflow/workflow_devsecops.md)
140
+ 📖 [Workflow Documentation](framework/commands/workflow/workflow_devsecops.md) | [Complete DevSecOps SDLC Guide](framework/use_cases/devsecops_sdlc.md)
141
141
 
142
142
  ---
143
143
 
@@ -218,6 +218,8 @@ thothctl init project -p my-infra --reuse --space my-space
218
218
  | [terraform-terragrunt-scaffold](https://github.com/thothforge/terraform_terragrunt_scaffold_project) | Multi-environment Terragrunt |
219
219
  | [terraform-scaffold](https://github.com/thothforge/terraform_project_scaffold) | Standard Terraform |
220
220
  | [terraform-module-scaffold](https://github.com/thothforge/terraform_module_scaffold) | Reusable modules |
221
+ | [cdk-scaffold](https://github.com/thothforge/cdk_project_scaffold) | AWS CDK v2 (TypeScript/Python) |
222
+ | [cloudformation-scaffold](https://github.com/thothforge/cloudformation_project_scaffold) | CloudFormation / SAM |
221
223
 
222
224
  ---
223
225
 
@@ -95,7 +95,7 @@ nav:
95
95
  - Software Architecture: framework/software_architecture.md
96
96
  - Policy as Code: framework/policy_as_code.md
97
97
  - Concepts: framework/concepts.md
98
- - Infrastructure Composition: framework/infrasctructure_composition.md
98
+ - Infrastructure Composition: framework/infrastructure_composition.md
99
99
  - Space Configuration: framework/space_configuration.md
100
100
  - Cross-Platform Support: framework/cross_platform_support.md
101
101
  - Troubleshooting:
@@ -34,7 +34,7 @@ dependencies = [
34
34
  "psutil",
35
35
  "requests",
36
36
  "cryptography>=41.0.0",
37
- "mcp>=1.9.4",
37
+ "mcp>=2.0.0",
38
38
  "fastapi>=0.104.0",
39
39
  "uvicorn>=0.24.0",
40
40
  # Windows-specific dependencies
@@ -35,6 +35,7 @@ class CheckIaCCommand(ClickCommand):
35
35
  "cost-analysis",
36
36
  "drift",
37
37
  "stack-optimizer",
38
+ "rules",
38
39
  ]
39
40
 
40
41
  def validate(self, **kwargs) -> bool:
@@ -101,6 +102,10 @@ class CheckIaCCommand(ClickCommand):
101
102
  elif kwargs["check_type"] == "stack-optimizer":
102
103
  result = self._run_stack_optimizer(directory=directory, **kwargs)
103
104
  return result
105
+ elif kwargs["check_type"] == "rules":
106
+ self.ui.print_info("📏 Running organizational rules evaluation...")
107
+ result = self._run_rules_evaluation(directory=directory, **kwargs)
108
+ return result
104
109
 
105
110
  self.logger.debug("Check completed successfully")
106
111
  return True
@@ -2446,6 +2451,104 @@ new vis.Network(container, data, options);
2446
2451
  }
2447
2452
  return color_map.get(criticality, "white")
2448
2453
 
2454
+ def _run_rules_evaluation(self, directory: str, **kwargs) -> bool:
2455
+ """Run organizational rules evaluation using OPA/conftest.
2456
+
2457
+ Compiles .thothcf.toml [rules] into Rego policies, then delegates
2458
+ evaluation to the existing OPA/conftest scanner. No custom evaluation
2459
+ engine — OPA is the single policy framework.
2460
+ """
2461
+ try:
2462
+ from ....services.check.rules_compiler import RulesCompiler
2463
+ from ....services.scan.scanners.opa import OPAScanner
2464
+
2465
+ # Step 1: Compile TOML rules → Rego policies
2466
+ compiler = RulesCompiler()
2467
+ compiled_dir = compiler.compile(directory)
2468
+
2469
+ if not compiled_dir:
2470
+ self.ui.print_warning(
2471
+ "No rules found in .thothcf.toml [rules] section. "
2472
+ "Add [[rules.naming]], [[rules.tagging]], "
2473
+ "[[rules.security]], or [[rules.architecture]] sections."
2474
+ )
2475
+ return True
2476
+
2477
+ self.ui.print_info(
2478
+ f"📏 Compiled rules to Rego policies in {compiled_dir}"
2479
+ )
2480
+
2481
+ # Step 2: Run conftest with the compiled policies
2482
+ scanner = OPAScanner()
2483
+ reports_dir = kwargs.get("reports_dir", "Reports")
2484
+ result = scanner.scan(
2485
+ directory=directory,
2486
+ reports_dir=reports_dir,
2487
+ options={
2488
+ "mode": "conftest",
2489
+ "policy_dir": compiled_dir,
2490
+ },
2491
+ )
2492
+
2493
+ # Step 3: Report results
2494
+ exit_code = result.get("exit_code", 0)
2495
+ report_path = result.get("json_report", "")
2496
+
2497
+ if exit_code == 0:
2498
+ self.ui.print_success(
2499
+ "✅ All organizational rules passed!"
2500
+ )
2501
+ return True
2502
+
2503
+ # Parse conftest JSON output for structured display
2504
+ if report_path and os.path.exists(report_path):
2505
+ import json
2506
+
2507
+ with open(report_path, "r") as f:
2508
+ findings = json.load(f)
2509
+
2510
+ failures = []
2511
+ warnings = []
2512
+ for entry in findings:
2513
+ for failure in entry.get("failures", []):
2514
+ failures.append(failure.get("msg", ""))
2515
+ for warning in entry.get("warnings", []):
2516
+ warnings.append(warning.get("msg", ""))
2517
+
2518
+ if failures or warnings:
2519
+ table = Table(
2520
+ title="📏 Rule Violations",
2521
+ box=box.ROUNDED,
2522
+ show_lines=True,
2523
+ )
2524
+ table.add_column("Severity")
2525
+ table.add_column("Message")
2526
+
2527
+ for msg in failures:
2528
+ table.add_row("[red]ERROR[/red]", msg)
2529
+ for msg in warnings:
2530
+ table.add_row("[yellow]WARN[/yellow]", msg)
2531
+
2532
+ self.console.print(table)
2533
+ self.console.print(
2534
+ f"\n[bold]Summary:[/bold] "
2535
+ f"[red]{len(failures)} failure(s)[/red], "
2536
+ f"[yellow]{len(warnings)} warning(s)[/yellow]"
2537
+ )
2538
+
2539
+ if exit_code != 0:
2540
+ self.ui.print_error(
2541
+ "❌ Rule evaluation failed — policy violations found."
2542
+ )
2543
+ return False
2544
+
2545
+ return True
2546
+
2547
+ except Exception as e:
2548
+ self.logger.error(f"Rules evaluation failed: {e}")
2549
+ self.ui.print_error(f"Failed to run rules evaluation: {str(e)}")
2550
+ return False
2551
+
2449
2552
  def _run_stack_optimizer(self, directory: str, **kwargs) -> bool:
2450
2553
  """Run stack optimizer to deduplicate overlapping terragrunt filters."""
2451
2554
  import sys
@@ -2539,7 +2642,7 @@ cli = CheckIaCCommand.as_click_command(
2539
2642
  click.option(
2540
2643
  "-type",
2541
2644
  "--check_type",
2542
- help="tfplan: analyze plans | deps: view dependencies | blast-radius: impact analysis | cost-analysis: estimate costs | drift: detect infrastructure drift | stack-optimizer: deduplicate overlapping stacks",
2645
+ help="tfplan: analyze plans | deps: view dependencies | blast-radius: impact analysis | cost-analysis: estimate costs | drift: detect infrastructure drift | stack-optimizer: deduplicate overlapping stacks | rules: evaluate organizational rules",
2543
2646
  type=click.Choice(
2544
2647
  [
2545
2648
  "tfplan",
@@ -2548,6 +2651,7 @@ cli = CheckIaCCommand.as_click_command(
2548
2651
  "cost-analysis",
2549
2652
  "drift",
2550
2653
  "stack-optimizer",
2654
+ "rules",
2551
2655
  ],
2552
2656
  case_sensitive=True,
2553
2657
  ),
@@ -130,6 +130,11 @@ class ProjectInitCommand(ClickCommand):
130
130
  # If space is provided, show info and get VCS provider
131
131
  vcs_provider = version_control_systems_service
132
132
  vcs_params = {}
133
+
134
+ # Auto-detect VCS from flags: --github-org implies github
135
+ if github_username and vcs_provider != "github":
136
+ vcs_provider = "github"
137
+
133
138
  if space:
134
139
  self.ui.print_info(f"🌌 Using space: {space}")
135
140
  space_vcs = get_space_vcs_provider(space)
@@ -140,7 +145,7 @@ class ProjectInitCommand(ClickCommand):
140
145
  # Pass the appropriate parameters based on VCS provider
141
146
  if vcs_provider == "azure_repos" and az_org_name:
142
147
  vcs_params["az_org_name"] = az_org_name
143
- elif vcs_provider == "github" and github_username:
148
+ elif vcs_provider == "github":
144
149
  vcs_params["github_username"] = github_username
145
150
 
146
151
  # If reuse is enabled, first let user select template before creating project
@@ -417,65 +422,38 @@ class ProjectInitCommand(ClickCommand):
417
422
  token = None
418
423
  username = None
419
424
 
420
- # Try to get credentials from space first
421
- try:
422
- credentials, _ = get_credentials_with_password(space, "vcs")
423
-
424
- if credentials.get("type") == "github":
425
- token = credentials.get("token")
426
- username = credentials.get("username")
427
- self.ui.print_info(
428
- f"✅ Using GitHub credentials from space '{space}'"
429
- )
430
- else:
431
- self.ui.print_warning(
432
- f"Space '{space}' has non-GitHub VCS credentials"
433
- )
425
+ # Try to get credentials from space first (only if space is set)
426
+ if space:
427
+ try:
428
+ credentials, _ = get_credentials_with_password(space, "vcs")
434
429
 
435
- except FileNotFoundError:
436
- self.ui.print_info(f"No GitHub credentials found for space '{space}'")
430
+ if credentials.get("type") == "github":
431
+ token = credentials.get("token")
432
+ username = credentials.get("username")
433
+ self.ui.print_info(
434
+ f"✅ Using GitHub credentials from space '{space}'"
435
+ )
436
+ else:
437
+ self.ui.print_warning(
438
+ f"Space '{space}' has non-GitHub VCS credentials"
439
+ )
437
440
 
438
- # Ask user if they want to set up credentials
439
- if self.ui.confirm(
440
- "Would you like to set up GitHub credentials for this space?"
441
- ):
442
- username = input("Enter GitHub username or organization name: ")
441
+ except FileNotFoundError:
443
442
  self.ui.print_info(
444
- "You'll need a Personal Access Token with appropriate permissions"
445
- )
446
- token = getpass.getpass("Enter your GitHub Personal Access Token: ")
447
-
448
- # Create and save credentials
449
- credentials = {
450
- "type": "github",
451
- "username": username,
452
- "token": token,
453
- }
454
-
455
- encryption_password = getpass.getpass(
456
- "Enter a password to encrypt your credentials: "
443
+ f"No GitHub credentials found for space '{space}'"
457
444
  )
445
+ else:
446
+ self.ui.print_info(
447
+ "No space configured. Enter GitHub credentials directly."
448
+ )
458
449
 
459
- try:
460
- save_credentials(
461
- space_name=space,
462
- credentials=credentials,
463
- credential_type="vcs",
464
- password=encryption_password,
465
- )
466
- self.ui.print_success(
467
- "🔒 GitHub credentials saved securely for future use"
468
- )
469
- except Exception as e:
470
- self.ui.print_error(f"Failed to save credentials: {e}")
471
- # Continue without saving, use credentials for this session only
472
- else:
473
- # User declined to set up credentials, try with public access
474
- self.ui.print_info("Attempting to access public repositories...")
475
- username = input(
476
- "Enter GitHub username or organization name for public repositories: "
477
- )
478
- # token remains None for public access
450
+ # If no credentials from space, default to thothforge public org
451
+ if not username:
452
+ # Priority: --github-username flag > thothforge default
453
+ username = kwargs.get("github_username") or "thothforge"
454
+ self.ui.print_info(
455
+ f"📦 Using GitHub template source: github.com/{username}"
456
+ )
479
457
 
480
458
  if not username:
481
459
  self.ui.print_error("GitHub username is required")
@@ -664,9 +642,9 @@ cli = ProjectInitCommand.as_click_command(help="Initialize a new project")(
664
642
  click.option(
665
643
  "-vcss",
666
644
  "--version-control-systems-service",
667
- default="azure_repos",
645
+ default="github",
668
646
  type=click.Choice(["azure_repos", "github", "gitlab"], case_sensitive=True),
669
- help="The Version Control System Service for you IDP",
647
+ help="The Version Control System Service for your IDP (default: github)",
670
648
  ),
671
649
  click.option(
672
650
  "-reuse",
@@ -682,9 +660,10 @@ cli = ProjectInitCommand.as_click_command(help="Initialize a new project")(
682
660
  default=None,
683
661
  ),
684
662
  click.option(
685
- "-gh-user",
686
- "--github-username",
687
- help="GitHub username or organization (for GitHub)",
663
+ "-gh-org",
664
+ "--github-org",
665
+ "github_username",
666
+ help="GitHub organization or username for templates (default: thothforge)",
688
667
  default=None,
689
668
  ),
690
669
  click.option(
@@ -58,9 +58,13 @@ def get_repos_patterns(
58
58
 
59
59
  repos = []
60
60
  for repo in repos_data:
61
+ # Normalize: treat hyphens and underscores as equivalent for matching
62
+ normalized_name = repo["name"].replace("-", "_")
61
63
  if any(
62
- repo["name"].startswith(prefix) for prefix in allowed_pattern_prefixes
63
- ) and any(repo["name"].endswith(suffix) for suffix in allowed_pattern_suffixes):
64
+ normalized_name.startswith(prefix) for prefix in allowed_pattern_prefixes
65
+ ) and any(
66
+ normalized_name.endswith(suffix) for suffix in allowed_pattern_suffixes
67
+ ):
64
68
  repos.append(
65
69
  {
66
70
  "Name": repo["name"],
@@ -3,8 +3,11 @@
3
3
  allowed_pattern_prefixes = [
4
4
  "terraform_",
5
5
  "cdkv2_",
6
+ "cdkv2-",
6
7
  "data_cdkv2_",
7
8
  "terragrunt_",
9
+ "cloudformation_",
10
+ "cloudformation-",
8
11
  "demo_",
9
12
  ]
10
13
  allowed_pattern_suffixes = [
@@ -13,4 +16,7 @@ allowed_pattern_suffixes = [
13
16
  "_template",
14
17
  "_blueprint",
15
18
  "_scaffold",
19
+ "-blueprint",
20
+ "-scaffold",
21
+ "-template",
16
22
  ]