terradev-cli 5.5.2__tar.gz → 5.5.3__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 (513) hide show
  1. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/Deployment Package/BNF_GRAMMAR.md +4 -1
  2. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/PKG-INFO +1 -1
  3. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/pyproject.toml +1 -1
  4. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/cli.py +136 -10
  5. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/hf_smart_templates.py +37 -22
  6. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/mcp/server.py +2 -1
  7. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/kubernetes_enhanced.py +3 -0
  8. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/langgraph_service.py +38 -1
  9. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/optimization/auto_optimizer.py +1 -1
  10. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/base_provider.py +3 -0
  11. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/runpod_provider.py +10 -15
  12. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli.egg-info/PKG-INFO +1 -1
  13. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/.env.example +0 -0
  14. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/.github/workflows/action.yml +0 -0
  15. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/.github/workflows/ci.yml +0 -0
  16. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/.github/workflows/release.yml +0 -0
  17. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/.github/workflows/static.yml +0 -0
  18. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/.terradev/custom_providers.example.yaml +0 -0
  19. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/Deployment Package/LIFECYCLES.md +0 -0
  20. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/Deployment Package/architecture.md +0 -0
  21. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/Deployment Package/overview.md +0 -0
  22. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/Deployment Package/security.md +0 -0
  23. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/Deployment Package/troubleshooting.md +0 -0
  24. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/Dockerfile +0 -0
  25. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/Dockerfile.test +0 -0
  26. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/LICENSE +0 -0
  27. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/MANIFEST.in +0 -0
  28. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/README.md +0 -0
  29. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/agentic-template/helm/values-agentic.yaml +0 -0
  30. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/agentic-template/k8s/fleet-manifests.yaml +0 -0
  31. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/README.md +0 -0
  32. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/helm/values-glm5.yaml +0 -0
  33. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/k8s/hpa.yaml +0 -0
  34. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/k8s/model-cache-pvc.yaml +0 -0
  35. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/k8s/namespace.yaml +0 -0
  36. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/k8s/pdb.yaml +0 -0
  37. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/k8s/service.yaml +0 -0
  38. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/k8s/sglang-deployment.yaml +0 -0
  39. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/k8s/vllm-deployment.yaml +0 -0
  40. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/task.yaml +0 -0
  41. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/terraform/main.tf +0 -0
  42. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/terraform/outputs.tf +0 -0
  43. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/glm-5/terraform/variables.tf +0 -0
  44. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/llmd-template/README.md +0 -0
  45. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/llmd-template/helm/values-llmd.yaml +0 -0
  46. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/llmd-template/k8s/gateway.yaml +0 -0
  47. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/llmd-template/k8s/leaderworkerset.yaml +0 -0
  48. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/llmd-template/k8s/llminferenceservice.yaml +0 -0
  49. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/llmd-template/task.yaml +0 -0
  50. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/helm/Chart.yaml +0 -0
  51. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/helm/templates/_helpers.tpl +0 -0
  52. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/helm/templates/deployment.yaml +0 -0
  53. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/helm/templates/pvc-adapter.yaml +0 -0
  54. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/helm/templates/pvc-registry.yaml +0 -0
  55. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/helm/templates/service.yaml +0 -0
  56. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/helm/templates/serviceaccount.yaml +0 -0
  57. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/helm/values-lora.yaml +0 -0
  58. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/k8s/adapter-pvc.yaml +0 -0
  59. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/k8s/deployment.yaml +0 -0
  60. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/k8s/namespace.yaml +0 -0
  61. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/k8s/registry-pvc.yaml +0 -0
  62. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/k8s/service.yaml +0 -0
  63. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lora-template/k8s/serviceaccount.yaml +0 -0
  64. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lorax-template/helm/Chart.yaml +0 -0
  65. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lorax-template/helm/templates/_helpers.tpl +0 -0
  66. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lorax-template/helm/templates/deployment.yaml +0 -0
  67. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lorax-template/helm/templates/pvc.yaml +0 -0
  68. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lorax-template/helm/templates/service.yaml +0 -0
  69. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lorax-template/helm/templates/serviceaccount.yaml +0 -0
  70. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/lorax-template/helm/values-lorax.yaml +0 -0
  71. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/README.md +0 -0
  72. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/helm/values-moe.yaml +0 -0
  73. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/k8s/deployment.yaml +0 -0
  74. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/k8s/hpa.yaml +0 -0
  75. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/k8s/model-cache-pvc.yaml +0 -0
  76. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/k8s/namespace.yaml +0 -0
  77. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/k8s/pdb.yaml +0 -0
  78. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/k8s/service.yaml +0 -0
  79. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/task.yaml +0 -0
  80. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/terraform/main.tf +0 -0
  81. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/terraform/outputs.tf +0 -0
  82. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/moe-template/terraform/variables.tf +0 -0
  83. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/rag-template/README.md +0 -0
  84. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/rag-template/helm/values-rag.yaml +0 -0
  85. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/rag-template/k8s/deployment.yaml +0 -0
  86. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/clusters/rag-template/terraform/main.tf +0 -0
  87. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/demo/RECORDING_GUIDE.md +0 -0
  88. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/demo/generate_gif.py +0 -0
  89. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/demo/terradev-demo.gif +0 -0
  90. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/ADVANCED_FINANCIAL_INNOVATIONS.md +0 -0
  91. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/API_DOCUMENTATION.md +0 -0
  92. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/BingSiteAuth.xml +0 -0
  93. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/FINOPS_ATTRIBUTION_SYSTEM.md +0 -0
  94. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/LORA_COMMAND_LIFECYCLE.md +0 -0
  95. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/USER_GUIDE.md +0 -0
  96. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/VLLM_AUTO_OPTIMIZATION_GUIDE.md +0 -0
  97. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/VLLM_OPTIMIZATION_GUIDE.md +0 -0
  98. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/architecture.md +0 -0
  99. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/index.html +0 -0
  100. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/overview.md +0 -0
  101. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/robots.txt +0 -0
  102. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/sitemap.xml +0 -0
  103. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/docs/test_spot_provision.md +0 -0
  104. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/examples/aws_ssm_starter.py +0 -0
  105. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/examples/config.example.json +0 -0
  106. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/examples/demo_k8s_config.yaml +0 -0
  107. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/examples/direct_aws_starter.py +0 -0
  108. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/examples/ec2_user_data_starter.py +0 -0
  109. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/examples/example-pipeline.yaml +0 -0
  110. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/examples/kubernetes_training_deployment.yaml +0 -0
  111. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/examples/simple_ssm_starter.py +0 -0
  112. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/examples/ssh_server_starter.py +0 -0
  113. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/examples/start_aws_servers.py +0 -0
  114. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/helm/terradev/Chart.yaml +0 -0
  115. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/helm/terradev/templates/_helpers.tpl +0 -0
  116. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/helm/terradev/templates/deployment.yaml +0 -0
  117. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/helm/terradev/values.yaml +0 -0
  118. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/infrastructure/bucket-policy.json +0 -0
  119. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/infrastructure/grafana_training_dashboard.json +0 -0
  120. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/infrastructure/kubernetes/microservices.yaml +0 -0
  121. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/infrastructure/terraform/main.tf +0 -0
  122. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/infrastructure/terraform/parallelism.tf +0 -0
  123. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/integrations/cli-tool.tf +0 -0
  124. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/integrations/cloud-management-widgets.tf +0 -0
  125. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/integrations/cloud-provider-apis.py +0 -0
  126. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/integrations/critical-widgets.tf +0 -0
  127. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/integrations/devops-cicd-widgets.tf +0 -0
  128. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/integrations/devops-essential-tools.tf +0 -0
  129. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/integrations/docker-integration.tf +0 -0
  130. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/integrations/kubernetes-operator.tf +0 -0
  131. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/integrations/mlflow-integration.tf +0 -0
  132. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/marketing/bare-metal-latitude-post.md +0 -0
  133. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/modules/datadog/README.md +0 -0
  134. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/modules/datadog/dashboard.tf +0 -0
  135. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/modules/datadog/monitors.tf +0 -0
  136. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/modules/datadog/outputs.tf +0 -0
  137. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/modules/datadog/provider.tf +0 -0
  138. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/modules/datadog/variables.tf +0 -0
  139. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/modules/datadog/versions.tf +0 -0
  140. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/modules/prometheus_training_config.yml +0 -0
  141. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/Cargo.toml +0 -0
  142. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/INTEGRATION_GUIDE.md +0 -0
  143. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/PERFORMANCE_OPTIMIZATIONS.md +0 -0
  144. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/README.md +0 -0
  145. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-artifact-verification/Cargo.toml +0 -0
  146. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-artifact-verification/src/lib.rs +0 -0
  147. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-artifact-verification/src/types.rs +0 -0
  148. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-artifact-verification/src/verifier.rs +0 -0
  149. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-authentication/Cargo.toml +0 -0
  150. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-authentication/src/encoding.rs +0 -0
  151. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-authentication/src/hmac.rs +0 -0
  152. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-authentication/src/lib.rs +0 -0
  153. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-authentication/src/types.rs +0 -0
  154. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-cache-eviction/Cargo.toml +0 -0
  155. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-cache-eviction/src/cache.rs +0 -0
  156. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-cache-eviction/src/lib.rs +0 -0
  157. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-cache-eviction/src/types.rs +0 -0
  158. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-command-executor/Cargo.toml +0 -0
  159. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-command-executor/src/lib.rs +0 -0
  160. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-config-validator/Cargo.toml +0 -0
  161. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-config-validator/src/lib.rs +0 -0
  162. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-config-validator/src/types.rs +0 -0
  163. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-config-validator/src/validator.rs +0 -0
  164. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-connection-pool/Cargo.toml +0 -0
  165. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-connection-pool/src/lib.rs +0 -0
  166. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-connection-pool/src/pool.rs +0 -0
  167. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-connection-pool/src/types.rs +0 -0
  168. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-cost-calculator/Cargo.toml +0 -0
  169. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-cost-calculator/src/calculator.rs +0 -0
  170. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-cost-calculator/src/lib.rs +0 -0
  171. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-cost-calculator/src/types.rs +0 -0
  172. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-cost-scaler/Cargo.toml +0 -0
  173. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-cost-scaler/src/lib.rs +0 -0
  174. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-credential-vault/Cargo.toml +0 -0
  175. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-credential-vault/src/lib.rs +0 -0
  176. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-credential-vault/src/types.rs +0 -0
  177. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-credential-vault/src/vault.rs +0 -0
  178. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-dag-executor/Cargo.toml +0 -0
  179. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-dag-executor/src/lib.rs +0 -0
  180. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-distributed-lock/Cargo.toml +0 -0
  181. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-distributed-lock/src/lib.rs +0 -0
  182. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-distributed-lock/src/lock.rs +0 -0
  183. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-distributed-lock/src/types.rs +0 -0
  184. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-egress-optimizer/Cargo.toml +0 -0
  185. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-egress-optimizer/src/graph.rs +0 -0
  186. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-egress-optimizer/src/lib.rs +0 -0
  187. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-egress-optimizer/src/types.rs +0 -0
  188. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-event-bus/Cargo.toml +0 -0
  189. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-event-bus/src/bus.rs +0 -0
  190. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-event-bus/src/lib.rs +0 -0
  191. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-event-bus/src/types.rs +0 -0
  192. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-governance/Cargo.toml +0 -0
  193. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-governance/src/lib.rs +0 -0
  194. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-gpu-discovery/Cargo.toml +0 -0
  195. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-gpu-discovery/src/lib.rs +0 -0
  196. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-gpu-topology/Cargo.toml +0 -0
  197. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-gpu-topology/src/lib.rs +0 -0
  198. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-gpu-topology/src/topology.rs +0 -0
  199. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-gpu-topology/src/types.rs +0 -0
  200. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-helm-generator/Cargo.toml +0 -0
  201. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-helm-generator/src/lib.rs +0 -0
  202. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-mcp-codec/Cargo.toml +0 -0
  203. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-mcp-codec/src/lib.rs +0 -0
  204. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-mcp-optimizer/Cargo.toml +0 -0
  205. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-mcp-optimizer/src/lib.rs +0 -0
  206. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-price-intelligence/Cargo.toml +0 -0
  207. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-price-intelligence/src/lib.rs +0 -0
  208. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-quota-manager/Cargo.toml +0 -0
  209. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-quota-manager/src/lib.rs +0 -0
  210. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-quota-manager/src/manager.rs +0 -0
  211. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-quota-manager/src/types.rs +0 -0
  212. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-resource-pool/Cargo.toml +0 -0
  213. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-resource-pool/src/lib.rs +0 -0
  214. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-resource-pool/src/pool.rs +0 -0
  215. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-resource-pool/src/types.rs +0 -0
  216. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-result-compressor/Cargo.toml +0 -0
  217. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-result-compressor/src/lib.rs +0 -0
  218. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-semantic-router/Cargo.toml +0 -0
  219. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-semantic-router/src/lib.rs +0 -0
  220. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-snapshot-manager/Cargo.toml +0 -0
  221. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-snapshot-manager/src/lib.rs +0 -0
  222. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-snapshot-manager/src/snapshot.rs +0 -0
  223. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-snapshot-manager/src/types.rs +0 -0
  224. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-state-machine/Cargo.toml +0 -0
  225. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-state-machine/src/lib.rs +0 -0
  226. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-state-machine/src/state.rs +0 -0
  227. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-state-machine/src/types.rs +0 -0
  228. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-telemetry/Cargo.toml +0 -0
  229. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-telemetry/src/lib.rs +0 -0
  230. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-telemetry/src/pipeline.rs +0 -0
  231. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-telemetry/src/types.rs +0 -0
  232. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-tool-registry/Cargo.toml +0 -0
  233. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-tool-registry/src/lib.rs +0 -0
  234. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-vram-estimator/Cargo.toml +0 -0
  235. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-vram-estimator/src/estimator.rs +0 -0
  236. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-vram-estimator/src/lib.rs +0 -0
  237. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-vram-estimator/src/types.rs +0 -0
  238. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-warm-pool/Cargo.toml +0 -0
  239. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/rust/terradev-warm-pool/src/lib.rs +0 -0
  240. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/scripts/action.py +0 -0
  241. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/scripts/gpu-check.sh +0 -0
  242. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/setup/Lambda Cloud API spec 1.8.3.json +0 -0
  243. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/setup/docker-compose.yml +0 -0
  244. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/setup/nginx.conf +0 -0
  245. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/setup/setup.sh +0 -0
  246. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/setup.cfg +0 -0
  247. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/CHANGELOG.md +0 -0
  248. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/COMPLETE_COMMAND_REFERENCE.md +0 -0
  249. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/COMPLETE_INTEGRATION_GUIDE.md +0 -0
  250. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/IMPLEMENTATION_SUMMARY.md +0 -0
  251. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/MAKING_SPOT_WORK_FOR_STATEFUL_WORKLOADS.md +0 -0
  252. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/README.md +0 -0
  253. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/SGLANG_COMMAND_GUIDE.md +0 -0
  254. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/TERRADEV_STACK_CHART.md +0 -0
  255. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/__init__.py +0 -0
  256. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/__main__.py +0 -0
  257. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/cli_hf_spaces.py +0 -0
  258. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/cli_karpenter.py +0 -0
  259. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/__init__.py +0 -0
  260. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/agentic_provisioner.py +0 -0
  261. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/agentic_topology.py +0 -0
  262. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/async_config.py +0 -0
  263. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/auth.py +0 -0
  264. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/auto_lineage.py +0 -0
  265. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/cache_manager.py +0 -0
  266. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/checkpoint_manager.py +0 -0
  267. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/command_executor.py +0 -0
  268. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/config.py +0 -0
  269. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/config_validator.py +0 -0
  270. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/cost_scaler.py +0 -0
  271. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/cost_tracker.py +0 -0
  272. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/credential_vault.py +0 -0
  273. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/cuda_graph_integrator.py +0 -0
  274. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/dag_executor.py +0 -0
  275. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/data_governance.py +0 -0
  276. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/dataset_stager.py +0 -0
  277. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/deployment_router.py +0 -0
  278. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/distributed_lock.py +0 -0
  279. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/drift_detector.py +0 -0
  280. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/egress_cost_monitor.py +0 -0
  281. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/egress_optimizer.py +0 -0
  282. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/evaluation_orchestrator.py +0 -0
  283. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/event_system.py +0 -0
  284. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/gitops_manager.py +0 -0
  285. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/gpu_discovery.py +0 -0
  286. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/gpu_topology.py +0 -0
  287. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/helm_generator.py +0 -0
  288. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/hf_cli_integration.py +0 -0
  289. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/hf_spaces.py +0 -0
  290. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/inference_router.py +0 -0
  291. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/inference_spot_manager.py +0 -0
  292. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/job_state_manager.py +0 -0
  293. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/kv_cache_checkpoint_manager.py +0 -0
  294. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/kv_cache_checkpoint_tests.py +0 -0
  295. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/kv_sharing.py +0 -0
  296. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/lora_consistency.py +0 -0
  297. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/lora_cost_attribution.py +0 -0
  298. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/lora_versioning.py +0 -0
  299. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/manifest_cache.py +0 -0
  300. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/manifest_example.json +0 -0
  301. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/mig_manager.py +0 -0
  302. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/migration_orchestrator.py +0 -0
  303. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/mla_vram_estimator.py +0 -0
  304. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/mla_vram_tests.py +0 -0
  305. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/model_orchestrator.py +0 -0
  306. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/oidc_provider.py +0 -0
  307. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/optimization_config.py +0 -0
  308. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/parallel_provisioner.py +0 -0
  309. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/pd_transport.py +0 -0
  310. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/pipeline_schema.py +0 -0
  311. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/preflight_validator.py +0 -0
  312. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/price_discovery.py +0 -0
  313. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/price_intelligence.py +0 -0
  314. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/public_ip_billing_tracker.py +0 -0
  315. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/quick_start.py +0 -0
  316. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/quota_manager.py +0 -0
  317. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/rate_limiter.py +0 -0
  318. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/rust_telemetry.py +0 -0
  319. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/semantic_router.py +0 -0
  320. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/semantic_signals/__init__.py +0 -0
  321. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/semantic_signals/base_signal.py +0 -0
  322. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/semantic_signals/complexity_signal.py +0 -0
  323. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/semantic_signals/domain_signal.py +0 -0
  324. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/semantic_signals/keyword_signal.py +0 -0
  325. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/semantic_signals/language_signal.py +0 -0
  326. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/semantic_signals/modality_signal.py +0 -0
  327. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/semantic_signals/orchestrator.py +0 -0
  328. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/semantic_signals/routing_policy.yaml +0 -0
  329. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/semantic_signals/safety_signal.py +0 -0
  330. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/session_manager.py +0 -0
  331. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/ssh_key_manager.py +0 -0
  332. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/telemetry.py +0 -0
  333. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/terradev_engine.py +0 -0
  334. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/trace_viewer.py +0 -0
  335. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/training_monitor.py +0 -0
  336. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/training_orchestrator.py +0 -0
  337. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/user_manager.py +0 -0
  338. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/warm_pool_manager.py +0 -0
  339. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/weight_streaming_benchmarks.py +0 -0
  340. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/core/weight_streaming_manager.py +0 -0
  341. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/cost_optimizer.py +0 -0
  342. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/credential_prompt.py +0 -0
  343. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/demo.py +0 -0
  344. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/entry_point.py +0 -0
  345. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/integrations/Terradev LOGO BLACK.png +0 -0
  346. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/integrations/Terradev LOGO WHITEW.png +0 -0
  347. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/integrations/__init__.py +0 -0
  348. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/integrations/databricks_integration.py +0 -0
  349. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/integrations/datadog_integration.py +0 -0
  350. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/integrations/helicone_integration.py +0 -0
  351. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/integrations/prometheus_integration.py +0 -0
  352. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/integrations/wandb_integration.py +0 -0
  353. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/k8s/terraform_wrapper.py +0 -0
  354. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/kubernetes/inferx-cost-optimized.yaml +0 -0
  355. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/kubernetes/inferx-infrastructure.yaml +0 -0
  356. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/kubernetes/inferx-models.yaml +0 -0
  357. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/kubernetes/inferx-platform.yaml +0 -0
  358. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/kubernetes/inferx_setup.py +0 -0
  359. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/mcp/__init__.py +0 -0
  360. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/__init__.py +0 -0
  361. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/agentic_serving.py +0 -0
  362. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/drift_retrain_service.py +0 -0
  363. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/dvc_service.py +0 -0
  364. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/guardrails_service.py +0 -0
  365. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/huggingface_service.py +0 -0
  366. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/kserve_service.py +0 -0
  367. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/kubernetes_service.py +0 -0
  368. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/langchain_service.py +0 -0
  369. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/langfuse_service.py +0 -0
  370. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/lmcache_service.py +0 -0
  371. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/lora_registry.py +0 -0
  372. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/lorax_service.py +0 -0
  373. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/mlflow_service.py +0 -0
  374. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/model_router.py +0 -0
  375. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/ollama_service.py +0 -0
  376. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/peft_import_service.py +0 -0
  377. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/phoenix_service.py +0 -0
  378. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/qdrant_service.py +0 -0
  379. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/ray_enhanced.py +0 -0
  380. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/ray_service.py +0 -0
  381. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/sglang_service.py +0 -0
  382. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/vllm_service.py +0 -0
  383. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/ml_services/wandb_enhanced.py +0 -0
  384. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/optimization/__init__.py +0 -0
  385. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/optimization/cuco_optimizer.py +0 -0
  386. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/LATITUDE_PROVIDER.md +0 -0
  387. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/__init__.py +0 -0
  388. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/alibaba_provider.py +0 -0
  389. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/aws_provider.py +0 -0
  390. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/azure_provider.py +0 -0
  391. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/baseten_provider.py +0 -0
  392. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/coreweave_provider.py +0 -0
  393. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/crusoe_provider.py +0 -0
  394. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/demo_mode.py +0 -0
  395. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/digitalocean_provider.py +0 -0
  396. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/e2e_networks_provider.py +0 -0
  397. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/fluidstack_provider.py +0 -0
  398. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/gcp_provider.py +0 -0
  399. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/gpu_catalog.py +0 -0
  400. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/hetzner_provider.py +0 -0
  401. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/huggingface_provider.py +0 -0
  402. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/hyperstack_provider.py +0 -0
  403. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/inferx_provider.py +0 -0
  404. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/lambda_labs_provider.py +0 -0
  405. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/latitude_provider.py +0 -0
  406. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/oracle_provider.py +0 -0
  407. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/ovhcloud_provider.py +0 -0
  408. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/provider_factory.py +0 -0
  409. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/provider_profiles.py +0 -0
  410. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/real_pricing.py +0 -0
  411. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/registry.py +0 -0
  412. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/siliconflow_provider.py +0 -0
  413. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/tensordock_provider.py +0 -0
  414. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/types.py +0 -0
  415. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/vastai_provider.py +0 -0
  416. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/providers/yottalabs_provider.py +0 -0
  417. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/requirements.txt +0 -0
  418. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/requirements_minimal.txt +0 -0
  419. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/main.tf +0 -0
  420. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/__init__.py +0 -0
  421. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-aws/bootstrap.sh +0 -0
  422. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-aws/main.tf +0 -0
  423. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-aws/outputs.tf +0 -0
  424. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-aws/variables.tf +0 -0
  425. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-aws/versions.tf +0 -0
  426. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/bootstrap.sh +0 -0
  427. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/main.tf +0 -0
  428. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/outputs.tf +0 -0
  429. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/variables.tf +0 -0
  430. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/versions.tf +0 -0
  431. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-lambda/bootstrap.sh +0 -0
  432. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-lambda/main.tf +0 -0
  433. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-lambda/outputs.tf +0 -0
  434. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-lambda/variables.tf +0 -0
  435. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-lambda/versions.tf +0 -0
  436. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-vastai/bootstrap.sh +0 -0
  437. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-vastai/main.tf +0 -0
  438. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-vastai/outputs.tf +0 -0
  439. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-vastai/variables.tf +0 -0
  440. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/gpu-node-vastai/versions.tf +0 -0
  441. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/k8s-control-plane/join-script.tpl +0 -0
  442. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/k8s-control-plane/kubeconfig.tpl +0 -0
  443. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/k8s-control-plane/main.tf +0 -0
  444. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/k8s-control-plane/outputs.tf +0 -0
  445. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/k8s-control-plane/variables.tf +0 -0
  446. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/k8s-control-plane/versions.tf +0 -0
  447. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/networking/main.tf +0 -0
  448. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/networking/outputs.tf +0 -0
  449. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/networking/variables.tf +0 -0
  450. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/modules/networking/versions.tf +0 -0
  451. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/outputs.tf +0 -0
  452. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/price-optimizer/optimal-allocation.py +0 -0
  453. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/providers.tf +0 -0
  454. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/terraform/variables.tf +0 -0
  455. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/test_summary.py +0 -0
  456. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/utils/__init__.py +0 -0
  457. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli/utils/formatters.py +0 -0
  458. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli.egg-info/SOURCES.txt +0 -0
  459. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli.egg-info/dependency_links.txt +0 -0
  460. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli.egg-info/entry_points.txt +0 -0
  461. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli.egg-info/requires.txt +0 -0
  462. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terradev_cli.egg-info/top_level.txt +0 -0
  463. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform.tfvars.example +0 -0
  464. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_optimization/backend.tf +0 -0
  465. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_optimization/error_handling.py +0 -0
  466. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_optimization/parallel_provisioning.tf +0 -0
  467. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_optimization/storage_choice_matrix.py +0 -0
  468. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_optimization/test_error_handler.py +0 -0
  469. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_optimization/versions.tf +0 -0
  470. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_transparency/audit_demo/trail_3caed73ad5bf.json +0 -0
  471. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_transparency/audit_trail.py +0 -0
  472. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_transparency/audit_trails.json +0 -0
  473. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_transparency/decision_engine.py +0 -0
  474. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_transparency/decision_logs.json +0 -0
  475. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_transparency/operations.json +0 -0
  476. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_transparency/terraform_manager.py +0 -0
  477. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_transparency/terraform_plans.json +0 -0
  478. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_transparency/transparency_demo.py +0 -0
  479. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/terraform_transparency/transparency_report.json +0 -0
  480. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/CREDENTIAL_STRATEGY.md +0 -0
  481. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/INTEGRATION_STRATEGY.md +0 -0
  482. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/Makefile +0 -0
  483. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/ci_pipeline.py +0 -0
  484. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/conftest.py +0 -0
  485. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/root_tests/test_cli_ux_battle.py +0 -0
  486. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/root_tests/test_cli_ux_battle_fixed.py +0 -0
  487. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/root_tests/test_cli_ux_final.py +0 -0
  488. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/root_tests/test_final_integration.py +0 -0
  489. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/root_tests/test_integrated_optimization.py +0 -0
  490. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/root_tests/test_p10_production_failover.py +0 -0
  491. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/root_tests/test_sso_phase1.py +0 -0
  492. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/root_tests/test_vllm_optimization.py +0 -0
  493. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/simple_test.py +0 -0
  494. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_ai_integrations.py +0 -0
  495. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_checkpoint_manager.py +0 -0
  496. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_cli_smoke.py +0 -0
  497. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_dag_executor.py +0 -0
  498. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_flashoptim.py +0 -0
  499. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_integration.py +0 -0
  500. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_job_state_manager.py +0 -0
  501. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_k8s_regression.py +0 -0
  502. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_latitude_provider.py +0 -0
  503. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_major_providers.py +0 -0
  504. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_mcp_handlers.py +0 -0
  505. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_new_providers.py +0 -0
  506. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_provider_conformance.py +0 -0
  507. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_providers.py +0 -0
  508. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_semantic_router.py +0 -0
  509. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_sglang_optimization.py +0 -0
  510. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_ssh_key_manager.py +0 -0
  511. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_training_monitor.py +0 -0
  512. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_training_orchestrator.py +0 -0
  513. {terradev_cli-5.5.2 → terradev_cli-5.5.3}/tests/test_vllm_features.py +0 -0
@@ -123,9 +123,12 @@
123
123
  [--spot-strategy <spot-strategy>]
124
124
  [--backend <inference-backend>]
125
125
  [--prefer-local]
126
+ [--select <selection>]
127
+ [--auto]
126
128
 
127
129
  <provision-type> ::= inference | training | jupyter | custom
128
- <spot-strategy> ::= cheapest | most-available | balanced
130
+ <spot-strategy> ::= aggressive | cheapest | balanced | conservative | safe
131
+ <selection> ::= <integer> | "cheapest" | "cheapest-spot" | "cheapest-secure"
129
132
 
130
133
  <instance-command> ::= instance
131
134
  -i <string>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: terradev-cli
3
- Version: 5.5.2
3
+ Version: 5.5.3
4
4
  Summary: An imperative command-line-interface for AI workload orchestration.
5
5
  Author-email: Terradev Team <team@terradev.com>
6
6
  Maintainer-email: Terradev Team <team@terradev.com>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "terradev-cli"
7
- version = "5.5.2"
7
+ version = "5.5.3"
8
8
  description = "An imperative command-line-interface for AI workload orchestration."
9
9
  readme = "README.md"
10
10
  license = {text = "Apache-2.0"}
@@ -507,6 +507,7 @@ class TerradevAPI:
507
507
  "availability": "spot" if q.get("spot") else "on-demand",
508
508
  "gpu_count": q.get("gpu_count", 1),
509
509
  "instance_type": q.get("instance_type", "N/A"),
510
+ "memory_gb": q.get("memory_gb", 0),
510
511
  }
511
512
  )
512
513
  return quotes
@@ -2338,9 +2339,9 @@ profiles:
2338
2339
  )
2339
2340
  @click.option(
2340
2341
  "--spot-strategy",
2341
- type=click.Choice(["aggressive", "balanced", "conservative"]),
2342
+ type=click.Choice(["aggressive", "cheapest", "balanced", "conservative", "safe"]),
2342
2343
  default="balanced",
2343
- help="Spot instance strategy: aggressive (cheapest), balanced, conservative (most stable)",
2344
+ help="Spot instance strategy: aggressive/cheapest, balanced, conservative/safe (most stable)",
2344
2345
  )
2345
2346
  @click.option(
2346
2347
  "--backend",
@@ -2378,6 +2379,18 @@ profiles:
2378
2379
  default="fp16",
2379
2380
  help="KV cache dtype. fp8 halves KV VRAM requirement.",
2380
2381
  )
2382
+ @click.option(
2383
+ "--select",
2384
+ "select_instance",
2385
+ default=None,
2386
+ help="Select instance by number or keyword: 1-N, cheapest, cheapest-spot, cheapest-secure, SXM4-40GB, SXM4-80GB, 80GB PCIe",
2387
+ )
2388
+ @click.option(
2389
+ "--auto",
2390
+ is_flag=True,
2391
+ default=False,
2392
+ help="Auto-select cheapest instance without prompting (CI/CD mode)",
2393
+ )
2381
2394
  def provision(
2382
2395
  gpu_type,
2383
2396
  count,
@@ -2399,6 +2412,8 @@ def provision(
2399
2412
  context_k,
2400
2413
  sharing_topology,
2401
2414
  dtype,
2415
+ select_instance,
2416
+ auto,
2402
2417
  ):
2403
2418
  """Provision GPU instances across multiple clouds with auto-optimization.
2404
2419
 
@@ -2565,6 +2580,9 @@ def provision(
2565
2580
 
2566
2581
  # ── Spot vs On-Demand Selection Logic ──
2567
2582
  use_spot = None
2583
+ # Normalize spot strategy aliases
2584
+ _strategy_aliases = {"cheapest": "aggressive", "safe": "conservative"}
2585
+ spot_strategy = _strategy_aliases.get(spot_strategy, spot_strategy)
2568
2586
  if spot and on_demand:
2569
2587
  print("ERROR: Cannot specify both --spot and --on-demand")
2570
2588
  return 1
@@ -2811,6 +2829,107 @@ def provision(
2811
2829
  f"LOCKED: Only on-demand instances available ({len(on_demand_quotes)} options)"
2812
2830
  )
2813
2831
 
2832
+ # ── Instance Selection Logic ──
2833
+ # Display instance table and handle selection (interactive, --select, --auto)
2834
+ import sys
2835
+
2836
+ def _select_instance(quotes, select_arg, auto_mode):
2837
+ """Select an instance from quotes based on selection criteria"""
2838
+ if not quotes:
2839
+ return None
2840
+
2841
+ # Display instance table
2842
+ print(f"\nAvailable {gpu_type} Instances:")
2843
+ print(f"{'#':<4} {'Provider':<14} {'Region':<14} {'$/hr':<10} {'VRAM':<8} {'Instance':<20} {'Spot'}")
2844
+ print("-" * 78)
2845
+ for i, q in enumerate(quotes):
2846
+ vram_str = f"{q.get('memory_gb', 0):.0f}GB" if q.get('memory_gb') else "N/A"
2847
+ spot_mark = "✓" if q.get("availability") == "spot" else ""
2848
+ instance_short = q.get("instance_type", "N/A")[:20]
2849
+ print(f"{i+1:<4} {q['provider']:<14} {q['region']:<14} ${q['price']:<9.2f} {vram_str:<8} {instance_short:<20} {spot_mark}")
2850
+ print("-" * 78)
2851
+
2852
+ # Determine selection
2853
+ selected_index = None
2854
+
2855
+ if select_arg:
2856
+ # --select flag specified
2857
+ if select_arg.isdigit():
2858
+ # Numeric selection
2859
+ idx = int(select_arg) - 1
2860
+ if 0 <= idx < len(quotes):
2861
+ selected_index = idx
2862
+ else:
2863
+ print(f"ERROR: Invalid selection {select_arg}. Must be 1-{len(quotes)}")
2864
+ return None
2865
+ elif select_arg == "cheapest":
2866
+ selected_index = 0
2867
+ elif select_arg == "cheapest-spot":
2868
+ spot_quotes = [q for q in quotes if q.get("availability") == "spot"]
2869
+ if spot_quotes:
2870
+ selected_index = quotes.index(spot_quotes[0])
2871
+ else:
2872
+ print("ERROR: No spot instances available")
2873
+ return None
2874
+ elif select_arg == "cheapest-secure":
2875
+ secure_quotes = [q for q in quotes if q.get("availability") != "spot"]
2876
+ if secure_quotes:
2877
+ selected_index = quotes.index(secure_quotes[0])
2878
+ else:
2879
+ print("ERROR: No secure (non-spot) instances available")
2880
+ return None
2881
+ else:
2882
+ # GPU memory variant selection (e.g., SXM4-40GB, 80GB PCIe)
2883
+ select_lower = select_arg.lower()
2884
+ for i, q in enumerate(quotes):
2885
+ instance_type = q.get("instance_type", "").lower()
2886
+ if select_lower in instance_type:
2887
+ selected_index = i
2888
+ break
2889
+ if selected_index is None:
2890
+ print(f"ERROR: No instance matching '{select_arg}' found")
2891
+ return None
2892
+ elif auto_mode or not sys.stdin.isatty():
2893
+ # --auto or non-interactive context: select cheapest
2894
+ selected_index = 0
2895
+ print(f"Auto-selecting cheapest instance (option 1)")
2896
+ else:
2897
+ # Interactive mode: prompt for selection
2898
+ try:
2899
+ user_input = input(f"\nSelect instance [1-{len(quotes)}] (default: 1, Enter to confirm): ").strip()
2900
+ if not user_input:
2901
+ selected_index = 0
2902
+ elif user_input.isdigit():
2903
+ idx = int(user_input) - 1
2904
+ if 0 <= idx < len(quotes):
2905
+ selected_index = idx
2906
+ else:
2907
+ print(f"ERROR: Invalid selection. Must be 1-{len(quotes)}")
2908
+ return None
2909
+ else:
2910
+ print(f"ERROR: Invalid input. Enter a number 1-{len(quotes)}")
2911
+ return None
2912
+ except (EOFError, KeyboardInterrupt):
2913
+ print("\nSelection cancelled")
2914
+ return None
2915
+
2916
+ if selected_index is not None:
2917
+ selected = quotes[selected_index]
2918
+ print(f"\nSelected: {selected['provider']} {selected['region']} ${selected['price']:.2f}/hr {selected.get('instance_type', 'N/A')}")
2919
+ return selected
2920
+
2921
+ return None
2922
+
2923
+ # Apply instance selection
2924
+ selected_instance = _select_instance(all_quotes, select_instance, auto)
2925
+ if selected_instance is None:
2926
+ print("ERROR: No instance selected")
2927
+ return
2928
+
2929
+ # Use only the selected instance for provisioning
2930
+ all_quotes = [selected_instance]
2931
+ count = 1 # Always provision 1 when selecting specific instance
2932
+
2814
2933
  # Record to cost DB
2815
2934
  try:
2816
2935
  from terradev_cli.core.cost_tracker import record_quotes
@@ -2962,8 +3081,8 @@ def provision(
2962
3081
  t0 = time.monotonic()
2963
3082
  try:
2964
3083
  provider = factory.create_provider(pname, creds)
2965
- spot_flag = q.get("availability") == "spot"
2966
- itype = f"{pname}-{'spot' if spot_flag else 'ondemand'}-{gpu_type.lower()}"
3084
+ # Use the instance_type from the quote (provider-specific format)
3085
+ itype = q.get("instance_type", f"{pname}-{gpu_type.lower()}")
2967
3086
 
2968
3087
  # Wrap provision with rate limiter
2969
3088
  async def _provision_with_rate_limit():
@@ -3846,6 +3965,11 @@ def optimize(instance_id, auto_apply):
3846
3965
  """
3847
3966
  all_optimizations = []
3848
3967
 
3968
+ api = TerradevAPI()
3969
+ instances = api.usage.get("instances_created", [])
3970
+ if instance_id:
3971
+ instances = [inst for inst in instances if inst.get("id") == instance_id]
3972
+
3849
3973
  try:
3850
3974
  # Fetch fresh quotes for cost optimization
3851
3975
  gpu_types = list(set(inst.get("gpu_type", "A100") for inst in instances))
@@ -4282,6 +4406,8 @@ def job(job_file, optimize):
4282
4406
 
4283
4407
  # Load job configuration
4284
4408
  try:
4409
+ import yaml
4410
+
4285
4411
  with open(job_file, "r") as f:
4286
4412
  job_config = yaml.safe_load(f)
4287
4413
 
@@ -8546,7 +8672,7 @@ def init(
8546
8672
  @click.option("--namespace", default="gitops-system", help="Namespace for GitOps tools")
8547
8673
  def bootstrap(tool, cluster, namespace):
8548
8674
  """Bootstrap GitOps tool on the cluster"""
8549
- from terradev_cli.core.gitops_manager import GitOpsManager, GitOpsConfig, GitOpsTool
8675
+ from terradev_cli.core.gitops_manager import GitOpsManager, GitOpsConfig, GitOpsTool, GitProvider
8550
8676
 
8551
8677
  # This is a simplified bootstrap - in practice, you'd load config from previous init
8552
8678
  config = GitOpsConfig(
@@ -8584,7 +8710,7 @@ def bootstrap(tool, cluster, namespace):
8584
8710
  )
8585
8711
  def sync(cluster, environment, tool):
8586
8712
  """Sync cluster with Git repository"""
8587
- from terradev_cli.core.gitops_manager import GitOpsManager, GitOpsConfig, GitOpsTool
8713
+ from terradev_cli.core.gitops_manager import GitOpsManager, GitOpsConfig, GitOpsTool, GitProvider
8588
8714
 
8589
8715
  # This is a simplified sync - in practice, you'd load config from previous init
8590
8716
  config = GitOpsConfig(
@@ -8618,7 +8744,7 @@ def sync(cluster, environment, tool):
8618
8744
  @click.option("--environment", default="prod", help="Environment to validate")
8619
8745
  def validate(dry_run, cluster, environment):
8620
8746
  """Validate GitOps configuration"""
8621
- from terradev_cli.core.gitops_manager import GitOpsManager, GitOpsConfig, GitOpsTool
8747
+ from terradev_cli.core.gitops_manager import GitOpsManager, GitOpsConfig, GitOpsTool, GitProvider
8622
8748
 
8623
8749
  # This is a simplified validation - in practice, you'd load config from previous init
8624
8750
  config = GitOpsConfig(
@@ -8652,8 +8778,7 @@ def validate(dry_run, cluster, environment):
8652
8778
  for warning in results["warnings"]:
8653
8779
  print(f" Warning: {warning}")
8654
8780
 
8655
- gitops_manager = GitOpsManager(config)
8656
- asyncio.run(gitops_manager.validate_configuration(path))
8781
+ asyncio.run(run_validate())
8657
8782
 
8658
8783
 
8659
8784
  # InferX Commands
@@ -14129,7 +14254,7 @@ def disable_trigger(name):
14129
14254
  def fire_event(event_type, data, source):
14130
14255
  """Manually fire an event for testing"""
14131
14256
  try:
14132
- from terradev_cli.core.event_system import event_bus, EventType
14257
+ from terradev_cli.core.event_system import event_bus, EventType, Event
14133
14258
 
14134
14259
  event_type_enum = EventType(event_type.replace("-", "_").upper())
14135
14260
 
@@ -14328,6 +14453,7 @@ def register_artifact(type, name, uri, environment, artifact_hash, size, user, p
14328
14453
  Environment,
14329
14454
  event_bus,
14330
14455
  EventType,
14456
+ Event,
14331
14457
  )
14332
14458
 
14333
14459
  artifact_type_enum = ArtifactType(type)
@@ -483,20 +483,24 @@ class SmartTemplateGenerator:
483
483
  if not model_spec or model_spec.model_type != "llm":
484
484
  return "# Error: This model is not suitable for chat applications"
485
485
 
486
- return f'''import gradio as gr
486
+ hardware = model_spec.recommended_hardware.upper()
487
+ parameters = str(model_spec.parameters)
488
+ streaming = "✅ Enabled" if model_spec.streaming_capable else "❌ Disabled"
489
+
490
+ template = '''import gradio as gr
487
491
  import torch
488
492
  from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
489
493
  import threading
490
494
  import time
491
495
 
492
496
  # Model configuration
493
- MODEL_ID = "{model_id}"
497
+ MODEL_ID = "__MODEL_ID__"
494
498
  DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
495
499
  MAX_LENGTH = 500
496
500
  TEMPERATURE = 0.7
497
501
 
498
502
  # Load model and tokenizer
499
- print(f"Loading model: {{MODEL_ID}}")
503
+ print(f"Loading model: {MODEL_ID}")
500
504
  try:
501
505
  tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
502
506
  if tokenizer.pad_token is None:
@@ -512,7 +516,7 @@ try:
512
516
  model.eval()
513
517
  print("Model loaded successfully!")
514
518
  except Exception as e:
515
- print(f"Error loading model: {{e}}")
519
+ print(f"Error loading model: {e}")
516
520
  model = None
517
521
  tokenizer = None
518
522
 
@@ -559,7 +563,7 @@ def generate_response_stream(message, history, temperature=TEMPERATURE, max_leng
559
563
  yield partial_text
560
564
 
561
565
  except Exception as e:
562
- yield f"❌ Generation error: {{e}}"
566
+ yield f"❌ Generation error: {e}"
563
567
 
564
568
  def generate_response_non_stream(message, history, temperature=TEMPERATURE, max_length=MAX_LENGTH):
565
569
  """Generate non-streaming response (fallback)"""
@@ -570,8 +574,8 @@ def generate_response_non_stream(message, history, temperature=TEMPERATURE, max_
570
574
  # Simple prompt for non-streaming mode
571
575
  prompt = message
572
576
  if history:
573
- context = "\\n".join([f"User: {{h}}\\nAssistant: {{a}}" for h, a in history[-3:]])
574
- prompt = f"{{context}}\\nUser: {{message}}\\nAssistant: "
577
+ context = "\\n".join([f"User: {h}\\nAssistant: {a}" for h, a in history[-3:]])
578
+ prompt = f"{context}\\nUser: {message}\\nAssistant: "
575
579
 
576
580
  inputs = tokenizer(prompt, return_tensors="pt").to(DEVICE)
577
581
 
@@ -589,17 +593,17 @@ def generate_response_non_stream(message, history, temperature=TEMPERATURE, max_
589
593
  return response
590
594
 
591
595
  except Exception as e:
592
- return f"❌ Generation error: {{e}}"
596
+ return f"❌ Generation error: {e}"
593
597
 
594
598
  # Create enhanced chat interface
595
- with gr.Blocks(title="{space_name}", theme=gr.themes.Soft()) as demo:
599
+ with gr.Blocks(title="__SPACE_NAME__", theme=gr.themes.Soft()) as demo:
596
600
  gr.Markdown(f"""
597
- # 🤖 {space_name}
601
+ # 🤖 __SPACE_NAME__
598
602
 
599
603
  **Model:** `{MODEL_ID}`
600
- **Hardware:** {model_spec.recommended_hardware.upper()}
601
- **Parameters:** {model_spec.parameters}
602
- **Streaming:** {'✅ Enabled' if model_spec.streaming_capable else '❌ Disabled'}
604
+ **Hardware:** __HARDWARE__
605
+ **Parameters:** __PARAMETERS__
606
+ **Streaming:** __STREAMING__
603
607
 
604
608
  ---
605
609
  """)
@@ -717,10 +721,18 @@ if __name__ == "__main__":
717
721
  demo.queue()
718
722
  demo.launch()
719
723
  '''
724
+ return (
725
+ template
726
+ .replace("__MODEL_ID__", model_id)
727
+ .replace("__SPACE_NAME__", space_name)
728
+ .replace("__HARDWARE__", hardware)
729
+ .replace("__PARAMETERS__", parameters)
730
+ .replace("__STREAMING__", streaming)
731
+ )
720
732
 
721
733
  def generate_embedding_template(self, model_id: str, space_name: str) -> str:
722
734
  """Generate optimized embedding template"""
723
- return f"""import streamlit as st
735
+ template = """import streamlit as st
724
736
  import torch
725
737
  from transformers import AutoModel, AutoTokenizer
726
738
  import numpy as np
@@ -730,14 +742,14 @@ import plotly.express as px
730
742
  import plotly.graph_objects as go
731
743
 
732
744
  # Model configuration
733
- MODEL_ID = "{model_id}"
745
+ MODEL_ID = "__MODEL_ID__"
734
746
  DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
735
747
  BATCH_SIZE = 32
736
748
  MAX_SEQ_LENGTH = 512
737
749
 
738
- st.set_page_config(page_title="{space_name}", layout="wide")
750
+ st.set_page_config(page_title="__SPACE_NAME__", layout="wide")
739
751
 
740
- st.title(f"🔤 {space_name}")
752
+ st.title(f"🔤 __SPACE_NAME__")
741
753
  st.markdown(f"**Model:** `{MODEL_ID}`")
742
754
  st.markdown("**Hardware:** CPU-Optimized for Embeddings")
743
755
 
@@ -749,7 +761,7 @@ def load_model():
749
761
  model = SentenceTransformer(MODEL_ID)
750
762
  return model
751
763
  except Exception as e:
752
- st.error(f"Error loading model: {{e}}")
764
+ st.error(f"Error loading model: {e}")
753
765
  return None
754
766
 
755
767
  st.header("Text Embedding Service")
@@ -801,8 +813,8 @@ if st.button("🚀 Generate Embeddings", type="primary"):
801
813
  })
802
814
 
803
815
  # Show summary
804
- st.write(f"✅ Generated embeddings for **{{len(texts)}}** texts")
805
- st.write(f"📏 Embedding dimensions: **{{len(embeddings[0])}}**")
816
+ st.write(f"✅ Generated embeddings for **{len(texts)}** texts")
817
+ st.write(f"📏 Embedding dimensions: **{len(embeddings[0])}**")
806
818
 
807
819
  # Similarity matrix
808
820
  if len(texts) > 1:
@@ -816,8 +828,8 @@ if st.button("🚀 Generate Embeddings", type="primary"):
816
828
  fig = px.imshow(
817
829
  similarity_matrix,
818
830
  labels=dict(x="Text", y="Text", color="Similarity"),
819
- x=[f"Text {{i+1}}" for i in range(len(texts))],
820
- y=[f"Text {{i+1}}" for i in range(len(texts))],
831
+ x=[f"Text {i+1}" for i in range(len(texts))],
832
+ y=[f"Text {i+1}" for i in range(len(texts))],
821
833
  color_continuous_scale="viridis"
822
834
  )
823
835
  fig.update_layout(title="Text Similarity Matrix")
@@ -921,6 +933,9 @@ with col2:
921
933
  st.markdown("---")
922
934
  st.markdown("🚀 **Powered by Terradev** | Multi-Cloud GPU Arbitrage Platform")
923
935
  """
936
+ return template.replace("__MODEL_ID__", model_id).replace(
937
+ "__SPACE_NAME__", space_name
938
+ )
924
939
 
925
940
 
926
941
  class HardwareOptimizer:
@@ -18,6 +18,7 @@ import hashlib
18
18
  import json
19
19
  import logging
20
20
  import os
21
+ import re
21
22
  import secrets
22
23
  import subprocess
23
24
  import sys
@@ -33,7 +34,7 @@ try:
33
34
  import aiohttp
34
35
  except ImportError:
35
36
  aiohttp = None # type: ignore[assignment]
36
- from typing import Any, Dict, List
37
+ from typing import Any, Dict, List, Optional
37
38
  from urllib.parse import urlencode
38
39
 
39
40
  try:
@@ -6,12 +6,15 @@ Integrates Karpenter, Prometheus, Grafana, and Terradev monitoring
6
6
 
7
7
  import os
8
8
  import json
9
+ import logging
9
10
  import aiohttp
10
11
  import subprocess
11
12
  from typing import Dict, List, Any, Optional
12
13
 
13
14
  from .kubernetes_service import KubernetesConfig # single canonical definition
14
15
 
16
+ logger = logging.getLogger(__name__)
17
+
15
18
 
16
19
  class EnhancedKubernetesService:
17
20
  """Enhanced Kubernetes service with deep monitoring integration"""
@@ -9,6 +9,25 @@ from typing import Dict, List, Any, Optional
9
9
  from dataclasses import dataclass
10
10
  from datetime import datetime
11
11
 
12
+ try:
13
+ from langchain_core.messages import SystemMessage, HumanMessage
14
+ from langchain_openai import ChatOpenAI
15
+
16
+ def LLM(llm: str = "openai/gpt-4", temperature: float = 0.7):
17
+ """Build a chat model from a 'provider/model' identifier."""
18
+ model = llm.split("/", 1)[-1]
19
+ return ChatOpenAI(model=model, temperature=temperature)
20
+
21
+ except ImportError: # pragma: no cover - optional dependency
22
+ SystemMessage = None # type: ignore[assignment]
23
+ HumanMessage = None # type: ignore[assignment]
24
+
25
+ def LLM(llm: str = "openai/gpt-4", temperature: float = 0.7):
26
+ raise RuntimeError(
27
+ "langchain-openai and langchain-core are required for LangGraph LLM nodes. "
28
+ "Install with: pip install langchain-openai langchain-core"
29
+ )
30
+
12
31
 
13
32
  @dataclass
14
33
  class LangGraphConfig:
@@ -55,7 +74,7 @@ class LangGraphService:
55
74
 
56
75
  # Test LangSmith connection
57
76
  if self.config.langsmith_api_key:
58
- langsmith_session = langsmith_session
77
+ langsmith_session = self.session
59
78
 
60
79
  url = f"{self.langsmith_api_base}/v1/organizations"
61
80
  async with langsmith_session.get(
@@ -136,6 +155,24 @@ class LangGraphService:
136
155
  # Define the workflow state
137
156
  from langgraph.graph import StateGraph, START, END
138
157
 
158
+ workflow_id = (
159
+ f"terradev-orchestrator-{datetime.now().strftime('%Y%m%d-%H%M%S')}"
160
+ )
161
+ enhanced_config = {
162
+ **workflow_config,
163
+ "monitoring": {
164
+ "enabled": self.config.dashboard_enabled,
165
+ "tracing": self.config.tracing_enabled,
166
+ "evaluation": self.config.evaluation_enabled,
167
+ "deployment": self.config.deployment_enabled,
168
+ "observability": self.config.observability_enabled,
169
+ },
170
+ "langsmith": {
171
+ "project": self.config.project_name or "terradev",
172
+ "workspace_id": self.config.workspace_id,
173
+ },
174
+ }
175
+
139
176
  # Enhanced state with monitoring
140
177
  class WorkflowState:
141
178
  topic: str
@@ -473,7 +473,7 @@ class AutoOptimizer:
473
473
  base_confidence += 0.05
474
474
 
475
475
  # Adjust based on historical performance
476
- if deployment_id in self.optimization_history:
476
+ if context.deployment_id in self.optimization_history:
477
477
  historical_success = self._calculate_historical_success_rate(
478
478
  context.deployment_id
479
479
  )
@@ -11,8 +11,11 @@ from typing import Dict, List, Any, Optional, Callable, Awaitable
11
11
  from dataclasses import asdict
12
12
  import asyncio
13
13
  import aiohttp
14
+ import logging
14
15
  import time
15
16
 
17
+ logger = logging.getLogger(__name__)
18
+
16
19
  # Rust connection pool integration
17
20
  try:
18
21
  from terradev_connection_pool import PyConnectionPool, PyConnectionConfig
@@ -150,21 +150,16 @@ class RunPodProvider(BaseProvider):
150
150
  )
151
151
 
152
152
  try:
153
- # Extract GPU ID from instance type (format: runpod-secure-A100 or runpod-community-H100)
154
- if "-" not in instance_type:
155
- raise Exception(f"Invalid instance type format: {instance_type}")
156
-
157
- # Split on last hyphen to separate cloud_type from gpu_id
158
- parts = instance_type.rsplit("-", 1)
159
- if len(parts) != 2:
160
- raise Exception(f"Invalid instance type format: {instance_type}")
161
-
162
- cloud_type, gpu_id = parts
163
- if cloud_type not in ["runpod-community", "runpod-secure"]:
164
- raise Exception(f"Unsupported cloud type: {cloud_type}")
165
-
166
- # Determine cloud type for API
167
- is_secure = cloud_type == "runpod-secure"
153
+ # Extract GPU ID from instance type (format: runpod-community-<GPU_ID> or runpod-secure-<GPU_ID>)
154
+ # Use startswith to handle GPU IDs that contain hyphens (e.g. NVIDIA A100-SXM4-40GB)
155
+ if instance_type.startswith("runpod-community-"):
156
+ is_secure = False
157
+ gpu_id = instance_type[len("runpod-community-"):]
158
+ elif instance_type.startswith("runpod-secure-"):
159
+ is_secure = True
160
+ gpu_id = instance_type[len("runpod-secure-"):]
161
+ else:
162
+ raise Exception(f"Unsupported cloud type: {instance_type}")
168
163
 
169
164
  # Create pod specification
170
165
  pod_spec = {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: terradev-cli
3
- Version: 5.5.2
3
+ Version: 5.5.3
4
4
  Summary: An imperative command-line-interface for AI workload orchestration.
5
5
  Author-email: Terradev Team <team@terradev.com>
6
6
  Maintainer-email: Terradev Team <team@terradev.com>
File without changes
File without changes
File without changes
File without changes
File without changes