thothctl 0.22.2__tar.gz → 0.23.0__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 (530) hide show
  1. {thothctl-0.22.2 → thothctl-0.23.0}/PKG-INFO +1 -1
  2. thothctl-0.23.0/docs/framework/commands/document/mermaid_examples.md +350 -0
  3. thothctl-0.23.0/docs/framework/commands/document/mermaid_quickref.md +72 -0
  4. thothctl-0.23.0/docs/framework/commands/generate/generate_iac.md +227 -0
  5. thothctl-0.23.0/docs/framework/concepts.md +297 -0
  6. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/policy_as_code.md +5 -5
  7. thothctl-0.23.0/docs/framework/specs/phase1_intent_to_iac.md +380 -0
  8. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/README.md +7 -7
  9. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/ai_dlc.md +11 -11
  10. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/devsecops_quickstart.md +2 -2
  11. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/devsecops_sdlc.md +402 -62
  12. {thothctl-0.22.2 → thothctl-0.23.0}/docs/stylesheets/extra.css +39 -2
  13. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/iac.py +46 -2
  14. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/unified_cost_report.py +28 -18
  15. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/dashboard/data_loader.py +88 -9
  16. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/schema_compatibility_service.py +30 -26
  17. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/dashboard.html +221 -12
  18. thothctl-0.23.0/src/thothctl/version.py +2 -0
  19. thothctl-0.22.2/docs/framework/concepts.md +0 -77
  20. thothctl-0.22.2/src/thothctl/version.py +0 -2
  21. {thothctl-0.22.2 → thothctl-0.23.0}/.devcontainer/Dockerfile +0 -0
  22. {thothctl-0.22.2 → thothctl-0.23.0}/.devcontainer/README.md +0 -0
  23. {thothctl-0.22.2 → thothctl-0.23.0}/.devcontainer/devcontainer.json +0 -0
  24. {thothctl-0.22.2 → thothctl-0.23.0}/.github/workflows/docs.yml +0 -0
  25. {thothctl-0.22.2 → thothctl-0.23.0}/.github/workflows/python-publish.yml +0 -0
  26. {thothctl-0.22.2 → thothctl-0.23.0}/.gitignore +0 -0
  27. {thothctl-0.22.2 → thothctl-0.23.0}/.pre-commit-config.yaml +0 -0
  28. {thothctl-0.22.2 → thothctl-0.23.0}/.readthedocs.yaml +0 -0
  29. {thothctl-0.22.2 → thothctl-0.23.0}/Dockerfile +0 -0
  30. {thothctl-0.22.2 → thothctl-0.23.0}/LICENSE +0 -0
  31. {thothctl-0.22.2 → thothctl-0.23.0}/README.md +0 -0
  32. {thothctl-0.22.2 → thothctl-0.23.0}/__init__.py +0 -0
  33. {thothctl-0.22.2 → thothctl-0.23.0}/docs/catalog/catalog-info.yaml +0 -0
  34. {thothctl-0.22.2 → thothctl-0.23.0}/docs/dashboard/README.md +0 -0
  35. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/ai-review/README.md +0 -0
  36. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/ai-review/agent_specifications.md +0 -0
  37. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/ai-review/agentcore.md +0 -0
  38. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/blast-radius.md +0 -0
  39. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/check_environment.md +0 -0
  40. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/check_iac.md +0 -0
  41. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/check_overview.md +0 -0
  42. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/check_project_iac.md +0 -0
  43. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/check_space.md +0 -0
  44. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/cost-analysis-quick-reference.md +0 -0
  45. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/cost-analysis.md +0 -0
  46. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/customizing_rules.md +0 -0
  47. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/deps-advanced.md +0 -0
  48. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/deps.md +0 -0
  49. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/drift-detection.md +0 -0
  50. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/check/plan.md +0 -0
  51. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/document/customizing_docs.md +0 -0
  52. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/document/document_iac.md +0 -0
  53. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/document/document_overview.md +0 -0
  54. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/document/iac.md +0 -0
  55. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/document/use_cases.md +0 -0
  56. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/generate/generate_components.md +0 -0
  57. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/generate/generate_stacks.md +0 -0
  58. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/init/init.md +0 -0
  59. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/init/init_space.md +0 -0
  60. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/CHANGELOG.md +0 -0
  61. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/frameworks/terraform.md +0 -0
  62. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/frameworks/terragrunt.md +0 -0
  63. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/iac.md +0 -0
  64. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/inventory_iac.md +0 -0
  65. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/inventory/inventory_overview.md +0 -0
  66. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/list/list_overview.md +0 -0
  67. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/list/list_projects.md +0 -0
  68. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/list/list_spaces.md +0 -0
  69. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/mcp/mcp.md +0 -0
  70. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/iac.md +0 -0
  71. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/project_cleanup.md +0 -0
  72. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/project_convert.md +0 -0
  73. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/project_overview.md +0 -0
  74. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/project_upgrade.md +0 -0
  75. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/project/use_cases.md +0 -0
  76. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/remove/remove_overview.md +0 -0
  77. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/remove/remove_project.md +0 -0
  78. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/remove/remove_space.md +0 -0
  79. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/scan/iac.md +0 -0
  80. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/scan/scan_iac.md +0 -0
  81. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/scan/scan_overview.md +0 -0
  82. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/scan/use_cases.md +0 -0
  83. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/commands/upgrade/upgrade_overview.md +0 -0
  84. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/cross_platform_support.md +0 -0
  85. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/framework_architecture.md +0 -0
  86. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/infrasctructure_composition.md +0 -0
  87. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/roadmap_fdi.md +0 -0
  88. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/software_architecture.md +0 -0
  89. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/space_configuration.md +0 -0
  90. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/check_command.md +0 -0
  91. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/inventory_command.md +0 -0
  92. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/platform_engineering_templates.md +0 -0
  93. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/space_management.md +0 -0
  94. {thothctl-0.22.2 → thothctl-0.23.0}/docs/framework/use_cases/tasks/create_template.md +0 -0
  95. {thothctl-0.22.2 → thothctl-0.23.0}/docs/iac_devsecops_use_case.md +0 -0
  96. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/automate_tasks_command.png +0 -0
  97. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/commnad_init.png +0 -0
  98. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/create_component.gif +0 -0
  99. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/create_inventory.gif +0 -0
  100. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/doc_command.png +0 -0
  101. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/document_project_code.gif +0 -0
  102. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/framework/thothforge-framework.svg +0 -0
  103. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/framework/thothfr.png +0 -0
  104. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/iacpeerbot_summary.png +0 -0
  105. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/icon-light.png +0 -0
  106. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/icon.png +0 -0
  107. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/init_project.gif +0 -0
  108. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/inventory_command.png +0 -0
  109. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/notification_img.png +0 -0
  110. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/report_dependencies.png +0 -0
  111. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/report_dependencies_summary.png +0 -0
  112. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/restore_inventory_version.gif +0 -0
  113. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/reuse_project_pattern.gif +0 -0
  114. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/scan_code.gif +0 -0
  115. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/scan_command.png +0 -0
  116. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/stable/scan_report_example.png +0 -0
  117. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/sync_wk_command.png +0 -0
  118. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/transform_command.png +0 -0
  119. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/update_inventory_version.gif +0 -0
  120. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/validate_command.png +0 -0
  121. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/validate_environment.gif +0 -0
  122. {thothctl-0.22.2 → thothctl-0.23.0}/docs/img/validate_project.gif +0 -0
  123. {thothctl-0.22.2 → thothctl-0.23.0}/docs/includes/abbreviations.md +0 -0
  124. {thothctl-0.22.2 → thothctl-0.23.0}/docs/index.md +0 -0
  125. {thothctl-0.22.2 → thothctl-0.23.0}/docs/installation/devcontainer_setup.md +0 -0
  126. {thothctl-0.22.2 → thothctl-0.23.0}/docs/installation/linux_installation.md +0 -0
  127. {thothctl-0.22.2 → thothctl-0.23.0}/docs/installation/windows_installation.md +0 -0
  128. {thothctl-0.22.2 → thothctl-0.23.0}/docs/javascripts/tablesort.js +0 -0
  129. {thothctl-0.22.2 → thothctl-0.23.0}/docs/mcp.md +0 -0
  130. {thothctl-0.22.2 → thothctl-0.23.0}/docs/navigation.md +0 -0
  131. {thothctl-0.22.2 → thothctl-0.23.0}/docs/quick_start.md +0 -0
  132. {thothctl-0.22.2 → thothctl-0.23.0}/docs/requirements.txt +0 -0
  133. {thothctl-0.22.2 → thothctl-0.23.0}/docs/stylesheets/extra-enhanced.css +0 -0
  134. {thothctl-0.22.2 → thothctl-0.23.0}/docs/telemetry.md +0 -0
  135. {thothctl-0.22.2 → thothctl-0.23.0}/docs/template_engine/cli_commands_audit.md +0 -0
  136. {thothctl-0.22.2 → thothctl-0.23.0}/docs/template_engine/for_developers.md +0 -0
  137. {thothctl-0.22.2 → thothctl-0.23.0}/docs/template_engine/for_platform_engineers.md +0 -0
  138. {thothctl-0.22.2 → thothctl-0.23.0}/docs/template_engine/github_templates.md +0 -0
  139. {thothctl-0.22.2 → thothctl-0.23.0}/docs/template_engine/template_engine.md +0 -0
  140. {thothctl-0.22.2 → thothctl-0.23.0}/docs/troubleshooting/linux_troubleshooting.md +0 -0
  141. {thothctl-0.22.2 → thothctl-0.23.0}/docs/troubleshooting/macos_troubleshooting.md +0 -0
  142. {thothctl-0.22.2 → thothctl-0.23.0}/docs/troubleshooting/troubleshooting.md +0 -0
  143. {thothctl-0.22.2 → thothctl-0.23.0}/docs/troubleshooting/windows_troubleshooting.md +0 -0
  144. {thothctl-0.22.2 → thothctl-0.23.0}/mkdocs.yaml +0 -0
  145. {thothctl-0.22.2 → thothctl-0.23.0}/pyproject.toml +0 -0
  146. {thothctl-0.22.2 → thothctl-0.23.0}/scripts/run_mcp_server.sh +0 -0
  147. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/__init__.py +0 -0
  148. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/application/__init__.py +0 -0
  149. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/autocomplete.py +0 -0
  150. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/cli.py +0 -0
  151. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/__init__.py +0 -0
  152. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/__init__.py +0 -0
  153. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/cli.py +0 -0
  154. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/__init__.py +0 -0
  155. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/analyze.py +0 -0
  156. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/apply_fix.py +0 -0
  157. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/configure.py +0 -0
  158. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/configure_decisions.py +0 -0
  159. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/decide.py +0 -0
  160. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/history.py +0 -0
  161. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/improve.py +0 -0
  162. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/orchestrate.py +0 -0
  163. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/override.py +0 -0
  164. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/report.py +0 -0
  165. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/ai_review/commands/serve.py +0 -0
  166. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/__init__.py +0 -0
  167. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/cli.py +0 -0
  168. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/__init__.py +0 -0
  169. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/environment.py +0 -0
  170. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/project/__init__.py +0 -0
  171. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/project/iac.py +0 -0
  172. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/project.py +0 -0
  173. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/check/commands/space.py +0 -0
  174. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/dashboard/__init__.py +0 -0
  175. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/dashboard/cli.py +0 -0
  176. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/dashboard/commands/__init__.py +0 -0
  177. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/dashboard/commands/launch.py +0 -0
  178. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/document/__init__.py +0 -0
  179. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/document/cli.py +0 -0
  180. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/document/commands/__init__.py +0 -0
  181. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/document/commands/iac.py +0 -0
  182. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/generate/__init__.py +0 -0
  183. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/generate/cli.py +0 -0
  184. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/generate/commands/__init__.py +0 -0
  185. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/generate/commands/component.py +0 -0
  186. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/generate/commands/stacks.py +0 -0
  187. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/__init__.py +0 -0
  188. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/cli.py +0 -0
  189. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/commands/__init__.py +0 -0
  190. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/commands/env.py +0 -0
  191. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/commands/project.py +0 -0
  192. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/commands/space.py +0 -0
  193. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/init/commands/template.py +0 -0
  194. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/inventory/__init__.py +0 -0
  195. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/inventory/cli.py +0 -0
  196. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/inventory/commands/__init__.py +0 -0
  197. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/inventory/commands/check.py +0 -0
  198. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/inventory/commands/iac.py +0 -0
  199. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/__init__.py +0 -0
  200. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/cli.py +0 -0
  201. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/commands/__init__.py +0 -0
  202. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/commands/projects.py +0 -0
  203. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/commands/spaces.py +0 -0
  204. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/list/commands/templates.py +0 -0
  205. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/__init__.py +0 -0
  206. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/cli.py +0 -0
  207. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/commands/__init__.py +0 -0
  208. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/commands/register.py +0 -0
  209. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/commands/server.py +0 -0
  210. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/commands/status.py +0 -0
  211. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/mcp/commands/stop.py +0 -0
  212. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/__init__.py +0 -0
  213. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/cli.py +0 -0
  214. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/commands/__init__.py +0 -0
  215. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/commands/bootstrap.py +0 -0
  216. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/commands/cleanup.py +0 -0
  217. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/commands/convert.py +0 -0
  218. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/project/commands/upgrade.py +0 -0
  219. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/remove/__init__.py +0 -0
  220. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/remove/cli.py +0 -0
  221. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/remove/project.py +0 -0
  222. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/remove/space.py +0 -0
  223. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/scan/__init__.py +0 -0
  224. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/scan/cli.py +0 -0
  225. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/scan/commands/__init__.py +0 -0
  226. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/scan/commands/iac.py +0 -0
  227. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/__init__.py +0 -0
  228. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/cli.py +0 -0
  229. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/commands/__init__.py +0 -0
  230. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/commands/activate.py +0 -0
  231. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/commands/show.py +0 -0
  232. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/space/commands/update.py +0 -0
  233. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/commands/upgrade/cli.py +0 -0
  234. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/.thothcf.setup.toml +0 -0
  235. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/.thothcf_home.toml +0 -0
  236. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/.thothcf_module.toml +0 -0
  237. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/.thothcf_project.toml +0 -0
  238. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/.thothcf_template_parameters.toml +0 -0
  239. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/__init__.py +0 -0
  240. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/common.py +0 -0
  241. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/common/terragrunt/.thothcf_project.toml +0 -0
  242. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/__init__.py +0 -0
  243. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/constants.py +0 -0
  244. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/default_values.py +0 -0
  245. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/defaults.py +0 -0
  246. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/models.py +0 -0
  247. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/settings.py +0 -0
  248. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/template_config.py +0 -0
  249. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/template_configs.py +0 -0
  250. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/templates.py +0 -0
  251. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/config/validation.py +0 -0
  252. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/__init__.py +0 -0
  253. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/cli_ui.py +0 -0
  254. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/commands.py +0 -0
  255. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/config.py +0 -0
  256. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/__init__.py +0 -0
  257. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/azure_devops/__init__.py +0 -0
  258. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/azure_devops/get_azure_devops.py +0 -0
  259. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/azure_devops/pull_request_comments.py +0 -0
  260. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/github/get_github.py +0 -0
  261. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/github/pull_request_comments.py +0 -0
  262. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/integrate_messages_services/__init__.py +0 -0
  263. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/integrate_messages_services/microsoft_teams.py +0 -0
  264. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/integrate_messages_services/sent_message_teams.py +0 -0
  265. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/pattern_names.py +0 -0
  266. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/pr_comments/__init__.py +0 -0
  267. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/integrations/pr_comments/pr_comment_publisher.py +0 -0
  268. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/logger.py +0 -0
  269. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/telemetry.py +0 -0
  270. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/core/version_tools.py +0 -0
  271. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/domain/__init__.py +0 -0
  272. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/domain/interfaces/__init__.py +0 -0
  273. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/domain/models/__init__.py +0 -0
  274. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/mcp/README.md +0 -0
  275. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/mcp/__init__.py +0 -0
  276. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/mcp/server.py +0 -0
  277. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/__init__.py +0 -0
  278. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/__init__.py +0 -0
  279. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/agentcore/agentcore.json +0 -0
  280. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/ai_agent.py +0 -0
  281. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/analyzers/__init__.py +0 -0
  282. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/analyzers/code_reviewer.py +0 -0
  283. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/analyzers/context_builder.py +0 -0
  284. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/analyzers/report_analyzer.py +0 -0
  285. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/analyzers/risk_assessor.py +0 -0
  286. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/bedrock_agent_api.py +0 -0
  287. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/config/__init__.py +0 -0
  288. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/config/ai_settings.py +0 -0
  289. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/config/decision_rules.py +0 -0
  290. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/decision_engine.py +0 -0
  291. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/main.py +0 -0
  292. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/memory.py +0 -0
  293. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/orchestrator.py +0 -0
  294. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/pr_decision_publisher.py +0 -0
  295. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/__init__.py +0 -0
  296. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/azure_provider.py +0 -0
  297. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/bedrock_agent_provider.py +0 -0
  298. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/bedrock_provider.py +0 -0
  299. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/ollama_provider.py +0 -0
  300. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/providers/openai_provider.py +0 -0
  301. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/safety/__init__.py +0 -0
  302. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/safety/safety_guard.py +0 -0
  303. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/strands_agent.py +0 -0
  304. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/tracing.py +0 -0
  305. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/__init__.py +0 -0
  306. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/cost_tracker.py +0 -0
  307. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/fix_patterns.py +0 -0
  308. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/fix_prompts.py +0 -0
  309. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/formatters.py +0 -0
  310. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/ai_review/utils/prompts.py +0 -0
  311. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/__init__.py +0 -0
  312. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/environment/__init__.py +0 -0
  313. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/environment/check_environment.py +0 -0
  314. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/org_policy_loader.py +0 -0
  315. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/__init__.py +0 -0
  316. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/blast_radius_service.py +0 -0
  317. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cfn_blast_radius_service.py +0 -0
  318. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/check_origin_version.py +0 -0
  319. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/check_project_structure.py +0 -0
  320. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/__init__.py +0 -0
  321. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/cost_analyzer.py +0 -0
  322. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/models/__init__.py +0 -0
  323. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/models/cloudformation_mapper.py +0 -0
  324. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/models/cost_models.py +0 -0
  325. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/__init__.py +0 -0
  326. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/aws_pricing_client.py +0 -0
  327. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/base_pricing.py +0 -0
  328. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/__init__.py +0 -0
  329. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/apigateway_pricing.py +0 -0
  330. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/bedrock_pricing.py +0 -0
  331. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/cloudwatch_pricing.py +0 -0
  332. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/dynamodb_pricing.py +0 -0
  333. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/ebs_pricing.py +0 -0
  334. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/ec2_pricing.py +0 -0
  335. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/ecs_pricing.py +0 -0
  336. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/eip_pricing.py +0 -0
  337. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/eks_pricing.py +0 -0
  338. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/elb_pricing.py +0 -0
  339. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/free_resources_pricing.py +0 -0
  340. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/kms_pricing.py +0 -0
  341. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/lambda_pricing.py +0 -0
  342. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/msk_pricing.py +0 -0
  343. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/rds_pricing.py +0 -0
  344. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/s3_pricing.py +0 -0
  345. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/secrets_manager_pricing.py +0 -0
  346. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/cost/pricing/providers/vpc_pricing.py +0 -0
  347. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/__init__.py +0 -0
  348. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/cfn_drift_service.py +0 -0
  349. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/drift_ai.py +0 -0
  350. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/drift_history.py +0 -0
  351. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/drift_policy.py +0 -0
  352. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/drift_report.py +0 -0
  353. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/drift_service.py +0 -0
  354. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/drift/models.py +0 -0
  355. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/risk_assessment.py +0 -0
  356. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/project/validate_project_structure.py +0 -0
  357. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/rule_merger.py +0 -0
  358. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/check/stack_optimizer/__init__.py +0 -0
  359. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/dashboard/__init__.py +0 -0
  360. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/dashboard/dashboard_service.py +0 -0
  361. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/__init__.py +0 -0
  362. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/architecture_renderer.py +0 -0
  363. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/create_documentation.py +0 -0
  364. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/files_content.py +0 -0
  365. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/files_scan.py +0 -0
  366. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/iac_documentation.py +0 -0
  367. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/iac_grunt_graph.py +0 -0
  368. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/iac_grunt_info.py +0 -0
  369. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/document/topology_generator.py +0 -0
  370. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/__init__.py +0 -0
  371. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_stacks/__init__.py +0 -0
  372. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_stacks/config_generator.py +0 -0
  373. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_stacks/remote_config_generation.py +0 -0
  374. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_stacks/stack_service.py +0 -0
  375. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_stacks/templates/terragrunt.hcl.j2 +0 -0
  376. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/__init__.py +0 -0
  377. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/config.yaml +0 -0
  378. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/create_code.py +0 -0
  379. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/create_component.py +0 -0
  380. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/create_component_service.py +0 -0
  381. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/create_stacks.py +0 -0
  382. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/create_template.py +0 -0
  383. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/files_content.py +0 -0
  384. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/github_template_loader.py +0 -0
  385. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/generate/create_template/project_templates.py +0 -0
  386. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/__init__.py +0 -0
  387. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/environment/__init__.py +0 -0
  388. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/environment/install_tools.py +0 -0
  389. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/project/__init__.py +0 -0
  390. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/project/project.py +0 -0
  391. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/space/__init__.py +0 -0
  392. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/space/example_space.toml +0 -0
  393. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/space/local_registry.py +0 -0
  394. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/init/space/space.py +0 -0
  395. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/__init__.py +0 -0
  396. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/changelog_parser.py +0 -0
  397. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/inventory_service.py +0 -0
  398. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/models.py +0 -0
  399. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/module_compatibility_service.py +0 -0
  400. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/report_service.py +0 -0
  401. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/terragrunt_parser.py +0 -0
  402. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/update_versions.py +0 -0
  403. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/inventory/version_service.py +0 -0
  404. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/mcp/README.md +0 -0
  405. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/mcp/__init__.py +0 -0
  406. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/mcp/simple_http_server.py +0 -0
  407. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/mcp/stdio_server.py +0 -0
  408. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/__init__.py +0 -0
  409. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/bootstrap/__init__.py +0 -0
  410. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/bootstrap/bootstrap_service.py +0 -0
  411. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/cleanup/__init__.py +0 -0
  412. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/cleanup/clean_project.py +0 -0
  413. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/cleanup/clean_space.py +0 -0
  414. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/__init__.py +0 -0
  415. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/conversion_service.py +0 -0
  416. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/get_project_data.py +0 -0
  417. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/post_init.py +0 -0
  418. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/project_converter.py +0 -0
  419. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/project_defaults.py +0 -0
  420. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/convert/set_project_parameters.py +0 -0
  421. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/create_terramate/__init__.py +0 -0
  422. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/create_terramate/create_terramate_stacks.py +0 -0
  423. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/create_terramate/detect_changes_stacks.py +0 -0
  424. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/create_terramate/manage_terramate_stacks.py +0 -0
  425. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/upgrade/__init__.py +0 -0
  426. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/project/upgrade/upgrade_service.py +0 -0
  427. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/__init__.py +0 -0
  428. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/compliance_review.py +0 -0
  429. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/import_reports.py +0 -0
  430. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/models.py +0 -0
  431. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/report_parser.py +0 -0
  432. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/sarif_output.py +0 -0
  433. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scan_history.py +0 -0
  434. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scan_service.py +0 -0
  435. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/__init__.py +0 -0
  436. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/checkov.py +0 -0
  437. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/kics.py +0 -0
  438. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/opa.py +0 -0
  439. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/scan_reports.py +0 -0
  440. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/scanners.py +0 -0
  441. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/terraform_compliance.py +0 -0
  442. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/tfsec.py +0 -0
  443. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/services/scan/scanners/trivy.py +0 -0
  444. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/templates/ai_reports/pr_comment.md +0 -0
  445. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/templates/reports/inventory_report.html +0 -0
  446. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/templates/reports/inventory_report.js +0 -0
  447. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/templates/unified_report_styles.css +0 -0
  448. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/__init__.py +0 -0
  449. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/banner.py +0 -0
  450. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/__init__.py +0 -0
  451. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/create_compliance_html_reports.py +0 -0
  452. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/create_html_reports.py +0 -0
  453. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/delete_directory.py +0 -0
  454. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/fix_report_styling.py +0 -0
  455. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/render_scan_report.py +0 -0
  456. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/report_html_utils.py +0 -0
  457. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/index_report.html +0 -0
  458. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/individual_report.html +0 -0
  459. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/simple_report.html +0 -0
  460. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/unified_report_styles.css +0 -0
  461. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/unified_scan_report.html +0 -0
  462. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/unified_simple_report.html +0 -0
  463. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/common/templates/xunit_report.html +0 -0
  464. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/crypto.py +0 -0
  465. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/manage_backend_resources/__init__.py +0 -0
  466. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/manage_backend_resources/manage_backend_resources.py +0 -0
  467. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/modules_ops/__init__.py +0 -0
  468. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/modules_ops/terraform_module_details.py +0 -0
  469. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/modules_ops/terraform_modules_fetcher.py +0 -0
  470. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/platform_utils.py +0 -0
  471. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/__init__.py +0 -0
  472. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/analyze_terraform_plan.py +0 -0
  473. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/graph_manager.py +0 -0
  474. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/graph_terragrunt_dependencies.py +0 -0
  475. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/process_terraform_file.py +0 -0
  476. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/process_hcl/risk_analyzing_terraform_plan.py +0 -0
  477. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/sync_workspaces/__init__.py +0 -0
  478. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/sync_workspaces/sync_terraform_workspaces.py +0 -0
  479. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/sync_workspaces/sync_terragrunt_workspaces.py +0 -0
  480. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/template_loader.py +0 -0
  481. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/utils/thoth_colors.py +0 -0
  482. {thothctl-0.22.2 → thothctl-0.23.0}/src/thothctl/wellcome_banner.py +0 -0
  483. {thothctl-0.22.2 → thothctl-0.23.0}/tests/conftest.py +0 -0
  484. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_agentcore_entrypoint.py +0 -0
  485. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_apply_fix.py +0 -0
  486. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_decision_engine.py +0 -0
  487. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_fix_patterns.py +0 -0
  488. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_memory.py +0 -0
  489. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_orchestrator.py +0 -0
  490. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_pr_decision.py +0 -0
  491. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ai_safety_guard.py +0 -0
  492. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_aws_pricing_client.py +0 -0
  493. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_azure_devops_pr_comments.py +0 -0
  494. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_bedrock_pricing.py +0 -0
  495. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cdk_language_selection.py +0 -0
  496. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cfn_blast_radius.py +0 -0
  497. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cfn_drift_detection.py +0 -0
  498. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_context_steering.py +0 -0
  499. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cost_analyzer.py +0 -0
  500. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cost_models.py +0 -0
  501. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cost_policy_enforcement.py +0 -0
  502. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_cost_pr_comments.py +0 -0
  503. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_dashboard_loading_fix.py +0 -0
  504. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_dashboard_service.py +0 -0
  505. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_drift.py +0 -0
  506. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_drift_detection.py +0 -0
  507. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_ec2_pricing.py +0 -0
  508. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_github_pr_comments.py +0 -0
  509. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_iac_cost_integration.py +0 -0
  510. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_init_ai_tools.py +0 -0
  511. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_init_template_params.py +0 -0
  512. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_inventory_pr_comments.py +0 -0
  513. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_kics_scanner.py +0 -0
  514. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_mermaid_edge_labels.py +0 -0
  515. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_new_cost_providers.py +0 -0
  516. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_opa_data_files.py +0 -0
  517. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_parallel_scan.py +0 -0
  518. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_platform_utils.py +0 -0
  519. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_pr_comment_publisher.py +0 -0
  520. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_provider_source_url_fix.py +0 -0
  521. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_provider_versions.py +0 -0
  522. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_scan_cfn_support.py +0 -0
  523. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_scan_pr_comments.py +0 -0
  524. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_space_command.py +0 -0
  525. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_space_management.py +0 -0
  526. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_stack_optimizer.py +0 -0
  527. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_template_url_fix.py +0 -0
  528. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_terragrunt_parser.py +0 -0
  529. {thothctl-0.22.2 → thothctl-0.23.0}/tests/test_topology_generator.py +0 -0
  530. {thothctl-0.22.2 → thothctl-0.23.0}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: thothctl
3
- Version: 0.22.2
3
+ Version: 0.23.0
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
@@ -0,0 +1,350 @@
1
+ # Mermaid Dependency Graphs - Examples
2
+
3
+ ## Overview
4
+
5
+ ThothCTL generates professional Mermaid diagrams for Terragrunt projects, showing module dependencies with explicit input/output relationships.
6
+
7
+ ## Basic Usage
8
+
9
+ ```bash
10
+ # Generate Mermaid diagram
11
+ thothctl document iac --framework terragrunt --graph-type mermaid
12
+
13
+ # Output: graph.mmd in current directory
14
+ ```
15
+
16
+ ## Example 1: Simple Two-Module Stack
17
+
18
+ ### Project Structure
19
+ ```
20
+ stacks/
21
+ ├── vpc/
22
+ │ └── terragrunt.hcl
23
+ └── security-groups/
24
+ └── terragrunt.hcl
25
+ ```
26
+
27
+ ### vpc/terragrunt.hcl
28
+ ```hcl
29
+ terraform {
30
+ source = "git::https://github.com/terraform-aws-modules/terraform-aws-vpc.git?ref=v5.0.0"
31
+ }
32
+
33
+ inputs = {
34
+ name = "my-vpc"
35
+ cidr = "10.0.0.0/16"
36
+ }
37
+ ```
38
+
39
+ ### security-groups/terragrunt.hcl
40
+ ```hcl
41
+ terraform {
42
+ source = "git::https://github.com/terraform-aws-modules/terraform-aws-security-group.git?ref=v5.0.0"
43
+ }
44
+
45
+ dependency "vpc" {
46
+ config_path = "../vpc"
47
+
48
+ mock_outputs = {
49
+ vpc_id = "vpc-mock-12345"
50
+ subnet_ids = ["subnet-1", "subnet-2"]
51
+ }
52
+ }
53
+
54
+ inputs = {
55
+ vpc_id = dependency.vpc.outputs.vpc_id
56
+ name = "my-sg"
57
+ }
58
+ ```
59
+
60
+ ### Generated Diagram
61
+
62
+ ```bash
63
+ cd stacks
64
+ thothctl document iac -f terragrunt --graph-type mermaid
65
+ ```
66
+
67
+ **Output** (`graph.mmd`):
68
+ ```mermaid
69
+ %%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#e3f2fd','primaryTextColor':'#1565c0','primaryBorderColor':'#1976d2','lineColor':'#42a5f5','secondaryColor':'#fff3e0','tertiaryColor':'#f3e5f5','fontSize':'14px'}}}%%
70
+ graph LR
71
+ vpc["<b>vpc</b>"]:::rootNode
72
+ security_groups["<b>security-groups</b><br/><small>📥 vpc: vpc_id, subnet_ids</small>"]:::normalNode
73
+ security_groups -->|vpc_id, subnet_ids| vpc
74
+
75
+ classDef rootNode fill:#4caf50,stroke:#2e7d32,stroke-width:3px,color:#fff
76
+ classDef normalNode fill:#2196f3,stroke:#1565c0,stroke-width:2px,color:#fff
77
+ classDef complexNode fill:#ff9800,stroke:#e65100,stroke-width:2px,color:#fff
78
+ ```
79
+
80
+ **Visual Result**:
81
+ - 🟢 **vpc** (green) - Root module with no dependencies
82
+ - 🔵 **security-groups** (blue) - Normal module with 1 dependency
83
+ - Edge shows: `vpc_id, subnet_ids` - the actual inputs being passed
84
+
85
+ ## Example 2: Multi-Tier Application
86
+
87
+ ### Project Structure
88
+ ```
89
+ stacks/
90
+ ├── vpc/
91
+ ├── rds/
92
+ ├── security-groups/
93
+ └── app/
94
+ ```
95
+
96
+ ### rds/terragrunt.hcl
97
+ ```hcl
98
+ dependency "vpc" {
99
+ config_path = "../vpc"
100
+
101
+ mock_outputs = {
102
+ vpc_id = "vpc-123"
103
+ subnet_ids = ["subnet-1", "subnet-2"]
104
+ database_subnet_group = "db-subnet-group"
105
+ }
106
+ }
107
+
108
+ inputs = {
109
+ vpc_id = dependency.vpc.outputs.vpc_id
110
+ subnet_ids = dependency.vpc.outputs.subnet_ids
111
+ }
112
+ ```
113
+
114
+ ### app/terragrunt.hcl
115
+ ```hcl
116
+ dependency "vpc" {
117
+ config_path = "../vpc"
118
+
119
+ mock_outputs = {
120
+ vpc_id = "vpc-123"
121
+ }
122
+ }
123
+
124
+ dependency "rds" {
125
+ config_path = "../rds"
126
+
127
+ mock_outputs = {
128
+ endpoint = "db.example.com"
129
+ port = 5432
130
+ }
131
+ }
132
+
133
+ dependency "sg" {
134
+ config_path = "../security-groups"
135
+
136
+ mock_outputs = {
137
+ security_group_id = "sg-123"
138
+ }
139
+ }
140
+
141
+ inputs = {
142
+ vpc_id = dependency.vpc.outputs.vpc_id
143
+ db_endpoint = dependency.rds.outputs.endpoint
144
+ security_group_id = dependency.sg.outputs.security_group_id
145
+ }
146
+ ```
147
+
148
+ ### Generated Diagram
149
+
150
+ ```mermaid
151
+ %%{init: {'theme':'base', 'themeVariables': {...}}}%%
152
+ graph LR
153
+ vpc["<b>vpc</b>"]:::rootNode
154
+ rds["<b>rds</b><br/><small>📥 vpc: vpc_id, subnet_ids...</small>"]:::normalNode
155
+ security_groups["<b>security-groups</b><br/><small>📥 vpc: vpc_id</small>"]:::normalNode
156
+ app["<b>app</b><br/><small>📥 vpc: vpc_id<br/>📥 rds: endpoint, port</small><br/><small>+1 more...</small>"]:::complexNode
157
+
158
+ rds -->|vpc_id, subnet_ids...| vpc
159
+ security_groups -->|vpc_id| vpc
160
+ app -->|vpc_id| vpc
161
+ app -->|endpoint, port| rds
162
+ app -->|security_group_id| security_groups
163
+
164
+ classDef rootNode fill:#4caf50,stroke:#2e7d32,stroke-width:3px,color:#fff
165
+ classDef normalNode fill:#2196f3,stroke:#1565c0,stroke-width:2px,color:#fff
166
+ classDef complexNode fill:#ff9800,stroke:#e65100,stroke-width:2px,color:#fff
167
+ ```
168
+
169
+ **Visual Result**:
170
+ - 🟢 **vpc** (green) - Root module
171
+ - 🔵 **rds, security-groups** (blue) - Normal modules (1-2 dependencies)
172
+ - 🟠 **app** (orange) - Complex module (3+ dependencies)
173
+
174
+ ## Example 3: Running from Subdirectory
175
+
176
+ ```bash
177
+ cd stacks/app
178
+ thothctl document iac -f terragrunt --graph-type mermaid
179
+ ```
180
+
181
+ **Output** shows relative paths:
182
+ ```mermaid
183
+ graph LR
184
+ app["<b>app</b><br/><small>📥 vpc: vpc_id<br/>📥 rds: endpoint, port</small><br/><small>+1 more...</small>"]:::complexNode
185
+ ..vpc["<b>..vpc</b>"]:::rootNode
186
+ ..rds["<b>..rds</b><br/><small>📥 vpc: vpc_id, subnet_ids...</small>"]:::normalNode
187
+ ..security_groups["<b>..security-groups</b><br/><small>📥 vpc: vpc_id</small>"]:::normalNode
188
+
189
+ app -->|vpc_id| ..vpc
190
+ app -->|endpoint, port| ..rds
191
+ app -->|security_group_id| ..security_groups
192
+ ```
193
+
194
+ ## Node Color Coding
195
+
196
+ | Color | Meaning | Dependencies |
197
+ |-------|---------|--------------|
198
+ | 🟢 Green | Root node | 0 dependencies |
199
+ | 🔵 Blue | Normal node | 1-2 dependencies |
200
+ | 🟠 Orange | Complex node | 3+ dependencies |
201
+
202
+ ## Edge Labels
203
+
204
+ Edge labels show the **actual input keys** from `mock_outputs`:
205
+
206
+ ```hcl
207
+ dependency "vpc" {
208
+ mock_outputs = {
209
+ vpc_id = "vpc-123"
210
+ subnet_ids = ["subnet-1"]
211
+ }
212
+ }
213
+ ```
214
+
215
+ Results in edge label: `vpc_id, subnet_ids`
216
+
217
+ ### Truncation
218
+
219
+ If more than 2 keys, the label is truncated:
220
+ - Shows first 2 keys
221
+ - Adds "..." to indicate more
222
+
223
+ Example: `vpc_id, subnet_ids...`
224
+
225
+ ## Node Labels
226
+
227
+ Node labels show:
228
+ 1. **Bold module name**
229
+ 2. **Dependency details** (if any):
230
+ - 📥 emoji indicator
231
+ - Dependency name
232
+ - Input keys (up to 3)
233
+ 3. **Overflow indicator** (if more than 2 dependencies)
234
+
235
+ Example:
236
+ ```
237
+ <b>app</b>
238
+ 📥 vpc: vpc_id
239
+ 📥 rds: endpoint, port
240
+ +1 more...
241
+ ```
242
+
243
+ ## Rendering
244
+
245
+ ### GitHub/GitLab
246
+ Mermaid diagrams render automatically in:
247
+ - README.md files
248
+ - Pull request descriptions
249
+ - Issue comments
250
+ - Wiki pages
251
+
252
+ ### VS Code
253
+ Install extension: "Markdown Preview Mermaid Support"
254
+
255
+ ### Mermaid Live Editor
256
+ https://mermaid.live/ - Paste and preview
257
+
258
+ ### Export to Image
259
+ ```bash
260
+ # Install mermaid-cli
261
+ npm install -g @mermaid-js/mermaid-cli
262
+
263
+ # Generate PNG
264
+ mmdc -i graph.mmd -o graph.png
265
+
266
+ # Generate SVG
267
+ mmdc -i graph.mmd -o graph.svg
268
+ ```
269
+
270
+ ## Comparison: Mermaid vs SVG
271
+
272
+ | Feature | Mermaid | SVG |
273
+ |---------|---------|-----|
274
+ | **Format** | Text | Binary |
275
+ | **Version Control** | Easy to diff | Hard to diff |
276
+ | **Editability** | Edit text file | Regenerate only |
277
+ | **Rendering** | GitHub/GitLab | Browser/viewer |
278
+ | **Input Details** | Shows on edges | Not shown |
279
+ | **Complexity Colors** | Yes | No |
280
+ | **File Size** | Small (~1KB) | Larger (~10KB+) |
281
+
282
+ ## Best Practices
283
+
284
+ 1. **Use Mermaid for documentation**: Better for README files and wikis
285
+ 2. **Use SVG for presentations**: Better for slides and reports
286
+ 3. **Commit both formats**: Provide options for different use cases
287
+ 4. **Update on changes**: Regenerate when dependencies change
288
+ 5. **Add to CI/CD**: Automate diagram generation
289
+
290
+ ## CI/CD Integration
291
+
292
+ ### GitHub Actions
293
+ ```yaml
294
+ name: Update Dependency Graphs
295
+
296
+ on:
297
+ push:
298
+ paths:
299
+ - '**/terragrunt.hcl'
300
+
301
+ jobs:
302
+ update-graphs:
303
+ runs-on: ubuntu-latest
304
+ steps:
305
+ - uses: actions/checkout@v3
306
+
307
+ - name: Install ThothCTL
308
+ run: pip install thothctl
309
+
310
+ - name: Generate Mermaid Diagrams
311
+ run: |
312
+ cd stacks
313
+ thothctl document iac -f terragrunt --graph-type mermaid
314
+
315
+ - name: Commit Diagrams
316
+ uses: stefanzweifel/git-auto-commit-action@v4
317
+ with:
318
+ commit_message: "docs: Update dependency graphs"
319
+ file_pattern: "**/graph.mmd"
320
+ ```
321
+
322
+ ## Troubleshooting
323
+
324
+ ### No Edge Labels
325
+ **Issue**: Edges show no input keys
326
+
327
+ **Causes**:
328
+ 1. No `mock_outputs` in dependency block
329
+ 2. Dependency name doesn't match module name
330
+ 3. Empty `mock_outputs = {}`
331
+
332
+ **Solution**: Add mock_outputs to dependency blocks
333
+
334
+ ### Wrong Module Names
335
+ **Issue**: Shows "." or "../module" instead of clean names
336
+
337
+ **Solution**: This is expected when running from subdirectories. Run from project root for clean names.
338
+
339
+ ### Colors Not Showing
340
+ **Issue**: All nodes same color
341
+
342
+ **Cause**: Rendering platform doesn't support Mermaid themes
343
+
344
+ **Solution**: Use Mermaid Live Editor or GitHub/GitLab
345
+
346
+ ## Additional Resources
347
+
348
+ - [Mermaid Documentation](https://mermaid.js.org/)
349
+ - [Terragrunt Dependencies](https://terragrunt.gruntwork.io/docs/features/execute-terraform-commands-on-multiple-modules-at-once/#dependencies-between-modules)
350
+ - [ThothCTL Documentation](https://github.com/thothforge/thothctl)
@@ -0,0 +1,72 @@
1
+ # Mermaid Graphs - Quick Reference
2
+
3
+ ## Command
4
+
5
+ ```bash
6
+ thothctl document iac --framework terragrunt --graph-type mermaid
7
+ ```
8
+
9
+ ## Output
10
+
11
+ `graph.mmd` - Text-based Mermaid diagram
12
+
13
+ ## Features
14
+
15
+ | Feature | Description |
16
+ |---------|-------------|
17
+ | **Edge Labels** | Shows input keys from `mock_outputs` |
18
+ | **Color Coding** | 🟢 Root, 🔵 Normal, 🟠 Complex |
19
+ | **Dependency Details** | Lists inputs in node labels |
20
+ | **Professional Styling** | ThothCTL brand colors |
21
+ | **Version Control** | Text-based, easy to diff |
22
+ | **Renders Everywhere** | GitHub, GitLab, VS Code |
23
+
24
+ ## Example
25
+
26
+ ### Input (terragrunt.hcl)
27
+ ```hcl
28
+ dependency "vpc" {
29
+ config_path = "../vpc"
30
+ mock_outputs = {
31
+ vpc_id = "vpc-123"
32
+ subnet_ids = ["subnet-1"]
33
+ }
34
+ }
35
+ ```
36
+
37
+ ### Output (graph.mmd)
38
+ ```mermaid
39
+ graph LR
40
+ app["<b>app</b><br/><small>📥 vpc: vpc_id, subnet_ids</small>"]:::normalNode
41
+ vpc["<b>vpc</b>"]:::rootNode
42
+ app -->|vpc_id, subnet_ids| vpc
43
+ ```
44
+
45
+ ## Color Guide
46
+
47
+ - 🟢 **Green** = 0 dependencies (root)
48
+ - 🔵 **Blue** = 1-2 dependencies (normal)
49
+ - 🟠 **Orange** = 3+ dependencies (complex)
50
+
51
+ ## Quick Tips
52
+
53
+ ✅ Run from project root for clean names
54
+ ✅ Commit `graph.mmd` to version control
55
+ ✅ Renders automatically in GitHub/GitLab
56
+ ✅ Use for architecture documentation
57
+ ✅ Shows explicit data flow between modules
58
+
59
+ ## Troubleshooting
60
+
61
+ **No edge labels?**
62
+ → Add `mock_outputs` to dependency blocks
63
+
64
+ **Shows "." instead of module name?**
65
+ → Expected from subdirectories, or run from root
66
+
67
+ **Want SVG instead?**
68
+ → Use `--graph-type dot`
69
+
70
+ ## More Info
71
+
72
+ See: `docs/framework/commands/document/mermaid_examples.md`
@@ -0,0 +1,227 @@
1
+ # Generate IaC — Intent-to-Infrastructure
2
+
3
+ Generate governed Infrastructure as Code from natural language descriptions. ThothCTL reads your organizational conventions (`.thothcf.toml`, steering docs, existing patterns) and produces compliant code validated by Checkov and OPA.
4
+
5
+ ## Quick Start
6
+
7
+ ```bash
8
+ # Generate a VPC (dry-run by default — shows code without writing)
9
+ thothctl generate iac -i "VPC with 3 private subnets and NAT gateway for production"
10
+
11
+ # Write to disk
12
+ thothctl generate iac -i "EKS cluster with managed node groups" --apply -o ./stacks/platform/eks
13
+
14
+ # Use AWS Bedrock instead of local Ollama
15
+ thothctl generate iac -i "S3 bucket with versioning and encryption" -p bedrock
16
+ ```
17
+
18
+ ## How It Works
19
+
20
+ ```
21
+ Your intent (natural language)
22
+ ↓
23
+ 1. Load Context — reads .thothcf.toml, steering docs, existing patterns, OPA policies
24
+ ↓
25
+ 2. Generate — AI produces IaC code following your org conventions
26
+ ↓
27
+ 3. Validate — Checkov + OPA scan the generated code
28
+ ↓
29
+ 4. Self-Correct — if violations found, AI fixes them (up to 3 attempts)
30
+ ↓
31
+ 5. Output — display (dry-run) or write to disk (--apply)
32
+ ```
33
+
34
+ The AI produces compliant code because your organizational rules are injected directly into its context — not because of a separate policy engine. Existing Checkov and OPA validate the output as a safety net.
35
+
36
+ ## Options
37
+
38
+ | Flag | Short | Default | Description |
39
+ |------|-------|---------|-------------|
40
+ | `--intent` | `-i` | (required) | What infrastructure to create |
41
+ | `--project-type` | `-pt` | auto | `terraform`, `terraform-terragrunt`, `terragrunt`, `cloudformation`, `cdkv2` |
42
+ | `--provider` | `-p` | ollama | AI provider: `ollama`, `bedrock`, `openai`, `azure` |
43
+ | `--model` | `-m` | (provider default) | Model override (e.g., `llama3`, `claude-sonnet-4-20250514`) |
44
+ | `--output-dir` | `-o` | current dir | Where to write generated files |
45
+ | `--dry-run / --no-dry-run` | | dry-run | Preview without writing |
46
+ | `--apply` | | off | Write files to disk |
47
+ | `--self-correct / --no-self-correct` | | on | Fix validation violations automatically |
48
+ | `--max-iterations` | | 3 | Maximum self-correction attempts |
49
+ | `--skip-validation` | | off | Skip Checkov/OPA (trust AI output) |
50
+ | `--include-diagram / --no-diagram` | | on | Generate architecture diagram |
51
+
52
+ ## Examples
53
+
54
+ ### Basic VPC (Terragrunt)
55
+
56
+ ```bash
57
+ thothctl generate iac \
58
+ -i "VPC with 3 private subnets, 3 public subnets, NAT gateway per AZ, flow logs enabled" \
59
+ -pt terraform-terragrunt \
60
+ --apply -o ./stacks/foundation/network/vpc
61
+ ```
62
+
63
+ Generates:
64
+ ```
65
+ stacks/foundation/network/vpc/
66
+ ├── terragrunt.hcl # include root, dependency blocks, inputs
67
+ ├── main.tf # terraform-aws-modules/vpc/aws with flow logs
68
+ ├── variables.tf # cidr, environment, tags
69
+ └── outputs.tf # vpc_id, subnet_ids, nat_gateway_ids
70
+ ```
71
+
72
+ ### EKS Cluster (Terraform)
73
+
74
+ ```bash
75
+ thothctl generate iac \
76
+ -i "Production EKS cluster with managed node groups, Karpenter autoscaler, and IRSA" \
77
+ -pt terraform \
78
+ -p bedrock -m claude-sonnet-4-20250514 \
79
+ --apply -o ./modules/eks
80
+ ```
81
+
82
+ ### S3 with Security (validates automatically)
83
+
84
+ ```bash
85
+ thothctl generate iac \
86
+ -i "S3 bucket for application logs with encryption, versioning, lifecycle rules, and no public access"
87
+ ```
88
+
89
+ The self-correction loop ensures:
90
+ - ✅ Server-side encryption enabled (CKV_AWS_145)
91
+ - ✅ Public access blocked (CKV_AWS_53, CKV_AWS_54, CKV_AWS_55, CKV_AWS_56)
92
+ - ✅ Versioning enabled (CKV_AWS_21)
93
+ - ✅ Logging configured (CKV_AWS_18)
94
+
95
+ ### CloudFormation
96
+
97
+ ```bash
98
+ thothctl generate iac \
99
+ -i "Application Load Balancer with HTTPS listener and WAF" \
100
+ -pt cloudformation \
101
+ --apply -o ./stacks/application/web-tier.yaml
102
+ ```
103
+
104
+ ### Skip Validation (fast iteration)
105
+
106
+ ```bash
107
+ thothctl generate iac \
108
+ -i "CloudWatch dashboard with CPU, memory, and request metrics" \
109
+ --skip-validation --apply
110
+ ```
111
+
112
+ ## Context Sources
113
+
114
+ ThothCTL compiles organizational context from these sources (in priority order):
115
+
116
+ | Source | What's Used | Token Budget |
117
+ |--------|-------------|-------------|
118
+ | `.thothcf.toml` | Project type, naming patterns, environment, tags | ~500 |
119
+ | `.kiro/steering/iac-rules.md` or `.claude/rules/*.md` | IaC composition rules, module preferences, prohibited practices | ~2000 |
120
+ | `.kiro/steering/product.md` or `CLAUDE.md` | Project purpose, architecture layers | ~500 |
121
+ | Existing files in `stacks/` | Real examples from your project (few-shot) | ~2000 |
122
+ | `policies/*.rego` or `THOTH_ORG_POLICY` | OPA rule names and descriptions | ~500 |
123
+
124
+ **Total context: ~5,500 tokens** — leaves room for generation within most model limits.
125
+
126
+ ### No Context? No Problem
127
+
128
+ If none of these files exist, the command still works — it generates standard Terraform following AWS best practices. Context just makes the output match *your* conventions.
129
+
130
+ ## AI Providers
131
+
132
+ | Provider | Flag | Requires | Best For |
133
+ |----------|------|----------|----------|
134
+ | Ollama | `-p ollama` | Local Ollama running | Offline, private, fast iteration |
135
+ | AWS Bedrock | `-p bedrock` | AWS credentials | Production quality, Claude models |
136
+ | OpenAI | `-p openai` | `OPENAI_API_KEY` | GPT-4 Turbo |
137
+ | Azure OpenAI | `-p azure` | Azure endpoint configured | Enterprise Azure environments |
138
+
139
+ ### Recommended Models
140
+
141
+ | Provider | Model | Quality | Speed |
142
+ |----------|-------|---------|-------|
143
+ | Ollama | `llama3` (default) | Good | Fast |
144
+ | Ollama | `codellama:34b` | Better | Slower |
145
+ | Bedrock | `claude-sonnet-4-20250514` | Excellent | Fast |
146
+ | OpenAI | `gpt-4-turbo` | Excellent | Medium |
147
+
148
+ ## Self-Correction
149
+
150
+ When Checkov finds violations, the AI automatically fixes them:
151
+
152
+ ```
153
+ 🤖 Generating infrastructure code...
154
+ ✅ Generated 4 files
155
+
156
+ 🔒 Validating with Checkov...
157
+ ⚠️ 2 findings: CKV_AWS_130 (VPC flow logs), CKV_AWS_178 (NAT HA)
158
+
159
+ 🔄 Self-correcting (iteration 1/3)...
160
+ ✅ Fixed: added flow logs + multi-AZ NAT
161
+
162
+ 🔒 Re-validating...
163
+ ✅ Validation passed
164
+ ```
165
+
166
+ Disable with `--no-self-correct` if you want raw output without fixes.
167
+
168
+ ## MCP Integration
169
+
170
+ The command is also available as an MCP tool for AI assistants (Kiro, Claude Code):
171
+
172
+ ```json
173
+ {
174
+ "name": "thothctl_generate_iac",
175
+ "description": "Generate governed IaC from natural language intent",
176
+ "parameters": {
177
+ "intent": "VPC with 3 private subnets",
178
+ "project_type": "terraform-terragrunt",
179
+ "self_correct": true,
180
+ "apply": false
181
+ }
182
+ }
183
+ ```
184
+
185
+ Start the MCP server: `thothctl mcp server`
186
+
187
+ ## Tips
188
+
189
+ 1. **Be specific** — "VPC with 3 private subnets, NAT per AZ, flow logs" produces better results than "create a VPC"
190
+ 2. **Use your scaffold** — run from a project that has `.thothcf.toml` and existing stacks for best context
191
+ 3. **Start with dry-run** — review the generated code before `--apply`
192
+ 4. **Iterate** — if the output isn't perfect, refine your intent and re-run
193
+ 5. **Use Bedrock for production** — Claude Sonnet produces the highest quality IaC
194
+
195
+ ## Troubleshooting
196
+
197
+ ### "AI returned no files"
198
+
199
+ The AI provider couldn't parse the intent or returned invalid JSON. Try:
200
+ - Simplify the intent
201
+ - Use a more capable model (`-p bedrock -m claude-sonnet-4-20250514`)
202
+ - Check provider connectivity (`thothctl check environment`)
203
+
204
+ ### "Validation: N violations remain"
205
+
206
+ Self-correction reached max iterations without passing all checks. Options:
207
+ - Increase iterations: `--max-iterations 5`
208
+ - Skip validation: `--skip-validation` (fix manually)
209
+ - Fix the generated code yourself and run `thothctl scan iac -t checkov`
210
+
211
+ ### Slow generation with Ollama
212
+
213
+ Large models + long context = slow. Solutions:
214
+ - Use a smaller model: `-m llama3` (7B is fastest)
215
+ - Reduce context: remove unnecessary steering files
216
+ - Switch to API provider: `-p bedrock` (faster inference)
217
+
218
+ ### Provider not initialized
219
+
220
+ ```
221
+ Failed to initialize AI provider: ...
222
+ ```
223
+
224
+ Check provider configuration:
225
+ - Ollama: ensure `ollama serve` is running
226
+ - Bedrock: ensure AWS credentials are configured
227
+ - OpenAI: ensure `OPENAI_API_KEY` is set