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