opsmith-cli 0.4.4b0__tar.gz → 0.4.6b0__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 (137) hide show
  1. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/PKG-INFO +17 -15
  2. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/deployment_strategies/monolithic.py +9 -4
  3. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/models.py +27 -81
  4. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/repo_map.py +3 -2
  5. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/virtual_machine_setup/aws/main.yml +6 -0
  6. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/types.py +5 -6
  7. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/pyproject.toml +17 -15
  8. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/uv.lock +796 -793
  9. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/.flake8 +0 -0
  10. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/.github/workflows/python-publish.yml +0 -0
  11. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/.gitignore +0 -0
  12. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/.pre-commit-config.yaml +0 -0
  13. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/CONVENTIONS.md +0 -0
  14. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/LICENSE.txt +0 -0
  15. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/README.md +0 -0
  16. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/__init__.py +0 -0
  17. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/agent.py +0 -0
  18. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/cloud_providers/__init__.py +0 -0
  19. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/cloud_providers/aws.py +0 -0
  20. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/cloud_providers/base.py +0 -0
  21. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/cloud_providers/gcp.py +0 -0
  22. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/constants.py +0 -0
  23. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/deployment_strategies/__init__.py +0 -0
  24. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/deployment_strategies/base.py +0 -0
  25. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/exceptions.py +0 -0
  26. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/git_repo.py +0 -0
  27. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/infra_provisioners/__init__.py +0 -0
  28. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/infra_provisioners/ansible_provisioner.py +0 -0
  29. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/infra_provisioners/base_provisioner.py +0 -0
  30. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/infra_provisioners/terraform_provisioner.py +0 -0
  31. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/main.py +0 -0
  32. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/prompts.py +0 -0
  33. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/README.md +0 -0
  34. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/arduino-tags.scm +0 -0
  35. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/c-tags.scm +0 -0
  36. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  37. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/chatito-tags.scm +0 -0
  38. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/commonlisp-tags.scm +0 -0
  39. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  40. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/csharp-tags.scm +0 -0
  41. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/d-tags.scm +0 -0
  42. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/dart-tags.scm +0 -0
  43. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  44. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  45. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/elm-tags.scm +0 -0
  46. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/gleam-tags.scm +0 -0
  47. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/go-tags.scm +0 -0
  48. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  49. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/java-tags.scm +0 -0
  50. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  51. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  52. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/lua-tags.scm +0 -0
  53. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  54. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  55. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/php-tags.scm +0 -0
  56. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/pony-tags.scm +0 -0
  57. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/properties-tags.scm +0 -0
  58. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/python-tags.scm +0 -0
  59. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/ql-tags.scm +0 -0
  60. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/r-tags.scm +0 -0
  61. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/racket-tags.scm +0 -0
  62. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  63. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/rust-tags.scm +0 -0
  64. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/scala-tags.scm +0 -0
  65. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/solidity-tags.scm +0 -0
  66. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/swift-tags.scm +0 -0
  67. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  68. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/queries/tree-sitter-languages/udev-tags.scm +0 -0
  69. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/service_detector.py +0 -0
  70. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/settings.py +0 -0
  71. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/cloud_storage_cleanup/aws/main.yml +0 -0
  72. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/cloud_storage_cleanup/gcp/main.yml +0 -0
  73. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/container_registry/aws/main.tf +0 -0
  74. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/container_registry/aws/outputs.tf +0 -0
  75. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/container_registry/aws/variables.tf +0 -0
  76. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/container_registry/gcp/main.tf +0 -0
  77. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/container_registry/gcp/outputs.tf +0 -0
  78. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/container_registry/gcp/variables.tf +0 -0
  79. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_build_push/aws/main.yml +0 -0
  80. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_build_push/gcp/main.yml +0 -0
  81. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_deploy/aws/inventory.yml +0 -0
  82. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_deploy/aws/main.yml +0 -0
  83. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_deploy/gcp/inventory.yml +0 -0
  84. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_deploy/gcp/main.yml +0 -0
  85. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_run/aws/inventory.yml +0 -0
  86. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_run/aws/main.yml +0 -0
  87. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_run/gcp/inventory.yml +0 -0
  88. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_run/gcp/main.yml +0 -0
  89. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/base.yml +0 -0
  90. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/elasticsearch.yml +0 -0
  91. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/kafka.yml +0 -0
  92. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/mongodb.yml +0 -0
  93. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/mysql.yml +0 -0
  94. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/postgresql.yml +0 -0
  95. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/rabbitmq.yml +0 -0
  96. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/redis.yml +0 -0
  97. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/services/backend_api.yml +0 -0
  98. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/services/backend_worker.yml +0 -0
  99. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/services/full_stack.yml +0 -0
  100. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/traefik.yml +0 -0
  101. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/docker_compose_snippets/weaviate.yml +0 -0
  102. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/dockerfiles/python_backend_api +0 -0
  103. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/dockerfiles/python_backend_worker +0 -0
  104. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/fetch_remote_files/aws/inventory.yml +0 -0
  105. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/fetch_remote_files/aws/main.yml +0 -0
  106. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/fetch_remote_files/gcp/inventory.yml +0 -0
  107. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/fetch_remote_files/gcp/main.yml +0 -0
  108. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_bucket_cert/aws/main.tf +0 -0
  109. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_bucket_cert/aws/outputs.tf +0 -0
  110. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_bucket_cert/aws/variables.tf +0 -0
  111. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_bucket_cert/gcp/main.tf +0 -0
  112. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_bucket_cert/gcp/outputs.tf +0 -0
  113. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_bucket_cert/gcp/variables.tf +0 -0
  114. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_cdn/aws/main.tf +0 -0
  115. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_cdn/aws/outputs.tf +0 -0
  116. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_cdn/aws/variables.tf +0 -0
  117. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_cdn/gcp/main.tf +0 -0
  118. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_cdn/gcp/outputs.tf +0 -0
  119. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_cdn/gcp/variables.tf +0 -0
  120. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_deploy/aws/main.yml +0 -0
  121. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/frontend_deploy/gcp/main.yml +0 -0
  122. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/virtual_machine/aws/main.tf +0 -0
  123. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/virtual_machine/aws/outputs.tf +0 -0
  124. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/virtual_machine/aws/variables.tf +0 -0
  125. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/virtual_machine/gcp/main.tf +0 -0
  126. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/virtual_machine/gcp/outputs.tf +0 -0
  127. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/virtual_machine/gcp/variables.tf +0 -0
  128. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/virtual_machine_setup/aws/inventory.yml +0 -0
  129. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/virtual_machine_setup/gcp/inventory.yml +0 -0
  130. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/templates/virtual_machine_setup/gcp/main.yml +0 -0
  131. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/tests/__init__.py +0 -0
  132. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/tests/test_service_detector.py +0 -0
  133. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/opsmith/utils.py +0 -0
  134. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/resources/deploy_demo.gif +0 -0
  135. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/resources/deploy_demo.svg +0 -0
  136. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/resources/setup_demo.gif +0 -0
  137. {opsmith_cli-0.4.4b0 → opsmith_cli-0.4.6b0}/resources/setup_demo.svg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opsmith-cli
3
- Version: 0.4.4b0
3
+ Version: 0.4.6b0
4
4
  Summary: Opsmith is an AI devops engineer in your terminal
5
5
  License-Expression: GPL-3.0-only
6
6
  License-File: LICENSE.txt
@@ -14,25 +14,27 @@ Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
16
  Classifier: Topic :: Software Development
17
- Requires-Python: >=3.11
18
- Requires-Dist: ansible==12.3.0
19
- Requires-Dist: gitpython==3.1.45
20
- Requires-Dist: google-api-python-client==2.187.0
21
- Requires-Dist: google-cloud-compute==1.40.0
22
- Requires-Dist: google-cloud-resource-manager==1.15.0
23
- Requires-Dist: google-cloud-storage==3.7.0
17
+ Requires-Python: >=3.12
18
+ Requires-Dist: ansible==14.1.0
19
+ Requires-Dist: gitpython==3.1.50
20
+ Requires-Dist: google-api-python-client==2.197.0
21
+ Requires-Dist: google-cloud-compute==1.48.0
22
+ Requires-Dist: google-cloud-resource-manager==1.17.0
23
+ Requires-Dist: google-cloud-storage==3.12.0
24
24
  Requires-Dist: grep-ast==0.9.0
25
25
  Requires-Dist: inquirer==3.4.1
26
26
  Requires-Dist: jinja2==3.1.6
27
27
  Requires-Dist: networkx==3.6.1
28
- Requires-Dist: pick==2.4.0
29
- Requires-Dist: pydantic-ai==1.37.0
30
- Requires-Dist: pydantic==2.12.5
31
- Requires-Dist: python-dotenv==1.2.1
28
+ Requires-Dist: pick==2.6.0
29
+ Requires-Dist: pydantic-ai==1.107.0
30
+ Requires-Dist: pydantic==2.13.4
31
+ Requires-Dist: python-dotenv==1.2.2
32
32
  Requires-Dist: pyyaml==6.0.3
33
- Requires-Dist: tqdm==4.67.1
34
- Requires-Dist: tree-sitter-language-pack==0.13.0
35
- Requires-Dist: typer==0.20.1
33
+ Requires-Dist: rich==15.0.0
34
+ Requires-Dist: tqdm==4.68.3
35
+ Requires-Dist: tree-sitter-language-pack==1.9.1
36
+ Requires-Dist: tree-sitter==0.25.2
37
+ Requires-Dist: typer==0.26.7
36
38
  Description-Content-Type: text/markdown
37
39
 
38
40
  # Opsmith: An AI devops engineer in your terminal
@@ -105,13 +105,16 @@ class MonolithicDeploymentStrategy(BaseDeploymentStrategy):
105
105
  # Parse env_file_content from LLM
106
106
  env_file_vars = dotenv_values(stream=StringIO(env_file_content))
107
107
 
108
- env_defaults = deployment_config.get_env_var_defaults()
108
+ configured_env = deployment_config.get_configured_env_vars()
109
109
 
110
110
  # Prepare questions for inquirer
111
111
  questions = []
112
112
  for key, value in sorted(env_file_vars.items()):
113
+ # Exclude any custom env that is not configured
114
+ if key not in configured_env:
115
+ continue
113
116
  # Precedence: llm > code default
114
- default_value = value or env_defaults.get(key)
117
+ default_value = value or configured_env[key]
115
118
  questions.append(
116
119
  inquirer.Text(
117
120
  name=key,
@@ -238,6 +241,7 @@ class MonolithicDeploymentStrategy(BaseDeploymentStrategy):
238
241
  images: Dict[str, str],
239
242
  environment_state: MonolithicDeploymentState,
240
243
  existing_env_content: Optional[str] = None,
244
+ initial_messages: Optional[list[ModelMessage]] = None,
241
245
  ):
242
246
  base_compose_template = self.docker_compose_snippets_env.get_template("base.yml")
243
247
  base_compose = base_compose_template.render(app_name=deployment_config.app_name_slug)
@@ -293,7 +297,7 @@ class MonolithicDeploymentStrategy(BaseDeploymentStrategy):
293
297
  confirmed_env_content = existing_env_content or "N/A"
294
298
  is_successful = False
295
299
  docker_compose_content = None
296
- messages = []
300
+ messages = initial_messages or []
297
301
  for attempt in range(settings.max_docker_compose_gen_attempts):
298
302
  print(
299
303
  "\n[bold blue]Generating docker-compose file, Attempt"
@@ -927,7 +931,7 @@ class MonolithicDeploymentStrategy(BaseDeploymentStrategy):
927
931
  env_file_content=existing_env_content,
928
932
  )
929
933
 
930
- is_successful, reason, _, confirmed_env_content = (
934
+ is_successful, reason, validation_messages, confirmed_env_content = (
931
935
  self._deploy_validate_docker_compose(
932
936
  deployment_config,
933
937
  environment,
@@ -947,6 +951,7 @@ class MonolithicDeploymentStrategy(BaseDeploymentStrategy):
947
951
  images,
948
952
  env_state,
949
953
  existing_env_content=confirmed_env_content,
954
+ initial_messages=validation_messages,
950
955
  )
951
956
  else:
952
957
  # This can happen if only frontend was deployed
@@ -3,10 +3,13 @@ import os
3
3
  from importlib.metadata import entry_points
4
4
  from typing import Dict, List, Optional, Tuple, Type
5
5
 
6
- from google.genai.types import ThinkingConfigDict
6
+ from google.genai.types import ThinkingConfigDict, ThinkingLevel
7
7
  from pydantic_ai.models.anthropic import AnthropicModelSettings
8
8
  from pydantic_ai.models.google import GoogleModelSettings
9
- from pydantic_ai.models.openai import OpenAIModelSettings
9
+ from pydantic_ai.models.openai import (
10
+ OpenAIChatModelSettings,
11
+ OpenAIResponsesModelSettings,
12
+ )
10
13
  from pydantic_ai.settings import ModelSettings
11
14
  from rich import print
12
15
 
@@ -100,13 +103,10 @@ class ModelRegistry:
100
103
  def _load_builtin_models(self):
101
104
  """Load built-in models"""
102
105
  for model_cls in [
103
- OpenAIGPT41,
104
- OpenAIGPTO3,
105
- OpenAIGPT5,
106
- AnthropicClaudeSonnet37,
107
- AnthropicClaudeSonnet4,
108
- AnthropicClaudeSonnet45,
109
- GoogleGlaGemini25Pro,
106
+ OpenAIGPT55,
107
+ OpenAIGPT55Pro,
108
+ AnthropicClaudeSonnet46,
109
+ AnthropicClaudeOpus48,
110
110
  GoogleGlaGemini3Pro,
111
111
  ]:
112
112
  self.register(model_cls)
@@ -127,10 +127,10 @@ class ModelRegistry:
127
127
  )
128
128
 
129
129
 
130
- class OpenAIGPT41(BaseAiModel):
130
+ class OpenAIGPT55(BaseAiModel):
131
131
  @classmethod
132
132
  def name(cls) -> str:
133
- return "gpt-4.1"
133
+ return "gpt-5.5"
134
134
 
135
135
  @classmethod
136
136
  def provider(cls) -> str:
@@ -143,17 +143,18 @@ class OpenAIGPT41(BaseAiModel):
143
143
  @classmethod
144
144
  def get_model_settings(cls) -> ModelSettings:
145
145
  """Returns model-specific settings."""
146
- return OpenAIModelSettings()
146
+ return OpenAIChatModelSettings(openai_reasoning_effort="high")
147
147
 
148
148
 
149
- class OpenAIGPTO3(BaseAiModel):
149
+ class OpenAIGPT55Pro(BaseAiModel):
150
150
  @classmethod
151
151
  def name(cls) -> str:
152
- return "o3"
152
+ return "gpt-5.5-pro"
153
153
 
154
154
  @classmethod
155
155
  def provider(cls) -> str:
156
- return "openai"
156
+ # Pro reasoning models are only served via the OpenAI Responses API.
157
+ return "openai-responses"
157
158
 
158
159
  @classmethod
159
160
  def api_key_prefix(cls) -> str:
@@ -162,32 +163,13 @@ class OpenAIGPTO3(BaseAiModel):
162
163
  @classmethod
163
164
  def get_model_settings(cls) -> ModelSettings:
164
165
  """Returns model-specific settings."""
165
- return OpenAIModelSettings(openai_reasoning_effort="high")
166
+ return OpenAIResponsesModelSettings(openai_reasoning_effort="medium")
166
167
 
167
168
 
168
- class OpenAIGPT5(BaseAiModel):
169
+ class AnthropicClaudeSonnet46(BaseAiModel):
169
170
  @classmethod
170
171
  def name(cls) -> str:
171
- return "gpt-5"
172
-
173
- @classmethod
174
- def provider(cls) -> str:
175
- return "openai"
176
-
177
- @classmethod
178
- def api_key_prefix(cls) -> str:
179
- return "OPENAI"
180
-
181
- @classmethod
182
- def get_model_settings(cls) -> ModelSettings:
183
- """Returns model-specific settings."""
184
- return OpenAIModelSettings()
185
-
186
-
187
- class AnthropicClaudeSonnet37(BaseAiModel):
188
- @classmethod
189
- def name(cls) -> str:
190
- return "claude-3-7-sonnet-20250219"
172
+ return "claude-sonnet-4-6"
191
173
 
192
174
  @classmethod
193
175
  def provider(cls) -> str:
@@ -200,13 +182,13 @@ class AnthropicClaudeSonnet37(BaseAiModel):
200
182
  @classmethod
201
183
  def get_model_settings(cls) -> ModelSettings:
202
184
  """Returns model-specific settings."""
203
- return AnthropicModelSettings()
185
+ return AnthropicModelSettings(anthropic_effort="high")
204
186
 
205
187
 
206
- class AnthropicClaudeSonnet4(BaseAiModel):
188
+ class AnthropicClaudeOpus48(BaseAiModel):
207
189
  @classmethod
208
190
  def name(cls) -> str:
209
- return "claude-sonnet-4-20250514"
191
+ return "claude-opus-4-8"
210
192
 
211
193
  @classmethod
212
194
  def provider(cls) -> str:
@@ -219,51 +201,13 @@ class AnthropicClaudeSonnet4(BaseAiModel):
219
201
  @classmethod
220
202
  def get_model_settings(cls) -> ModelSettings:
221
203
  """Returns model-specific settings."""
222
- return AnthropicModelSettings()
223
-
224
-
225
- class AnthropicClaudeSonnet45(BaseAiModel):
226
- @classmethod
227
- def name(cls) -> str:
228
- return "claude-sonnet-4-5-20250929"
229
-
230
- @classmethod
231
- def provider(cls) -> str:
232
- return "anthropic"
233
-
234
- @classmethod
235
- def api_key_prefix(cls) -> str:
236
- return "ANTHROPIC"
237
-
238
- @classmethod
239
- def get_model_settings(cls) -> ModelSettings:
240
- """Returns model-specific settings."""
241
- return AnthropicModelSettings()
242
-
243
-
244
- class GoogleGlaGemini25Pro(BaseAiModel):
245
- @classmethod
246
- def name(cls) -> str:
247
- return "gemini-2.5-pro"
248
-
249
- @classmethod
250
- def provider(cls) -> str:
251
- return "google-gla"
252
-
253
- @classmethod
254
- def api_key_prefix(cls) -> str:
255
- return "GEMINI"
256
-
257
- @classmethod
258
- def get_model_settings(cls) -> ModelSettings:
259
- """Returns model-specific settings."""
260
- return GoogleModelSettings(google_thinking_config=ThinkingConfigDict(thinking_budget=-1))
204
+ return AnthropicModelSettings(anthropic_effort="medium")
261
205
 
262
206
 
263
207
  class GoogleGlaGemini3Pro(BaseAiModel):
264
208
  @classmethod
265
209
  def name(cls) -> str:
266
- return "gemini-3-pro-preview"
210
+ return "gemini-3.1-pro-preview"
267
211
 
268
212
  @classmethod
269
213
  def provider(cls) -> str:
@@ -276,7 +220,9 @@ class GoogleGlaGemini3Pro(BaseAiModel):
276
220
  @classmethod
277
221
  def get_model_settings(cls) -> ModelSettings:
278
222
  """Returns model-specific settings."""
279
- return GoogleModelSettings(google_thinking_config=ThinkingConfigDict(thinking_level="HIGH"))
223
+ return GoogleModelSettings(
224
+ google_thinking_config=ThinkingConfigDict(thinking_level=ThinkingLevel.HIGH)
225
+ )
280
226
 
281
227
 
282
228
  MODEL_REGISTRY = ModelRegistry()
@@ -8,6 +8,7 @@ import typer
8
8
  from grep_ast import TreeContext, filename_to_lang
9
9
  from grep_ast.tsl import get_language, get_parser
10
10
  from tqdm import tqdm
11
+ from tree_sitter import Query, QueryCursor
11
12
 
12
13
  from opsmith.constants import ROOT_IMPORTANT_FILES
13
14
  from opsmith.git_repo import GitRepo
@@ -272,8 +273,8 @@ class RepoMap:
272
273
  return tags
273
274
 
274
275
  tree = parser_module.parse(bytes(code, "utf-8"))
275
- query = language_module.query(query_scm_content)
276
- captures = query.captures(tree.root_node)
276
+ query = Query(language_module, query_scm_content)
277
+ captures = QueryCursor(query).captures(tree.root_node)
277
278
 
278
279
  processed_tags = set() # To avoid duplicate tags from different patterns
279
280
 
@@ -150,6 +150,12 @@
150
150
  groups: systemd-journal
151
151
  append: yes
152
152
 
153
+ - name: Start Vector service
154
+ ansible.builtin.service:
155
+ name: vector
156
+ state: started
157
+ enabled: yes
158
+
153
159
  - name: Create CloudWatch agent configuration
154
160
  ansible.builtin.copy:
155
161
  content: |
@@ -225,14 +225,13 @@ class DeploymentConfig(ServiceList):
225
225
  return env
226
226
  raise ValueError(f"Environment '{name}' not found in the deployment configuration.")
227
227
 
228
- def get_env_var_defaults(self) -> dict:
229
- """Retrieves a dictionary of environment variable defaults."""
230
- env_var_defaults = {}
228
+ def get_configured_env_vars(self) -> dict:
229
+ """Retrieves a dictionary of configured environment variable with defaults."""
230
+ env_vars = {}
231
231
  for service in self.services:
232
232
  for env_var in service.env_vars:
233
- if env_var.default_value:
234
- env_var_defaults[env_var.key] = env_var.default_value
235
- return env_var_defaults
233
+ env_vars[env_var.key] = env_var.default_value
234
+ return env_vars
236
235
 
237
236
  @classmethod
238
237
  def load(cls: Type["DeploymentConfig"], deployments_path: Path) -> Optional["DeploymentConfig"]:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "opsmith-cli"
3
- version = "0.4.4b"
3
+ version = "0.4.6b"
4
4
  description = "Opsmith is an AI devops engineer in your terminal"
5
5
  readme = {file = "README.md", content-type = "text/markdown"}
6
6
  classifiers = [
@@ -16,26 +16,28 @@ classifiers = [
16
16
  "Topic :: Software Development",
17
17
  ]
18
18
  license = "GPL-3.0-only"
19
- requires-python = ">=3.11"
19
+ requires-python = ">=3.12"
20
20
  dependencies = [
21
- "ansible==12.3.0",
22
- "gitpython==3.1.45",
23
- "google-api-python-client==2.187.0",
24
- "google-cloud-compute==1.40.0",
25
- "google-cloud-resource-manager==1.15.0",
26
- "google-cloud-storage==3.7.0",
21
+ "ansible==14.1.0",
22
+ "gitpython==3.1.50",
23
+ "google-api-python-client==2.197.0",
24
+ "google-cloud-compute==1.48.0",
25
+ "google-cloud-resource-manager==1.17.0",
26
+ "google-cloud-storage==3.12.0",
27
27
  "grep-ast==0.9.0",
28
28
  "inquirer==3.4.1",
29
29
  "jinja2==3.1.6",
30
30
  "networkx==3.6.1",
31
- "pick==2.4.0",
32
- "pydantic==2.12.5",
33
- "pydantic-ai==1.37.0",
34
- "python-dotenv==1.2.1",
31
+ "pick==2.6.0",
32
+ "pydantic==2.13.4",
33
+ "pydantic-ai==1.107.0",
34
+ "python-dotenv==1.2.2",
35
35
  "pyyaml==6.0.3",
36
- "tqdm==4.67.1",
37
- "tree-sitter-language-pack==0.13.0",
38
- "typer==0.20.1",
36
+ "rich==15.0.0",
37
+ "tqdm==4.68.3",
38
+ "tree-sitter==0.25.2",
39
+ "tree-sitter-language-pack==1.9.1",
40
+ "typer==0.26.7",
39
41
  ]
40
42
 
41
43
  [project.scripts]