terradev-cli 5.4.1__tar.gz → 5.4.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 (514) hide show
  1. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/PKG-INFO +25 -2
  2. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/README.md +24 -1
  3. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/pyproject.toml +1 -1
  4. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/README.md +14 -1
  5. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/cli.py +16 -4
  6. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli.egg-info/PKG-INFO +25 -2
  7. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/.env.example +0 -0
  8. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/.github/workflows/action.yml +0 -0
  9. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/.github/workflows/ci.yml +0 -0
  10. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/.github/workflows/release.yml +0 -0
  11. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/.github/workflows/static.yml +0 -0
  12. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/.terradev/custom_providers.example.yaml +0 -0
  13. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/CODEMAP.md +0 -0
  14. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/Deployment Package/BNF_GRAMMAR.md +0 -0
  15. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/Deployment Package/LIFECYCLES.md +0 -0
  16. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/Deployment Package/architecture.md +0 -0
  17. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/Deployment Package/overview.md +0 -0
  18. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/Deployment Package/security.md +0 -0
  19. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/Deployment Package/troubleshooting.md +0 -0
  20. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/Dockerfile +0 -0
  21. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/Dockerfile.test +0 -0
  22. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/LICENSE +0 -0
  23. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/MANIFEST.in +0 -0
  24. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/agentic-template/helm/values-agentic.yaml +0 -0
  25. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/agentic-template/k8s/fleet-manifests.yaml +0 -0
  26. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/README.md +0 -0
  27. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/helm/values-glm5.yaml +0 -0
  28. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/k8s/hpa.yaml +0 -0
  29. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/k8s/model-cache-pvc.yaml +0 -0
  30. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/k8s/namespace.yaml +0 -0
  31. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/k8s/pdb.yaml +0 -0
  32. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/k8s/service.yaml +0 -0
  33. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/k8s/sglang-deployment.yaml +0 -0
  34. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/k8s/vllm-deployment.yaml +0 -0
  35. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/task.yaml +0 -0
  36. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/terraform/main.tf +0 -0
  37. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/terraform/outputs.tf +0 -0
  38. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/glm-5/terraform/variables.tf +0 -0
  39. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/llmd-template/README.md +0 -0
  40. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/llmd-template/helm/values-llmd.yaml +0 -0
  41. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/llmd-template/k8s/gateway.yaml +0 -0
  42. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/llmd-template/k8s/leaderworkerset.yaml +0 -0
  43. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/llmd-template/k8s/llminferenceservice.yaml +0 -0
  44. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/llmd-template/task.yaml +0 -0
  45. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/helm/Chart.yaml +0 -0
  46. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/helm/templates/_helpers.tpl +0 -0
  47. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/helm/templates/deployment.yaml +0 -0
  48. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/helm/templates/pvc-adapter.yaml +0 -0
  49. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/helm/templates/pvc-registry.yaml +0 -0
  50. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/helm/templates/service.yaml +0 -0
  51. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/helm/templates/serviceaccount.yaml +0 -0
  52. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/helm/values-lora.yaml +0 -0
  53. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/k8s/adapter-pvc.yaml +0 -0
  54. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/k8s/deployment.yaml +0 -0
  55. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/k8s/namespace.yaml +0 -0
  56. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/k8s/registry-pvc.yaml +0 -0
  57. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/k8s/service.yaml +0 -0
  58. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lora-template/k8s/serviceaccount.yaml +0 -0
  59. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lorax-template/helm/Chart.yaml +0 -0
  60. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lorax-template/helm/templates/_helpers.tpl +0 -0
  61. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lorax-template/helm/templates/deployment.yaml +0 -0
  62. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lorax-template/helm/templates/pvc.yaml +0 -0
  63. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lorax-template/helm/templates/service.yaml +0 -0
  64. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lorax-template/helm/templates/serviceaccount.yaml +0 -0
  65. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/lorax-template/helm/values-lorax.yaml +0 -0
  66. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/README.md +0 -0
  67. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/helm/values-moe.yaml +0 -0
  68. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/k8s/deployment.yaml +0 -0
  69. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/k8s/hpa.yaml +0 -0
  70. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/k8s/model-cache-pvc.yaml +0 -0
  71. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/k8s/namespace.yaml +0 -0
  72. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/k8s/pdb.yaml +0 -0
  73. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/k8s/service.yaml +0 -0
  74. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/task.yaml +0 -0
  75. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/terraform/main.tf +0 -0
  76. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/terraform/outputs.tf +0 -0
  77. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/moe-template/terraform/variables.tf +0 -0
  78. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/rag-template/README.md +0 -0
  79. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/rag-template/helm/values-rag.yaml +0 -0
  80. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/rag-template/k8s/deployment.yaml +0 -0
  81. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/clusters/rag-template/terraform/main.tf +0 -0
  82. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/demo/RECORDING_GUIDE.md +0 -0
  83. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/demo/generate_gif.py +0 -0
  84. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/demo/terradev-demo.gif +0 -0
  85. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/ADVANCED_FINANCIAL_INNOVATIONS.md +0 -0
  86. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/API_DOCUMENTATION.md +0 -0
  87. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/BingSiteAuth.xml +0 -0
  88. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/FINOPS_ATTRIBUTION_SYSTEM.md +0 -0
  89. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/LORA_COMMAND_LIFECYCLE.md +0 -0
  90. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/USER_GUIDE.md +0 -0
  91. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/VLLM_AUTO_OPTIMIZATION_GUIDE.md +0 -0
  92. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/VLLM_OPTIMIZATION_GUIDE.md +0 -0
  93. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/architecture.md +0 -0
  94. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/index.html +0 -0
  95. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/overview.md +0 -0
  96. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/robots.txt +0 -0
  97. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/sitemap.xml +0 -0
  98. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/docs/test_spot_provision.md +0 -0
  99. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/examples/aws_ssm_starter.py +0 -0
  100. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/examples/config.example.json +0 -0
  101. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/examples/demo_k8s_config.yaml +0 -0
  102. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/examples/direct_aws_starter.py +0 -0
  103. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/examples/ec2_user_data_starter.py +0 -0
  104. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/examples/example-pipeline.yaml +0 -0
  105. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/examples/kubernetes_training_deployment.yaml +0 -0
  106. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/examples/simple_ssm_starter.py +0 -0
  107. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/examples/ssh_server_starter.py +0 -0
  108. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/examples/start_aws_servers.py +0 -0
  109. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/helm/terradev/Chart.yaml +0 -0
  110. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/helm/terradev/templates/_helpers.tpl +0 -0
  111. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/helm/terradev/templates/deployment.yaml +0 -0
  112. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/helm/terradev/values.yaml +0 -0
  113. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/infrastructure/bucket-policy.json +0 -0
  114. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/infrastructure/grafana_training_dashboard.json +0 -0
  115. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/infrastructure/kubernetes/microservices.yaml +0 -0
  116. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/infrastructure/terraform/main.tf +0 -0
  117. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/infrastructure/terraform/parallelism.tf +0 -0
  118. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/integrations/cli-tool.tf +0 -0
  119. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/integrations/cloud-management-widgets.tf +0 -0
  120. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/integrations/cloud-provider-apis.py +0 -0
  121. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/integrations/critical-widgets.tf +0 -0
  122. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/integrations/devops-cicd-widgets.tf +0 -0
  123. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/integrations/devops-essential-tools.tf +0 -0
  124. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/integrations/docker-integration.tf +0 -0
  125. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/integrations/kubernetes-operator.tf +0 -0
  126. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/integrations/mlflow-integration.tf +0 -0
  127. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/marketing/bare-metal-latitude-post.md +0 -0
  128. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/modules/datadog/README.md +0 -0
  129. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/modules/datadog/dashboard.tf +0 -0
  130. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/modules/datadog/monitors.tf +0 -0
  131. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/modules/datadog/outputs.tf +0 -0
  132. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/modules/datadog/provider.tf +0 -0
  133. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/modules/datadog/variables.tf +0 -0
  134. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/modules/datadog/versions.tf +0 -0
  135. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/modules/prometheus_training_config.yml +0 -0
  136. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/Cargo.toml +0 -0
  137. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/INTEGRATION_GUIDE.md +0 -0
  138. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/PERFORMANCE_OPTIMIZATIONS.md +0 -0
  139. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/README.md +0 -0
  140. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-artifact-verification/Cargo.toml +0 -0
  141. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-artifact-verification/src/lib.rs +0 -0
  142. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-artifact-verification/src/types.rs +0 -0
  143. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-artifact-verification/src/verifier.rs +0 -0
  144. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-authentication/Cargo.toml +0 -0
  145. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-authentication/src/encoding.rs +0 -0
  146. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-authentication/src/hmac.rs +0 -0
  147. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-authentication/src/lib.rs +0 -0
  148. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-authentication/src/types.rs +0 -0
  149. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-cache-eviction/Cargo.toml +0 -0
  150. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-cache-eviction/src/cache.rs +0 -0
  151. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-cache-eviction/src/lib.rs +0 -0
  152. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-cache-eviction/src/types.rs +0 -0
  153. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-command-executor/Cargo.toml +0 -0
  154. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-command-executor/src/lib.rs +0 -0
  155. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-config-validator/Cargo.toml +0 -0
  156. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-config-validator/src/lib.rs +0 -0
  157. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-config-validator/src/types.rs +0 -0
  158. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-config-validator/src/validator.rs +0 -0
  159. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-connection-pool/Cargo.toml +0 -0
  160. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-connection-pool/src/lib.rs +0 -0
  161. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-connection-pool/src/pool.rs +0 -0
  162. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-connection-pool/src/types.rs +0 -0
  163. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-cost-calculator/Cargo.toml +0 -0
  164. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-cost-calculator/src/calculator.rs +0 -0
  165. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-cost-calculator/src/lib.rs +0 -0
  166. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-cost-calculator/src/types.rs +0 -0
  167. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-cost-scaler/Cargo.toml +0 -0
  168. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-cost-scaler/src/lib.rs +0 -0
  169. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-credential-vault/Cargo.toml +0 -0
  170. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-credential-vault/src/lib.rs +0 -0
  171. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-credential-vault/src/types.rs +0 -0
  172. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-credential-vault/src/vault.rs +0 -0
  173. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-dag-executor/Cargo.toml +0 -0
  174. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-dag-executor/src/lib.rs +0 -0
  175. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-distributed-lock/Cargo.toml +0 -0
  176. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-distributed-lock/src/lib.rs +0 -0
  177. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-distributed-lock/src/lock.rs +0 -0
  178. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-distributed-lock/src/types.rs +0 -0
  179. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-egress-optimizer/Cargo.toml +0 -0
  180. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-egress-optimizer/src/graph.rs +0 -0
  181. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-egress-optimizer/src/lib.rs +0 -0
  182. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-egress-optimizer/src/types.rs +0 -0
  183. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-event-bus/Cargo.toml +0 -0
  184. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-event-bus/src/bus.rs +0 -0
  185. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-event-bus/src/lib.rs +0 -0
  186. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-event-bus/src/types.rs +0 -0
  187. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-governance/Cargo.toml +0 -0
  188. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-governance/src/lib.rs +0 -0
  189. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-gpu-discovery/Cargo.toml +0 -0
  190. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-gpu-discovery/src/lib.rs +0 -0
  191. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-gpu-topology/Cargo.toml +0 -0
  192. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-gpu-topology/src/lib.rs +0 -0
  193. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-gpu-topology/src/topology.rs +0 -0
  194. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-gpu-topology/src/types.rs +0 -0
  195. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-helm-generator/Cargo.toml +0 -0
  196. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-helm-generator/src/lib.rs +0 -0
  197. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-mcp-codec/Cargo.toml +0 -0
  198. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-mcp-codec/src/lib.rs +0 -0
  199. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-mcp-optimizer/Cargo.toml +0 -0
  200. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-mcp-optimizer/src/lib.rs +0 -0
  201. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-price-intelligence/Cargo.toml +0 -0
  202. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-price-intelligence/src/lib.rs +0 -0
  203. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-quota-manager/Cargo.toml +0 -0
  204. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-quota-manager/src/lib.rs +0 -0
  205. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-quota-manager/src/manager.rs +0 -0
  206. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-quota-manager/src/types.rs +0 -0
  207. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-resource-pool/Cargo.toml +0 -0
  208. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-resource-pool/src/lib.rs +0 -0
  209. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-resource-pool/src/pool.rs +0 -0
  210. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-resource-pool/src/types.rs +0 -0
  211. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-result-compressor/Cargo.toml +0 -0
  212. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-result-compressor/src/lib.rs +0 -0
  213. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-semantic-router/Cargo.toml +0 -0
  214. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-semantic-router/src/lib.rs +0 -0
  215. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-snapshot-manager/Cargo.toml +0 -0
  216. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-snapshot-manager/src/lib.rs +0 -0
  217. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-snapshot-manager/src/snapshot.rs +0 -0
  218. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-snapshot-manager/src/types.rs +0 -0
  219. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-state-machine/Cargo.toml +0 -0
  220. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-state-machine/src/lib.rs +0 -0
  221. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-state-machine/src/state.rs +0 -0
  222. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-state-machine/src/types.rs +0 -0
  223. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-telemetry/Cargo.toml +0 -0
  224. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-telemetry/src/lib.rs +0 -0
  225. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-telemetry/src/pipeline.rs +0 -0
  226. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-telemetry/src/types.rs +0 -0
  227. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-tool-registry/Cargo.toml +0 -0
  228. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-tool-registry/src/lib.rs +0 -0
  229. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-vram-estimator/Cargo.toml +0 -0
  230. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-vram-estimator/src/estimator.rs +0 -0
  231. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-vram-estimator/src/lib.rs +0 -0
  232. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-vram-estimator/src/types.rs +0 -0
  233. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-warm-pool/Cargo.toml +0 -0
  234. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/rust/terradev-warm-pool/src/lib.rs +0 -0
  235. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/scripts/action.py +0 -0
  236. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/scripts/gpu-check.sh +0 -0
  237. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/setup/Lambda Cloud API spec 1.8.3.json +0 -0
  238. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/setup/docker-compose.yml +0 -0
  239. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/setup/nginx.conf +0 -0
  240. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/setup/setup.sh +0 -0
  241. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/setup.cfg +0 -0
  242. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/CHANGELOG.md +0 -0
  243. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/COMPLETE_COMMAND_REFERENCE.md +0 -0
  244. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/COMPLETE_INTEGRATION_GUIDE.md +0 -0
  245. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/IMPLEMENTATION_SUMMARY.md +0 -0
  246. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/MAKING_SPOT_WORK_FOR_STATEFUL_WORKLOADS.md +0 -0
  247. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/SGLANG_COMMAND_GUIDE.md +0 -0
  248. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/TERRADEV_STACK_CHART.md +0 -0
  249. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/__init__.py +0 -0
  250. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/__main__.py +0 -0
  251. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/cli_hf_spaces.py +0 -0
  252. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/cli_karpenter.py +0 -0
  253. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/__init__.py +0 -0
  254. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/agentic_provisioner.py +0 -0
  255. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/agentic_topology.py +0 -0
  256. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/async_config.py +0 -0
  257. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/auth.py +0 -0
  258. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/auto_lineage.py +0 -0
  259. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/cache_manager.py +0 -0
  260. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/checkpoint_manager.py +0 -0
  261. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/command_executor.py +0 -0
  262. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/config.py +0 -0
  263. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/config_validator.py +0 -0
  264. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/cost_scaler.py +0 -0
  265. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/cost_tracker.py +0 -0
  266. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/credential_vault.py +0 -0
  267. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/cuda_graph_integrator.py +0 -0
  268. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/dag_executor.py +0 -0
  269. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/data_governance.py +0 -0
  270. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/dataset_stager.py +0 -0
  271. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/deployment_router.py +0 -0
  272. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/distributed_lock.py +0 -0
  273. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/drift_detector.py +0 -0
  274. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/egress_cost_monitor.py +0 -0
  275. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/egress_optimizer.py +0 -0
  276. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/evaluation_orchestrator.py +0 -0
  277. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/event_system.py +0 -0
  278. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/gitops_manager.py +0 -0
  279. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/gpu_discovery.py +0 -0
  280. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/gpu_topology.py +0 -0
  281. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/helm_generator.py +0 -0
  282. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/hf_cli_integration.py +0 -0
  283. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/hf_smart_templates.py +0 -0
  284. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/hf_spaces.py +0 -0
  285. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/inference_router.py +0 -0
  286. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/inference_spot_manager.py +0 -0
  287. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/job_state_manager.py +0 -0
  288. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/kv_cache_checkpoint_manager.py +0 -0
  289. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/kv_cache_checkpoint_tests.py +0 -0
  290. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/kv_sharing.py +0 -0
  291. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/lora_consistency.py +0 -0
  292. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/lora_cost_attribution.py +0 -0
  293. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/lora_versioning.py +0 -0
  294. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/manifest_cache.py +0 -0
  295. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/manifest_example.json +0 -0
  296. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/mig_manager.py +0 -0
  297. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/migration_orchestrator.py +0 -0
  298. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/mla_vram_estimator.py +0 -0
  299. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/mla_vram_tests.py +0 -0
  300. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/model_orchestrator.py +0 -0
  301. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/oidc_provider.py +0 -0
  302. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/optimization_config.py +0 -0
  303. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/parallel_provisioner.py +0 -0
  304. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/pd_transport.py +0 -0
  305. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/pipeline_schema.py +0 -0
  306. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/preflight_validator.py +0 -0
  307. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/price_discovery.py +0 -0
  308. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/price_intelligence.py +0 -0
  309. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/public_ip_billing_tracker.py +0 -0
  310. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/quick_start.py +0 -0
  311. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/quota_manager.py +0 -0
  312. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/rate_limiter.py +0 -0
  313. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/rust_telemetry.py +0 -0
  314. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/semantic_router.py +0 -0
  315. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/semantic_signals/__init__.py +0 -0
  316. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/semantic_signals/base_signal.py +0 -0
  317. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/semantic_signals/complexity_signal.py +0 -0
  318. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/semantic_signals/domain_signal.py +0 -0
  319. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/semantic_signals/keyword_signal.py +0 -0
  320. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/semantic_signals/language_signal.py +0 -0
  321. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/semantic_signals/modality_signal.py +0 -0
  322. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/semantic_signals/orchestrator.py +0 -0
  323. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/semantic_signals/routing_policy.yaml +0 -0
  324. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/semantic_signals/safety_signal.py +0 -0
  325. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/session_manager.py +0 -0
  326. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/ssh_key_manager.py +0 -0
  327. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/telemetry.py +0 -0
  328. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/terradev_engine.py +0 -0
  329. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/trace_viewer.py +0 -0
  330. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/training_monitor.py +0 -0
  331. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/training_orchestrator.py +0 -0
  332. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/user_manager.py +0 -0
  333. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/warm_pool_manager.py +0 -0
  334. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/weight_streaming_benchmarks.py +0 -0
  335. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/core/weight_streaming_manager.py +0 -0
  336. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/cost_optimizer.py +0 -0
  337. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/credential_prompt.py +0 -0
  338. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/demo.py +0 -0
  339. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/entry_point.py +0 -0
  340. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/integrations/Terradev LOGO BLACK.png +0 -0
  341. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/integrations/Terradev LOGO WHITEW.png +0 -0
  342. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/integrations/__init__.py +0 -0
  343. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/integrations/databricks_integration.py +0 -0
  344. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/integrations/datadog_integration.py +0 -0
  345. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/integrations/helicone_integration.py +0 -0
  346. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/integrations/prometheus_integration.py +0 -0
  347. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/integrations/wandb_integration.py +0 -0
  348. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/k8s/terraform_wrapper.py +0 -0
  349. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/kubernetes/inferx-cost-optimized.yaml +0 -0
  350. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/kubernetes/inferx-infrastructure.yaml +0 -0
  351. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/kubernetes/inferx-models.yaml +0 -0
  352. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/kubernetes/inferx-platform.yaml +0 -0
  353. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/kubernetes/inferx_setup.py +0 -0
  354. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/mcp/__init__.py +0 -0
  355. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/mcp/server.py +0 -0
  356. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/__init__.py +0 -0
  357. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/agentic_serving.py +0 -0
  358. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/drift_retrain_service.py +0 -0
  359. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/dvc_service.py +0 -0
  360. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/guardrails_service.py +0 -0
  361. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/huggingface_service.py +0 -0
  362. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/kserve_service.py +0 -0
  363. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/kubernetes_enhanced.py +0 -0
  364. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/kubernetes_service.py +0 -0
  365. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/langchain_service.py +0 -0
  366. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/langfuse_service.py +0 -0
  367. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/langgraph_service.py +0 -0
  368. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/lmcache_service.py +0 -0
  369. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/lora_registry.py +0 -0
  370. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/lorax_service.py +0 -0
  371. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/mlflow_service.py +0 -0
  372. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/model_router.py +0 -0
  373. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/ollama_service.py +0 -0
  374. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/peft_import_service.py +0 -0
  375. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/phoenix_service.py +0 -0
  376. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/qdrant_service.py +0 -0
  377. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/ray_enhanced.py +0 -0
  378. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/ray_service.py +0 -0
  379. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/sglang_service.py +0 -0
  380. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/vllm_service.py +0 -0
  381. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/ml_services/wandb_enhanced.py +0 -0
  382. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/optimization/__init__.py +0 -0
  383. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/optimization/auto_optimizer.py +0 -0
  384. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/optimization/cuco_optimizer.py +0 -0
  385. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/LATITUDE_PROVIDER.md +0 -0
  386. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/__init__.py +0 -0
  387. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/alibaba_provider.py +0 -0
  388. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/aws_provider.py +0 -0
  389. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/azure_provider.py +0 -0
  390. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/base_provider.py +0 -0
  391. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/baseten_provider.py +0 -0
  392. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/coreweave_provider.py +0 -0
  393. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/crusoe_provider.py +0 -0
  394. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/demo_mode.py +0 -0
  395. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/digitalocean_provider.py +0 -0
  396. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/e2e_networks_provider.py +0 -0
  397. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/fluidstack_provider.py +0 -0
  398. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/gcp_provider.py +0 -0
  399. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/gpu_catalog.py +0 -0
  400. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/hetzner_provider.py +0 -0
  401. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/huggingface_provider.py +0 -0
  402. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/hyperstack_provider.py +0 -0
  403. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/inferx_provider.py +0 -0
  404. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/lambda_labs_provider.py +0 -0
  405. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/latitude_provider.py +0 -0
  406. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/oracle_provider.py +0 -0
  407. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/ovhcloud_provider.py +0 -0
  408. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/provider_factory.py +0 -0
  409. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/provider_profiles.py +0 -0
  410. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/real_pricing.py +0 -0
  411. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/registry.py +0 -0
  412. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/runpod_provider.py +0 -0
  413. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/siliconflow_provider.py +0 -0
  414. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/tensordock_provider.py +0 -0
  415. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/types.py +0 -0
  416. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/vastai_provider.py +0 -0
  417. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/providers/yottalabs_provider.py +0 -0
  418. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/requirements.txt +0 -0
  419. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/requirements_minimal.txt +0 -0
  420. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/main.tf +0 -0
  421. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/__init__.py +0 -0
  422. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-aws/bootstrap.sh +0 -0
  423. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-aws/main.tf +0 -0
  424. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-aws/outputs.tf +0 -0
  425. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-aws/variables.tf +0 -0
  426. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-aws/versions.tf +0 -0
  427. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/bootstrap.sh +0 -0
  428. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/main.tf +0 -0
  429. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/outputs.tf +0 -0
  430. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/variables.tf +0 -0
  431. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/versions.tf +0 -0
  432. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-lambda/bootstrap.sh +0 -0
  433. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-lambda/main.tf +0 -0
  434. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-lambda/outputs.tf +0 -0
  435. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-lambda/variables.tf +0 -0
  436. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-lambda/versions.tf +0 -0
  437. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-vastai/bootstrap.sh +0 -0
  438. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-vastai/main.tf +0 -0
  439. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-vastai/outputs.tf +0 -0
  440. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-vastai/variables.tf +0 -0
  441. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/gpu-node-vastai/versions.tf +0 -0
  442. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/k8s-control-plane/join-script.tpl +0 -0
  443. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/k8s-control-plane/kubeconfig.tpl +0 -0
  444. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/k8s-control-plane/main.tf +0 -0
  445. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/k8s-control-plane/outputs.tf +0 -0
  446. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/k8s-control-plane/variables.tf +0 -0
  447. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/k8s-control-plane/versions.tf +0 -0
  448. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/networking/main.tf +0 -0
  449. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/networking/outputs.tf +0 -0
  450. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/networking/variables.tf +0 -0
  451. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/modules/networking/versions.tf +0 -0
  452. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/outputs.tf +0 -0
  453. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/price-optimizer/optimal-allocation.py +0 -0
  454. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/providers.tf +0 -0
  455. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/terraform/variables.tf +0 -0
  456. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/test_summary.py +0 -0
  457. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/utils/__init__.py +0 -0
  458. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli/utils/formatters.py +0 -0
  459. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli.egg-info/SOURCES.txt +0 -0
  460. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli.egg-info/dependency_links.txt +0 -0
  461. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli.egg-info/entry_points.txt +0 -0
  462. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli.egg-info/requires.txt +0 -0
  463. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terradev_cli.egg-info/top_level.txt +0 -0
  464. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform.tfvars.example +0 -0
  465. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_optimization/backend.tf +0 -0
  466. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_optimization/error_handling.py +0 -0
  467. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_optimization/parallel_provisioning.tf +0 -0
  468. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_optimization/storage_choice_matrix.py +0 -0
  469. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_optimization/test_error_handler.py +0 -0
  470. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_optimization/versions.tf +0 -0
  471. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_transparency/audit_demo/trail_3caed73ad5bf.json +0 -0
  472. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_transparency/audit_trail.py +0 -0
  473. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_transparency/audit_trails.json +0 -0
  474. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_transparency/decision_engine.py +0 -0
  475. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_transparency/decision_logs.json +0 -0
  476. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_transparency/operations.json +0 -0
  477. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_transparency/terraform_manager.py +0 -0
  478. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_transparency/terraform_plans.json +0 -0
  479. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_transparency/transparency_demo.py +0 -0
  480. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/terraform_transparency/transparency_report.json +0 -0
  481. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/CREDENTIAL_STRATEGY.md +0 -0
  482. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/INTEGRATION_STRATEGY.md +0 -0
  483. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/Makefile +0 -0
  484. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/ci_pipeline.py +0 -0
  485. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/conftest.py +0 -0
  486. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/root_tests/test_cli_ux_battle.py +0 -0
  487. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/root_tests/test_cli_ux_battle_fixed.py +0 -0
  488. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/root_tests/test_cli_ux_final.py +0 -0
  489. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/root_tests/test_final_integration.py +0 -0
  490. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/root_tests/test_integrated_optimization.py +0 -0
  491. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/root_tests/test_p10_production_failover.py +0 -0
  492. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/root_tests/test_sso_phase1.py +0 -0
  493. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/root_tests/test_vllm_optimization.py +0 -0
  494. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/simple_test.py +0 -0
  495. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_ai_integrations.py +0 -0
  496. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_checkpoint_manager.py +0 -0
  497. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_cli_smoke.py +0 -0
  498. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_dag_executor.py +0 -0
  499. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_flashoptim.py +0 -0
  500. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_integration.py +0 -0
  501. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_job_state_manager.py +0 -0
  502. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_k8s_regression.py +0 -0
  503. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_latitude_provider.py +0 -0
  504. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_major_providers.py +0 -0
  505. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_mcp_handlers.py +0 -0
  506. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_new_providers.py +0 -0
  507. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_provider_conformance.py +0 -0
  508. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_providers.py +0 -0
  509. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_semantic_router.py +0 -0
  510. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_sglang_optimization.py +0 -0
  511. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_ssh_key_manager.py +0 -0
  512. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_training_monitor.py +0 -0
  513. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_training_orchestrator.py +0 -0
  514. {terradev_cli-5.4.1 → terradev_cli-5.4.3}/tests/test_vllm_features.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: terradev-cli
3
- Version: 5.4.1
3
+ Version: 5.4.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>
@@ -93,7 +93,7 @@ Requires-Dist: redis>=5.0.0; extra == "enterprise"
93
93
  Requires-Dist: PyJWT>=2.8.0; extra == "enterprise"
94
94
  Dynamic: license-file
95
95
 
96
- # Terradev CLI v5.3.8
96
+ # Terradev CLI v5.4.3
97
97
 
98
98
  **An imperative command-line-interface for AI workload orchestration.**
99
99
 
@@ -111,6 +111,29 @@ Continued focus on lower cost, faster provisioning, and topology-aware execution
111
111
 
112
112
  Model agnostic. Dataset agnostic. GPU agnostic. Provider agnostic. The only thing Terradev is not agnostic about is correctness: it enforces topology, idempotency, and sequencing.
113
113
 
114
+ **NOTES ON 5.4.3**
115
+
116
+ Fixed **credential format fallback bug** in `_provider_creds()`:
117
+
118
+ - **Bug**: When credentials file contains both nested format `{"runpod": {"api_key": "..."}}` and flat format `{"runpod_api_key": "..."}`, the `_provider_creds()` method prioritized nested format even if it contained placeholder values like "PASTE_NEW_RUNPOD_KEY_HERE". This caused `terradev quote` to fail because it used placeholder credentials instead of real flat-format credentials.
119
+
120
+ - **Fix**: Added placeholder detection in `_provider_creds()` to check if nested values are placeholders (containing "paste_", "your_", "example_", "test_", "placeholder_", "xxx"). If nested format contains only placeholders, the method now falls back to flat format credentials.
121
+
122
+ - **Impact**: Users with mixed credential formats (nested placeholders from configure + real flat keys from onboarding) now get real credentials from the flat format, enabling `terradev quote` to return actual pricing data.
123
+
124
+ **NOTES ON 5.4.2**
125
+
126
+ Fixed **credential type checking bug** in `is_first_time_user()` and onboarding:
127
+
128
+ - **Bug**: `is_first_time_user()` and onboarding code called `.lower()` on credential values without checking if they were strings. The credentials file uses nested dict format `{"runpod": {"api_key": "..."}}`, so when iterating over values, some are dicts, not strings. This caused `AttributeError: 'dict' object has no attribute 'lower'`.
129
+
130
+ - **Fix**:
131
+ - Added `isinstance(value, str)` check before calling `.lower()` in `is_first_time_user()` (line 119)
132
+ - Added `isinstance(existing_value, str)` check before calling `.lower()` in onboarding (line 764)
133
+ - The `_provider_creds()` method already correctly handles both flat and nested credential formats
134
+
135
+ - **Impact**: `terradev quote` and other commands that check credentials now work correctly with the nested dict credential format.
136
+
114
137
  **NOTES ON 5.3.9**
115
138
 
116
139
  Added **LoRAX (LoRA eXchange) integration** and **HuggingFace PEFT import** for production-grade multi-LoRA inference serving:
@@ -1,4 +1,4 @@
1
- # Terradev CLI v5.3.8
1
+ # Terradev CLI v5.4.3
2
2
 
3
3
  **An imperative command-line-interface for AI workload orchestration.**
4
4
 
@@ -16,6 +16,29 @@ Continued focus on lower cost, faster provisioning, and topology-aware execution
16
16
 
17
17
  Model agnostic. Dataset agnostic. GPU agnostic. Provider agnostic. The only thing Terradev is not agnostic about is correctness: it enforces topology, idempotency, and sequencing.
18
18
 
19
+ **NOTES ON 5.4.3**
20
+
21
+ Fixed **credential format fallback bug** in `_provider_creds()`:
22
+
23
+ - **Bug**: When credentials file contains both nested format `{"runpod": {"api_key": "..."}}` and flat format `{"runpod_api_key": "..."}`, the `_provider_creds()` method prioritized nested format even if it contained placeholder values like "PASTE_NEW_RUNPOD_KEY_HERE". This caused `terradev quote` to fail because it used placeholder credentials instead of real flat-format credentials.
24
+
25
+ - **Fix**: Added placeholder detection in `_provider_creds()` to check if nested values are placeholders (containing "paste_", "your_", "example_", "test_", "placeholder_", "xxx"). If nested format contains only placeholders, the method now falls back to flat format credentials.
26
+
27
+ - **Impact**: Users with mixed credential formats (nested placeholders from configure + real flat keys from onboarding) now get real credentials from the flat format, enabling `terradev quote` to return actual pricing data.
28
+
29
+ **NOTES ON 5.4.2**
30
+
31
+ Fixed **credential type checking bug** in `is_first_time_user()` and onboarding:
32
+
33
+ - **Bug**: `is_first_time_user()` and onboarding code called `.lower()` on credential values without checking if they were strings. The credentials file uses nested dict format `{"runpod": {"api_key": "..."}}`, so when iterating over values, some are dicts, not strings. This caused `AttributeError: 'dict' object has no attribute 'lower'`.
34
+
35
+ - **Fix**:
36
+ - Added `isinstance(value, str)` check before calling `.lower()` in `is_first_time_user()` (line 119)
37
+ - Added `isinstance(existing_value, str)` check before calling `.lower()` in onboarding (line 764)
38
+ - The `_provider_creds()` method already correctly handles both flat and nested credential formats
39
+
40
+ - **Impact**: `terradev quote` and other commands that check credentials now work correctly with the nested dict credential format.
41
+
19
42
  **NOTES ON 5.3.9**
20
43
 
21
44
  Added **LoRAX (LoRA eXchange) integration** and **HuggingFace PEFT import** for production-grade multi-LoRA inference serving:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "terradev-cli"
7
- version = "5.4.1"
7
+ version = "5.4.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"}
@@ -1,4 +1,4 @@
1
- # Terradev CLI v5.4.0
1
+ # Terradev CLI v5.4.1
2
2
 
3
3
  **An imperative command-line-interface for AI workload orchestration.**
4
4
 
@@ -16,6 +16,19 @@ Continued focus on lower cost, faster provisioning, and topology-aware execution
16
16
 
17
17
  Model agnostic. Dataset agnostic. GPU agnostic. Provider agnostic. The only thing Terradev is not agnostic about is correctness: it enforces topology, idempotency, and sequencing.
18
18
 
19
+ **NOTES ON 5.4.1**
20
+
21
+ Fixed **credential persistence scope bug** in `terradev configure`:
22
+
23
+ - **Bug**: `api` variable was only instantiated inside the `else` block (interactive mode), but `api.save_credentials()` was called unconditionally at line 1530. This caused `UnboundLocalError` when using `--provider` flag (single-provider mode), and would have overwritten credentials with empty data in interactive mode.
24
+
25
+ - **Fix**:
26
+ - Moved `api = TerradevAPI()` to line 952 (before `if provider:` branching) to ensure it's always in scope
27
+ - Removed duplicate `api` instantiation from the `else` block
28
+ - Moved `api.save_credentials()` inside the `else` block (line 1531) - it only runs in interactive mode since single-provider mode saves directly to file at line 1186-1187
29
+
30
+ - **Impact**: Both `terradev configure --provider <name>` and `terradev configure` (interactive) now correctly persist credentials to `~/.terradev/credentials.json`.
31
+
19
32
  **NOTES ON 5.4.0**
20
33
 
21
34
  Fixed **credential persistence bug** in `terradev configure` interactive mode:
@@ -116,7 +116,7 @@ class TerradevAPI:
116
116
  # Check if all credentials are still placeholder values
117
117
  placeholder_patterns = ["your_", "example_", "test_", "placeholder_", "xxx"]
118
118
  for key, value in self.credentials.items():
119
- if value and not any(
119
+ if value and isinstance(value, str) and not any(
120
120
  pattern in value.lower() for pattern in placeholder_patterns
121
121
  ):
122
122
  return False # Found a real credential
@@ -272,8 +272,20 @@ class TerradevAPI:
272
272
  # Check for nested dict format first (from configure --provider)
273
273
  nested = self.credentials.get(provider_name, {})
274
274
  if isinstance(nested, dict) and nested:
275
- # Nested dict already has the right key names for the provider
276
- return {k: str(v) for k, v in nested.items() if v}
275
+ # Check if nested values are placeholders (not real credentials)
276
+ placeholder_patterns = ["paste_", "your_", "example_", "test_", "placeholder_", "xxx"]
277
+ has_real_creds = False
278
+ for v in nested.values():
279
+ if isinstance(v, str) and v and not any(
280
+ pattern in v.lower() for pattern in placeholder_patterns
281
+ ):
282
+ has_real_creds = True
283
+ break
284
+
285
+ if has_real_creds:
286
+ # Nested dict has real credentials, use it
287
+ return {k: str(v) for k, v in nested.items() if v}
288
+ # Otherwise fall back to flat format
277
289
 
278
290
  creds: Dict[str, str] = {}
279
291
  if provider_name == "aws":
@@ -761,7 +773,7 @@ def run_interactive_onboarding(api: TerradevAPI):
761
773
  existing_value = api.credentials.get(
762
774
  f"{provider_key}_api_key"
763
775
  ) or api.credentials.get(f"{provider_key}_access_key_id")
764
- if existing_value and not any(
776
+ if existing_value and isinstance(existing_value, str) and not any(
765
777
  pattern in existing_value.lower()
766
778
  for pattern in ["your_", "example_", "test_", "placeholder_", "xxx"]
767
779
  ):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: terradev-cli
3
- Version: 5.4.1
3
+ Version: 5.4.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>
@@ -93,7 +93,7 @@ Requires-Dist: redis>=5.0.0; extra == "enterprise"
93
93
  Requires-Dist: PyJWT>=2.8.0; extra == "enterprise"
94
94
  Dynamic: license-file
95
95
 
96
- # Terradev CLI v5.3.8
96
+ # Terradev CLI v5.4.3
97
97
 
98
98
  **An imperative command-line-interface for AI workload orchestration.**
99
99
 
@@ -111,6 +111,29 @@ Continued focus on lower cost, faster provisioning, and topology-aware execution
111
111
 
112
112
  Model agnostic. Dataset agnostic. GPU agnostic. Provider agnostic. The only thing Terradev is not agnostic about is correctness: it enforces topology, idempotency, and sequencing.
113
113
 
114
+ **NOTES ON 5.4.3**
115
+
116
+ Fixed **credential format fallback bug** in `_provider_creds()`:
117
+
118
+ - **Bug**: When credentials file contains both nested format `{"runpod": {"api_key": "..."}}` and flat format `{"runpod_api_key": "..."}`, the `_provider_creds()` method prioritized nested format even if it contained placeholder values like "PASTE_NEW_RUNPOD_KEY_HERE". This caused `terradev quote` to fail because it used placeholder credentials instead of real flat-format credentials.
119
+
120
+ - **Fix**: Added placeholder detection in `_provider_creds()` to check if nested values are placeholders (containing "paste_", "your_", "example_", "test_", "placeholder_", "xxx"). If nested format contains only placeholders, the method now falls back to flat format credentials.
121
+
122
+ - **Impact**: Users with mixed credential formats (nested placeholders from configure + real flat keys from onboarding) now get real credentials from the flat format, enabling `terradev quote` to return actual pricing data.
123
+
124
+ **NOTES ON 5.4.2**
125
+
126
+ Fixed **credential type checking bug** in `is_first_time_user()` and onboarding:
127
+
128
+ - **Bug**: `is_first_time_user()` and onboarding code called `.lower()` on credential values without checking if they were strings. The credentials file uses nested dict format `{"runpod": {"api_key": "..."}}`, so when iterating over values, some are dicts, not strings. This caused `AttributeError: 'dict' object has no attribute 'lower'`.
129
+
130
+ - **Fix**:
131
+ - Added `isinstance(value, str)` check before calling `.lower()` in `is_first_time_user()` (line 119)
132
+ - Added `isinstance(existing_value, str)` check before calling `.lower()` in onboarding (line 764)
133
+ - The `_provider_creds()` method already correctly handles both flat and nested credential formats
134
+
135
+ - **Impact**: `terradev quote` and other commands that check credentials now work correctly with the nested dict credential format.
136
+
114
137
  **NOTES ON 5.3.9**
115
138
 
116
139
  Added **LoRAX (LoRA eXchange) integration** and **HuggingFace PEFT import** for production-grade multi-LoRA inference serving:
File without changes
File without changes
File without changes
File without changes
File without changes