terradev-cli 5.3.3__tar.gz → 5.3.4__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 (485) hide show
  1. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/Dockerfile +1 -1
  2. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/PKG-INFO +4 -18
  3. {terradev_cli-5.3.3/terradev_cli → terradev_cli-5.3.4}/README.md +3 -17
  4. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/pyproject.toml +1 -1
  5. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/__init__.py +1 -1
  6. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/cli.py +6 -6
  7. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/checkpoint_manager.py +2 -1
  8. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/preflight_validator.py +2 -1
  9. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/training_monitor.py +2 -1
  10. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/training_orchestrator.py +2 -1
  11. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/mcp/server.py +18 -6
  12. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/__init__.py +1 -0
  13. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/base_provider.py +6 -2
  14. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/e2e_networks_provider.py +4 -4
  15. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/fluidstack_provider.py +2 -2
  16. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/registry.py +48 -32
  17. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/yottalabs_provider.py +5 -5
  18. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli.egg-info/PKG-INFO +4 -18
  19. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli.egg-info/SOURCES.txt +0 -1
  20. terradev_cli-5.3.3/requirements.txt +0 -56
  21. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/.env.example +0 -0
  22. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/.github/workflows/action.yml +0 -0
  23. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/.github/workflows/ci.yml +0 -0
  24. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/.github/workflows/release.yml +0 -0
  25. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/.github/workflows/static.yml +0 -0
  26. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/.terradev/custom_providers.example.yaml +0 -0
  27. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/Deployment Package/BNF_GRAMMAR.md +0 -0
  28. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/Deployment Package/LIFECYCLES.md +0 -0
  29. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/Deployment Package/architecture.md +0 -0
  30. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/Deployment Package/overview.md +0 -0
  31. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/Deployment Package/security.md +0 -0
  32. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/Deployment Package/troubleshooting.md +0 -0
  33. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/Dockerfile.test +0 -0
  34. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/LICENSE +0 -0
  35. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/MANIFEST.in +0 -0
  36. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/agentic-template/helm/values-agentic.yaml +0 -0
  37. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/agentic-template/k8s/fleet-manifests.yaml +0 -0
  38. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/README.md +0 -0
  39. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/helm/values-glm5.yaml +0 -0
  40. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/k8s/hpa.yaml +0 -0
  41. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/k8s/model-cache-pvc.yaml +0 -0
  42. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/k8s/namespace.yaml +0 -0
  43. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/k8s/pdb.yaml +0 -0
  44. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/k8s/service.yaml +0 -0
  45. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/k8s/sglang-deployment.yaml +0 -0
  46. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/k8s/vllm-deployment.yaml +0 -0
  47. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/task.yaml +0 -0
  48. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/terraform/main.tf +0 -0
  49. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/terraform/outputs.tf +0 -0
  50. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/glm-5/terraform/variables.tf +0 -0
  51. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/llmd-template/README.md +0 -0
  52. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/llmd-template/helm/values-llmd.yaml +0 -0
  53. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/llmd-template/k8s/gateway.yaml +0 -0
  54. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/llmd-template/k8s/leaderworkerset.yaml +0 -0
  55. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/llmd-template/k8s/llminferenceservice.yaml +0 -0
  56. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/llmd-template/task.yaml +0 -0
  57. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/README.md +0 -0
  58. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/helm/values-moe.yaml +0 -0
  59. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/k8s/deployment.yaml +0 -0
  60. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/k8s/hpa.yaml +0 -0
  61. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/k8s/model-cache-pvc.yaml +0 -0
  62. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/k8s/namespace.yaml +0 -0
  63. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/k8s/pdb.yaml +0 -0
  64. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/k8s/service.yaml +0 -0
  65. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/task.yaml +0 -0
  66. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/terraform/main.tf +0 -0
  67. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/terraform/outputs.tf +0 -0
  68. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/moe-template/terraform/variables.tf +0 -0
  69. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/rag-template/README.md +0 -0
  70. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/rag-template/helm/values-rag.yaml +0 -0
  71. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/rag-template/k8s/deployment.yaml +0 -0
  72. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/clusters/rag-template/terraform/main.tf +0 -0
  73. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/demo/RECORDING_GUIDE.md +0 -0
  74. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/demo/generate_gif.py +0 -0
  75. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/demo/terradev-demo.gif +0 -0
  76. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/ADVANCED_FINANCIAL_INNOVATIONS.md +0 -0
  77. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/API_DOCUMENTATION.md +0 -0
  78. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/BingSiteAuth.xml +0 -0
  79. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/FINOPS_ATTRIBUTION_SYSTEM.md +0 -0
  80. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/USER_GUIDE.md +0 -0
  81. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/VLLM_AUTO_OPTIMIZATION_GUIDE.md +0 -0
  82. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/VLLM_OPTIMIZATION_GUIDE.md +0 -0
  83. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/architecture.md +0 -0
  84. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/index.html +0 -0
  85. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/overview.md +0 -0
  86. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/robots.txt +0 -0
  87. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/sitemap.xml +0 -0
  88. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/docs/test_spot_provision.md +0 -0
  89. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/examples/aws_ssm_starter.py +0 -0
  90. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/examples/config.example.json +0 -0
  91. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/examples/demo_k8s_config.yaml +0 -0
  92. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/examples/direct_aws_starter.py +0 -0
  93. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/examples/ec2_user_data_starter.py +0 -0
  94. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/examples/example-pipeline.yaml +0 -0
  95. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/examples/kubernetes_training_deployment.yaml +0 -0
  96. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/examples/simple_ssm_starter.py +0 -0
  97. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/examples/ssh_server_starter.py +0 -0
  98. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/examples/start_aws_servers.py +0 -0
  99. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/helm/terradev/Chart.yaml +0 -0
  100. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/helm/terradev/templates/_helpers.tpl +0 -0
  101. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/helm/terradev/templates/deployment.yaml +0 -0
  102. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/helm/terradev/values.yaml +0 -0
  103. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/infrastructure/bucket-policy.json +0 -0
  104. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/infrastructure/grafana_training_dashboard.json +0 -0
  105. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/infrastructure/kubernetes/microservices.yaml +0 -0
  106. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/infrastructure/terraform/main.tf +0 -0
  107. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/infrastructure/terraform/parallelism.tf +0 -0
  108. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/integrations/cli-tool.tf +0 -0
  109. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/integrations/cloud-management-widgets.tf +0 -0
  110. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/integrations/cloud-provider-apis.py +0 -0
  111. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/integrations/critical-widgets.tf +0 -0
  112. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/integrations/devops-cicd-widgets.tf +0 -0
  113. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/integrations/devops-essential-tools.tf +0 -0
  114. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/integrations/docker-integration.tf +0 -0
  115. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/integrations/kubernetes-operator.tf +0 -0
  116. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/integrations/mlflow-integration.tf +0 -0
  117. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/modules/datadog/README.md +0 -0
  118. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/modules/datadog/dashboard.tf +0 -0
  119. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/modules/datadog/monitors.tf +0 -0
  120. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/modules/datadog/outputs.tf +0 -0
  121. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/modules/datadog/provider.tf +0 -0
  122. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/modules/datadog/variables.tf +0 -0
  123. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/modules/datadog/versions.tf +0 -0
  124. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/modules/prometheus_training_config.yml +0 -0
  125. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/Cargo.toml +0 -0
  126. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/INTEGRATION_GUIDE.md +0 -0
  127. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/PERFORMANCE_OPTIMIZATIONS.md +0 -0
  128. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/README.md +0 -0
  129. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-artifact-verification/Cargo.toml +0 -0
  130. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-artifact-verification/src/lib.rs +0 -0
  131. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-artifact-verification/src/types.rs +0 -0
  132. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-artifact-verification/src/verifier.rs +0 -0
  133. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-authentication/Cargo.toml +0 -0
  134. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-authentication/src/encoding.rs +0 -0
  135. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-authentication/src/hmac.rs +0 -0
  136. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-authentication/src/lib.rs +0 -0
  137. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-authentication/src/types.rs +0 -0
  138. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-cache-eviction/Cargo.toml +0 -0
  139. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-cache-eviction/src/cache.rs +0 -0
  140. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-cache-eviction/src/lib.rs +0 -0
  141. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-cache-eviction/src/types.rs +0 -0
  142. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-command-executor/Cargo.toml +0 -0
  143. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-command-executor/src/lib.rs +0 -0
  144. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-config-validator/Cargo.toml +0 -0
  145. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-config-validator/src/lib.rs +0 -0
  146. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-config-validator/src/types.rs +0 -0
  147. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-config-validator/src/validator.rs +0 -0
  148. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-connection-pool/Cargo.toml +0 -0
  149. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-connection-pool/src/lib.rs +0 -0
  150. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-connection-pool/src/pool.rs +0 -0
  151. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-connection-pool/src/types.rs +0 -0
  152. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-cost-calculator/Cargo.toml +0 -0
  153. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-cost-calculator/src/calculator.rs +0 -0
  154. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-cost-calculator/src/lib.rs +0 -0
  155. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-cost-calculator/src/types.rs +0 -0
  156. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-cost-scaler/Cargo.toml +0 -0
  157. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-cost-scaler/src/lib.rs +0 -0
  158. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-credential-vault/Cargo.toml +0 -0
  159. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-credential-vault/src/lib.rs +0 -0
  160. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-credential-vault/src/types.rs +0 -0
  161. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-credential-vault/src/vault.rs +0 -0
  162. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-dag-executor/Cargo.toml +0 -0
  163. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-dag-executor/src/lib.rs +0 -0
  164. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-distributed-lock/Cargo.toml +0 -0
  165. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-distributed-lock/src/lib.rs +0 -0
  166. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-distributed-lock/src/lock.rs +0 -0
  167. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-distributed-lock/src/types.rs +0 -0
  168. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-egress-optimizer/Cargo.toml +0 -0
  169. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-egress-optimizer/src/graph.rs +0 -0
  170. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-egress-optimizer/src/lib.rs +0 -0
  171. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-egress-optimizer/src/types.rs +0 -0
  172. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-event-bus/Cargo.toml +0 -0
  173. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-event-bus/src/bus.rs +0 -0
  174. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-event-bus/src/lib.rs +0 -0
  175. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-event-bus/src/types.rs +0 -0
  176. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-governance/Cargo.toml +0 -0
  177. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-governance/src/lib.rs +0 -0
  178. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-gpu-discovery/Cargo.toml +0 -0
  179. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-gpu-discovery/src/lib.rs +0 -0
  180. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-gpu-topology/Cargo.toml +0 -0
  181. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-gpu-topology/src/lib.rs +0 -0
  182. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-gpu-topology/src/topology.rs +0 -0
  183. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-gpu-topology/src/types.rs +0 -0
  184. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-helm-generator/Cargo.toml +0 -0
  185. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-helm-generator/src/lib.rs +0 -0
  186. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-mcp-codec/Cargo.toml +0 -0
  187. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-mcp-codec/src/lib.rs +0 -0
  188. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-mcp-optimizer/Cargo.toml +0 -0
  189. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-mcp-optimizer/src/lib.rs +0 -0
  190. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-price-intelligence/Cargo.toml +0 -0
  191. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-price-intelligence/src/lib.rs +0 -0
  192. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-quota-manager/Cargo.toml +0 -0
  193. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-quota-manager/src/lib.rs +0 -0
  194. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-quota-manager/src/manager.rs +0 -0
  195. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-quota-manager/src/types.rs +0 -0
  196. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-resource-pool/Cargo.toml +0 -0
  197. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-resource-pool/src/lib.rs +0 -0
  198. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-resource-pool/src/pool.rs +0 -0
  199. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-resource-pool/src/types.rs +0 -0
  200. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-result-compressor/Cargo.toml +0 -0
  201. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-result-compressor/src/lib.rs +0 -0
  202. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-semantic-router/Cargo.toml +0 -0
  203. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-semantic-router/src/lib.rs +0 -0
  204. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-snapshot-manager/Cargo.toml +0 -0
  205. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-snapshot-manager/src/lib.rs +0 -0
  206. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-snapshot-manager/src/snapshot.rs +0 -0
  207. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-snapshot-manager/src/types.rs +0 -0
  208. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-state-machine/Cargo.toml +0 -0
  209. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-state-machine/src/lib.rs +0 -0
  210. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-state-machine/src/state.rs +0 -0
  211. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-state-machine/src/types.rs +0 -0
  212. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-telemetry/Cargo.toml +0 -0
  213. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-telemetry/src/lib.rs +0 -0
  214. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-telemetry/src/pipeline.rs +0 -0
  215. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-telemetry/src/types.rs +0 -0
  216. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-tool-registry/Cargo.toml +0 -0
  217. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-tool-registry/src/lib.rs +0 -0
  218. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-vram-estimator/Cargo.toml +0 -0
  219. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-vram-estimator/src/estimator.rs +0 -0
  220. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-vram-estimator/src/lib.rs +0 -0
  221. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-vram-estimator/src/types.rs +0 -0
  222. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-warm-pool/Cargo.toml +0 -0
  223. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/rust/terradev-warm-pool/src/lib.rs +0 -0
  224. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/scripts/action.py +0 -0
  225. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/scripts/gpu-check.sh +0 -0
  226. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/setup/Lambda Cloud API spec 1.8.3.json +0 -0
  227. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/setup/docker-compose.yml +0 -0
  228. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/setup/nginx.conf +0 -0
  229. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/setup/setup.sh +0 -0
  230. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/setup.cfg +0 -0
  231. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/CHANGELOG.md +0 -0
  232. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/COMPLETE_COMMAND_REFERENCE.md +0 -0
  233. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/COMPLETE_INTEGRATION_GUIDE.md +0 -0
  234. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/IMPLEMENTATION_SUMMARY.md +0 -0
  235. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/MAKING_SPOT_WORK_FOR_STATEFUL_WORKLOADS.md +0 -0
  236. {terradev_cli-5.3.3 → terradev_cli-5.3.4/terradev_cli}/README.md +0 -0
  237. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/SGLANG_COMMAND_GUIDE.md +0 -0
  238. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/TERRADEV_STACK_CHART.md +0 -0
  239. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/__main__.py +0 -0
  240. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/cli_hf_spaces.py +0 -0
  241. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/cli_karpenter.py +0 -0
  242. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/__init__.py +0 -0
  243. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/agentic_provisioner.py +0 -0
  244. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/agentic_topology.py +0 -0
  245. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/async_config.py +0 -0
  246. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/auth.py +0 -0
  247. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/auto_lineage.py +0 -0
  248. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/cache_manager.py +0 -0
  249. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/command_executor.py +0 -0
  250. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/config.py +0 -0
  251. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/config_validator.py +0 -0
  252. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/cost_scaler.py +0 -0
  253. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/cost_tracker.py +0 -0
  254. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/credential_vault.py +0 -0
  255. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/cuda_graph_integrator.py +0 -0
  256. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/dag_executor.py +0 -0
  257. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/data_governance.py +0 -0
  258. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/dataset_stager.py +0 -0
  259. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/deployment_router.py +0 -0
  260. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/distributed_lock.py +0 -0
  261. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/drift_detector.py +0 -0
  262. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/egress_cost_monitor.py +0 -0
  263. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/egress_optimizer.py +0 -0
  264. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/evaluation_orchestrator.py +0 -0
  265. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/event_system.py +0 -0
  266. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/gitops_manager.py +0 -0
  267. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/gpu_discovery.py +0 -0
  268. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/gpu_topology.py +0 -0
  269. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/helm_generator.py +0 -0
  270. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/hf_cli_integration.py +0 -0
  271. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/hf_smart_templates.py +0 -0
  272. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/hf_spaces.py +0 -0
  273. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/inference_router.py +0 -0
  274. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/inference_spot_manager.py +0 -0
  275. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/job_state_manager.py +0 -0
  276. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/kv_cache_checkpoint_manager.py +0 -0
  277. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/kv_cache_checkpoint_tests.py +0 -0
  278. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/kv_sharing.py +0 -0
  279. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/manifest_cache.py +0 -0
  280. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/manifest_example.json +0 -0
  281. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/mig_manager.py +0 -0
  282. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/migration_orchestrator.py +0 -0
  283. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/mla_vram_estimator.py +0 -0
  284. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/mla_vram_tests.py +0 -0
  285. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/model_orchestrator.py +0 -0
  286. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/oidc_provider.py +0 -0
  287. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/optimization_config.py +0 -0
  288. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/parallel_provisioner.py +0 -0
  289. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/pd_transport.py +0 -0
  290. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/pipeline_schema.py +0 -0
  291. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/price_discovery.py +0 -0
  292. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/price_intelligence.py +0 -0
  293. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/public_ip_billing_tracker.py +0 -0
  294. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/quick_start.py +0 -0
  295. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/quota_manager.py +0 -0
  296. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/rate_limiter.py +0 -0
  297. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/rust_telemetry.py +0 -0
  298. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/semantic_router.py +0 -0
  299. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/__init__.py +0 -0
  300. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/base_signal.py +0 -0
  301. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/complexity_signal.py +0 -0
  302. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/domain_signal.py +0 -0
  303. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/keyword_signal.py +0 -0
  304. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/language_signal.py +0 -0
  305. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/modality_signal.py +0 -0
  306. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/orchestrator.py +0 -0
  307. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/routing_policy.yaml +0 -0
  308. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/safety_signal.py +0 -0
  309. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/session_manager.py +0 -0
  310. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/ssh_key_manager.py +0 -0
  311. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/telemetry.py +0 -0
  312. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/terradev_engine.py +0 -0
  313. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/trace_viewer.py +0 -0
  314. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/user_manager.py +0 -0
  315. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/warm_pool_manager.py +0 -0
  316. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/weight_streaming_benchmarks.py +0 -0
  317. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/core/weight_streaming_manager.py +0 -0
  318. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/cost_optimizer.py +0 -0
  319. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/credential_prompt.py +0 -0
  320. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/demo.py +0 -0
  321. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/entry_point.py +0 -0
  322. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/integrations/Terradev LOGO BLACK.png +0 -0
  323. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/integrations/Terradev LOGO WHITEW.png +0 -0
  324. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/integrations/__init__.py +0 -0
  325. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/integrations/databricks_integration.py +0 -0
  326. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/integrations/datadog_integration.py +0 -0
  327. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/integrations/helicone_integration.py +0 -0
  328. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/integrations/prometheus_integration.py +0 -0
  329. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/integrations/wandb_integration.py +0 -0
  330. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/k8s/terraform_wrapper.py +0 -0
  331. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/kubernetes/inferx-cost-optimized.yaml +0 -0
  332. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/kubernetes/inferx-infrastructure.yaml +0 -0
  333. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/kubernetes/inferx-models.yaml +0 -0
  334. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/kubernetes/inferx-platform.yaml +0 -0
  335. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/kubernetes/inferx_setup.py +0 -0
  336. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/mcp/__init__.py +0 -0
  337. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/__init__.py +0 -0
  338. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/agentic_serving.py +0 -0
  339. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/drift_retrain_service.py +0 -0
  340. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/dvc_service.py +0 -0
  341. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/guardrails_service.py +0 -0
  342. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/huggingface_service.py +0 -0
  343. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/kserve_service.py +0 -0
  344. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/kubernetes_enhanced.py +0 -0
  345. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/kubernetes_service.py +0 -0
  346. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/langchain_service.py +0 -0
  347. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/langfuse_service.py +0 -0
  348. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/langgraph_service.py +0 -0
  349. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/lmcache_service.py +0 -0
  350. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/mlflow_service.py +0 -0
  351. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/model_router.py +0 -0
  352. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/ollama_service.py +0 -0
  353. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/phoenix_service.py +0 -0
  354. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/qdrant_service.py +0 -0
  355. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/ray_enhanced.py +0 -0
  356. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/ray_service.py +0 -0
  357. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/sglang_service.py +0 -0
  358. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/vllm_service.py +0 -0
  359. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/ml_services/wandb_enhanced.py +0 -0
  360. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/optimization/__init__.py +0 -0
  361. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/optimization/auto_optimizer.py +0 -0
  362. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/optimization/cuco_optimizer.py +0 -0
  363. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/LATITUDE_PROVIDER.md +0 -0
  364. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/alibaba_provider.py +0 -0
  365. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/aws_provider.py +0 -0
  366. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/azure_provider.py +0 -0
  367. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/baseten_provider.py +0 -0
  368. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/coreweave_provider.py +0 -0
  369. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/crusoe_provider.py +0 -0
  370. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/demo_mode.py +0 -0
  371. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/digitalocean_provider.py +0 -0
  372. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/gcp_provider.py +0 -0
  373. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/gpu_catalog.py +0 -0
  374. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/hetzner_provider.py +0 -0
  375. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/huggingface_provider.py +0 -0
  376. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/hyperstack_provider.py +0 -0
  377. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/inferx_provider.py +0 -0
  378. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/lambda_labs_provider.py +0 -0
  379. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/latitude_provider.py +0 -0
  380. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/oracle_provider.py +0 -0
  381. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/ovhcloud_provider.py +0 -0
  382. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/provider_factory.py +0 -0
  383. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/provider_profiles.py +0 -0
  384. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/real_pricing.py +0 -0
  385. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/runpod_provider.py +0 -0
  386. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/siliconflow_provider.py +0 -0
  387. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/tensordock_provider.py +0 -0
  388. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/types.py +0 -0
  389. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/providers/vastai_provider.py +0 -0
  390. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/requirements.txt +0 -0
  391. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/requirements_minimal.txt +0 -0
  392. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/main.tf +0 -0
  393. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/__init__.py +0 -0
  394. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-aws/bootstrap.sh +0 -0
  395. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-aws/main.tf +0 -0
  396. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-aws/outputs.tf +0 -0
  397. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-aws/variables.tf +0 -0
  398. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-aws/versions.tf +0 -0
  399. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-hyperstack/bootstrap.sh +0 -0
  400. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-hyperstack/main.tf +0 -0
  401. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-hyperstack/outputs.tf +0 -0
  402. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-hyperstack/variables.tf +0 -0
  403. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-hyperstack/versions.tf +0 -0
  404. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-lambda/bootstrap.sh +0 -0
  405. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-lambda/main.tf +0 -0
  406. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-lambda/outputs.tf +0 -0
  407. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-lambda/variables.tf +0 -0
  408. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-lambda/versions.tf +0 -0
  409. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-vastai/bootstrap.sh +0 -0
  410. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-vastai/main.tf +0 -0
  411. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-vastai/outputs.tf +0 -0
  412. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-vastai/variables.tf +0 -0
  413. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-vastai/versions.tf +0 -0
  414. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/join-script.tpl +0 -0
  415. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/kubeconfig.tpl +0 -0
  416. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/main.tf +0 -0
  417. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/outputs.tf +0 -0
  418. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/variables.tf +0 -0
  419. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/versions.tf +0 -0
  420. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/networking/main.tf +0 -0
  421. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/networking/outputs.tf +0 -0
  422. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/networking/variables.tf +0 -0
  423. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/networking/versions.tf +0 -0
  424. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/outputs.tf +0 -0
  425. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/price-optimizer/optimal-allocation.py +0 -0
  426. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/providers.tf +0 -0
  427. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/terraform/variables.tf +0 -0
  428. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/test_summary.py +0 -0
  429. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/utils/__init__.py +0 -0
  430. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli/utils/formatters.py +0 -0
  431. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli.egg-info/dependency_links.txt +0 -0
  432. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli.egg-info/entry_points.txt +0 -0
  433. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli.egg-info/requires.txt +0 -0
  434. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terradev_cli.egg-info/top_level.txt +0 -0
  435. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform.tfvars.example +0 -0
  436. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_optimization/backend.tf +0 -0
  437. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_optimization/error_handling.py +0 -0
  438. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_optimization/parallel_provisioning.tf +0 -0
  439. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_optimization/storage_choice_matrix.py +0 -0
  440. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_optimization/test_error_handler.py +0 -0
  441. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_optimization/versions.tf +0 -0
  442. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_transparency/audit_demo/trail_3caed73ad5bf.json +0 -0
  443. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_transparency/audit_trail.py +0 -0
  444. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_transparency/audit_trails.json +0 -0
  445. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_transparency/decision_engine.py +0 -0
  446. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_transparency/decision_logs.json +0 -0
  447. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_transparency/operations.json +0 -0
  448. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_transparency/terraform_manager.py +0 -0
  449. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_transparency/terraform_plans.json +0 -0
  450. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_transparency/transparency_demo.py +0 -0
  451. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/terraform_transparency/transparency_report.json +0 -0
  452. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/CREDENTIAL_STRATEGY.md +0 -0
  453. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/INTEGRATION_STRATEGY.md +0 -0
  454. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/Makefile +0 -0
  455. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/ci_pipeline.py +0 -0
  456. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/conftest.py +0 -0
  457. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/root_tests/test_cli_ux_battle.py +0 -0
  458. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/root_tests/test_cli_ux_battle_fixed.py +0 -0
  459. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/root_tests/test_cli_ux_final.py +0 -0
  460. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/root_tests/test_final_integration.py +0 -0
  461. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/root_tests/test_integrated_optimization.py +0 -0
  462. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/root_tests/test_p10_production_failover.py +0 -0
  463. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/root_tests/test_sso_phase1.py +0 -0
  464. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/root_tests/test_vllm_optimization.py +0 -0
  465. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/simple_test.py +0 -0
  466. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_ai_integrations.py +0 -0
  467. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_checkpoint_manager.py +0 -0
  468. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_cli_smoke.py +0 -0
  469. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_dag_executor.py +0 -0
  470. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_flashoptim.py +0 -0
  471. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_integration.py +0 -0
  472. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_job_state_manager.py +0 -0
  473. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_k8s_regression.py +0 -0
  474. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_latitude_provider.py +0 -0
  475. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_major_providers.py +0 -0
  476. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_mcp_handlers.py +0 -0
  477. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_new_providers.py +0 -0
  478. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_provider_conformance.py +0 -0
  479. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_providers.py +0 -0
  480. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_semantic_router.py +0 -0
  481. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_sglang_optimization.py +0 -0
  482. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_ssh_key_manager.py +0 -0
  483. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_training_monitor.py +0 -0
  484. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_training_orchestrator.py +0 -0
  485. {terradev_cli-5.3.3 → terradev_cli-5.3.4}/tests/test_vllm_features.py +0 -0
@@ -18,7 +18,7 @@ RUN apt-get update && apt-get install -y \
18
18
  && rm -rf /var/lib/apt/lists/*
19
19
 
20
20
  # Copy requirements and install Python dependencies
21
- COPY requirements.txt .
21
+ COPY terradev_cli/requirements.txt .
22
22
  RUN pip install --no-cache-dir -r requirements.txt
23
23
 
24
24
  # Install Terradev CLI
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: terradev-cli
3
- Version: 5.3.3
3
+ Version: 5.3.4
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.3
96
+ # Terradev CLI v5.3.4
97
97
 
98
98
  **An imperative command-line-interface for AI workload orchestration.**
99
99
 
@@ -105,9 +105,10 @@ pypi.org/project/terradev-cli/
105
105
 
106
106
  Terradev is a cross-cloud compute-provisioning CLI that compresses + stages datasets, provisions optimal instances + nodes, and deploys **3-5x faster** than sequential provisioning.
107
107
 
108
+
108
109
  **NOTES ON 5.3.3**
109
110
 
110
- Added **provider profile system** for intelligent quirk-aware routing across 23 cloud providers:
111
+ Added **provider registration and profiling system** for intelligent quirk-aware routing across 23 cloud providers, and registration for custom providers from .yaml import:
111
112
 
112
113
  - **ProviderProfile schema** (`providers/types.py`): Encodes provider-specific behaviors including API style (REST/GraphQL/JSON:API), authentication type (Bearer/Basic/HMAC/X-Api-Key), rate limits, spot instance support, egress costs, fallback routing, capacity checks, container image pinning, and spot interruption handling.
113
114
 
@@ -126,20 +127,6 @@ Added **provider profile system** for intelligent quirk-aware routing across 23
126
127
  terradev providers export-example -o ~/.terradev/custom_providers.yaml
127
128
  ```
128
129
 
129
- **NOTES ON 5.3.0**
130
-
131
- Added **transport-agnostic Prefill/Decode (P/D) disaggregation layer** and **multi-agent KV cache sharing planner**:
132
-
133
- - **Transport-agnostic P/D layer** (`core/pd_transport.py`): KV cache transfer is abstracted across NIXL/NVLink (600 GB/s), NIXL/InfiniBand (200–400 GB/s), CXL 3.0 (planned migration), RoCE RDMA, and TCP fallback. The `TransportSelector` probes at provision time and selects the best available transport. Documented NIXL→CXL migration path (Phase 1 co-existence → Phase 2 CXL-primary → Phase 3 fabric switch).
134
-
135
- - **Multi-agent KV sharing planner** (`core/kv_sharing.py`): Computes fleet VRAM requirements with KV cache sharing topologies (broadcast/star/chain/none). For 20 agents with 70% shared context (broadcast), VRAM reduces by 66% → 3× more agents per GPU, 3× fewer GPUs needed, ~$14/hr savings on H100 fleet. Includes `EvictionCostModel` to quantify re-prefill penalty when VRAM is under-provisioned.
136
-
137
- - **CLI integration**: `terradev provision` now supports `--agents`, `--context`, `--sharing-topology`, `--dtype` flags. When `--agents` is passed, the KV planner outputs the heterogeneous fleet spec with cost savings:
138
- ```bash
139
- terradev provision -g H100 --agents 20 --context 32k --model-name llama-70b
140
- terradev provision -g H100 --agents 20 --context 32k --sharing-topology broadcast --dry-run
141
- ```
142
-
143
130
  **NOTES ON 5.2.1**
144
131
 
145
132
  Added two new BYOAPI providers: **Yotta Labs (Shakti Cloud)** and **E2E Networks** — India's leading GPU clouds. Yotta Labs uses a pod-based compute model (similar to RunPod), and E2E Networks is a traditional VM-style hyperscaler that is NSE-listed and MeitY empanelled. Both are BYOAPI: your key, stored locally, never touches a Terradev server.
@@ -771,6 +758,5 @@ Apache 2.0.
771
758
 
772
759
  ## Support
773
760
 
774
- - **Documentation**: [Full User Guide](USER_GUIDE.md)
775
761
  - **Issues**: [GitHub Issues](https://github.com/theoddden/Terradev/issues)
776
762
  - **Discussions**: [GitHub Discussions](https://github.com/theoddden/Terradev/discussions)
@@ -1,4 +1,4 @@
1
- # Terradev CLI v5.3.3
1
+ # Terradev CLI v5.3.4
2
2
 
3
3
  **An imperative command-line-interface for AI workload orchestration.**
4
4
 
@@ -10,9 +10,10 @@ pypi.org/project/terradev-cli/
10
10
 
11
11
  Terradev is a cross-cloud compute-provisioning CLI that compresses + stages datasets, provisions optimal instances + nodes, and deploys **3-5x faster** than sequential provisioning.
12
12
 
13
+
13
14
  **NOTES ON 5.3.3**
14
15
 
15
- Added **provider profile system** for intelligent quirk-aware routing across 23 cloud providers:
16
+ Added **provider registration and profiling system** for intelligent quirk-aware routing across 23 cloud providers, and registration for custom providers from .yaml import:
16
17
 
17
18
  - **ProviderProfile schema** (`providers/types.py`): Encodes provider-specific behaviors including API style (REST/GraphQL/JSON:API), authentication type (Bearer/Basic/HMAC/X-Api-Key), rate limits, spot instance support, egress costs, fallback routing, capacity checks, container image pinning, and spot interruption handling.
18
19
 
@@ -31,20 +32,6 @@ Added **provider profile system** for intelligent quirk-aware routing across 23
31
32
  terradev providers export-example -o ~/.terradev/custom_providers.yaml
32
33
  ```
33
34
 
34
- **NOTES ON 5.3.0**
35
-
36
- Added **transport-agnostic Prefill/Decode (P/D) disaggregation layer** and **multi-agent KV cache sharing planner**:
37
-
38
- - **Transport-agnostic P/D layer** (`core/pd_transport.py`): KV cache transfer is abstracted across NIXL/NVLink (600 GB/s), NIXL/InfiniBand (200–400 GB/s), CXL 3.0 (planned migration), RoCE RDMA, and TCP fallback. The `TransportSelector` probes at provision time and selects the best available transport. Documented NIXL→CXL migration path (Phase 1 co-existence → Phase 2 CXL-primary → Phase 3 fabric switch).
39
-
40
- - **Multi-agent KV sharing planner** (`core/kv_sharing.py`): Computes fleet VRAM requirements with KV cache sharing topologies (broadcast/star/chain/none). For 20 agents with 70% shared context (broadcast), VRAM reduces by 66% → 3× more agents per GPU, 3× fewer GPUs needed, ~$14/hr savings on H100 fleet. Includes `EvictionCostModel` to quantify re-prefill penalty when VRAM is under-provisioned.
41
-
42
- - **CLI integration**: `terradev provision` now supports `--agents`, `--context`, `--sharing-topology`, `--dtype` flags. When `--agents` is passed, the KV planner outputs the heterogeneous fleet spec with cost savings:
43
- ```bash
44
- terradev provision -g H100 --agents 20 --context 32k --model-name llama-70b
45
- terradev provision -g H100 --agents 20 --context 32k --sharing-topology broadcast --dry-run
46
- ```
47
-
48
35
  **NOTES ON 5.2.1**
49
36
 
50
37
  Added two new BYOAPI providers: **Yotta Labs (Shakti Cloud)** and **E2E Networks** — India's leading GPU clouds. Yotta Labs uses a pod-based compute model (similar to RunPod), and E2E Networks is a traditional VM-style hyperscaler that is NSE-listed and MeitY empanelled. Both are BYOAPI: your key, stored locally, never touches a Terradev server.
@@ -676,6 +663,5 @@ Apache 2.0.
676
663
 
677
664
  ## Support
678
665
 
679
- - **Documentation**: [Full User Guide](USER_GUIDE.md)
680
666
  - **Issues**: [GitHub Issues](https://github.com/theoddden/Terradev/issues)
681
667
  - **Discussions**: [GitHub Discussions](https://github.com/theoddden/Terradev/discussions)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "terradev-cli"
7
- version = "5.3.3"
7
+ version = "5.3.4"
8
8
  description = "An imperative command-line-interface for AI workload orchestration."
9
9
  readme = "README.md"
10
10
  license = {text = "Apache-2.0"}
@@ -3,6 +3,6 @@ Terradev CLI - Cross-Cloud Compute Optimization Platform
3
3
  Parallel provisioning and orchestration for optimized compute costs
4
4
  """
5
5
 
6
- __version__ = "5.0.1"
6
+ __version__ = "5.3.4"
7
7
  __author__ = "Terradev Team"
8
8
  __description__ = "Open Source BYOAPI Multi-Cloud GPU Infrastructure Platform"
@@ -14138,11 +14138,11 @@ def local_scan(host, user, key, detailed, register, name):
14138
14138
  except Exception:
14139
14139
  return "", 1
14140
14140
  else:
14141
- # Local execution - still safe since query is hardcoded
14142
- cmd = f"nvidia-smi --query-gpu={query} --format=csv,noheader,nounits"
14141
+ # Local execution - use list-args for injection safety
14142
+ cmd = ["nvidia-smi", f"--query-gpu={query}", "--format=csv,noheader,nounits"]
14143
14143
  try:
14144
14144
  result = subprocess.run(
14145
- cmd, shell=True, capture_output=True, text=True, timeout=15
14145
+ cmd, capture_output=True, text=True, timeout=15
14146
14146
  )
14147
14147
  return result.stdout.strip(), result.returncode
14148
14148
  except Exception:
@@ -14318,11 +14318,11 @@ def local_register(name, host, user, key):
14318
14318
  click.echo(f"Error scanning {target}: {e}", err=True)
14319
14319
  return
14320
14320
  else:
14321
- # Local execution - safe since query is hardcoded
14322
- cmd = f"nvidia-smi --query-gpu={query} --format=csv,noheader,nounits"
14321
+ # Local execution - use list-args for injection safety
14322
+ cmd = ["nvidia-smi", f"--query-gpu={query}", "--format=csv,noheader,nounits"]
14323
14323
  try:
14324
14324
  result = subprocess.run(
14325
- cmd, shell=True, capture_output=True, text=True, timeout=15
14325
+ cmd, capture_output=True, text=True, timeout=15
14326
14326
  )
14327
14327
  raw = result.stdout.strip()
14328
14328
  except Exception as e:
@@ -221,7 +221,8 @@ def _run_on(
221
221
  import re
222
222
 
223
223
  # Allow alphanumeric, spaces, and basic shell-safe characters
224
- if not re.match(r'^[a-zA-Z0-9_\-./:=@, \n\t|>&]+$', cmd):
224
+ # Explicitly exclude shell metacharacters (|, >, &) to prevent command chaining
225
+ if not re.match(r'^[a-zA-Z0-9_\-./:=@, \n\t]+$', cmd):
225
226
  return -1, "", "Unsafe command characters detected"
226
227
 
227
228
  if host and host not in ("localhost", "127.0.0.1"):
@@ -139,7 +139,8 @@ def _run_on(
139
139
  import re
140
140
 
141
141
  # Allow alphanumeric, spaces, and basic shell-safe characters
142
- if not re.match(r'^[a-zA-Z0-9_\-./:=@, \n\t|>&]+$', cmd):
142
+ # Explicitly exclude shell metacharacters (|, >, &) to prevent command chaining
143
+ if not re.match(r'^[a-zA-Z0-9_\-./:=@, \n\t]+$', cmd):
143
144
  return -1, "", "Unsafe command characters detected"
144
145
 
145
146
  if host and host not in ("localhost", "127.0.0.1"):
@@ -136,7 +136,8 @@ def _run_on(
136
136
  import re
137
137
 
138
138
  # Allow alphanumeric, spaces, and basic shell-safe characters
139
- if not re.match(r'^[a-zA-Z0-9_\-./:=@, \n\t|>&]+$', cmd):
139
+ # Explicitly exclude shell metacharacters (|, >, &) to prevent command chaining
140
+ if not re.match(r'^[a-zA-Z0-9_\-./:=@, \n\t]+$', cmd):
140
141
  return -1, "", "Unsafe command characters detected"
141
142
 
142
143
  if host and host not in ("localhost", "127.0.0.1"):
@@ -439,7 +439,8 @@ def _run_on(
439
439
  # Allow alphanumeric, spaces, and basic shell-safe characters.
440
440
  # SECURITY: quotes ('"') are deliberately excluded — they are shell metacharacters
441
441
  # that can be used to escape a quoted context and inject arbitrary commands.
442
- if not re.match(r'^[a-zA-Z0-9_\-./:=@, \n\t|>&]+$', cmd):
442
+ # Explicitly exclude shell metacharacters (|, >, &) to prevent command chaining
443
+ if not re.match(r'^[a-zA-Z0-9_\-./:=@, \n\t]+$', cmd):
443
444
  return -1, "", "Unsafe command characters detected"
444
445
 
445
446
  if host and host not in ("localhost", "127.0.0.1"):
@@ -2,7 +2,7 @@
2
2
  """
3
3
  Terradev MCP Server v2.1.0 - Complete Agentic GPU Infrastructure for Claude Code
4
4
 
5
- 218 MCP tools: GPU provisioning, Kubernetes clusters, Karpenter auto-provisioning,
5
+ 220 MCP tools: GPU provisioning, Kubernetes clusters, Karpenter auto-provisioning,
6
6
  GitOps/ArgoCD automation, event-driven triggers, environment promotion, lineage tracking,
7
7
  cross-provider migration, vLLM/SGLang/Ollama inference, Arize Phoenix trace observability,
8
8
  NeMo Guardrails output safety, Qdrant vector DB, Ray cluster management, W&B/LangSmith/MLflow/DVC,
@@ -982,15 +982,19 @@ server = Server("terradev-mcp")
982
982
  _tools_loaded = False
983
983
  _tool_registry: Dict[str, callable] = {}
984
984
  _tool_schemas: Dict[str, Dict] = {}
985
- _load_lock = asyncio.Lock()
985
+ _load_lock: Optional[asyncio.Lock] = None
986
986
  _concurrent_requests = 0
987
987
  _max_concurrent = 100
988
- _request_semaphore = asyncio.Semaphore(_max_concurrent)
988
+ _request_semaphore: Optional[asyncio.Semaphore] = None
989
989
 
990
990
 
991
991
  async def _ensure_tools_loaded():
992
992
  """Ensure tools are loaded (lazy loading)"""
993
- global _tools_loaded, _tool_registry, _tool_schemas
993
+ global _tools_loaded, _tool_registry, _tool_schemas, _load_lock
994
+
995
+ # Lazy-create lock to avoid Python 3.9 event loop binding bug
996
+ if _load_lock is None:
997
+ _load_lock = asyncio.Lock()
994
998
 
995
999
  if _tools_loaded:
996
1000
  return
@@ -5336,7 +5340,11 @@ else:
5336
5340
  @server.list_tools()
5337
5341
  async def handle_list_tools() -> ListToolsResult:
5338
5342
  """List available Terradev tools (lazy loading with compression)"""
5339
- global _concurrent_requests
5343
+ global _concurrent_requests, _request_semaphore
5344
+
5345
+ # Lazy-create semaphore to avoid Python 3.9 event loop binding bug
5346
+ if _request_semaphore is None:
5347
+ _request_semaphore = asyncio.Semaphore(_max_concurrent)
5340
5348
 
5341
5349
  # Adaptive concurrency control
5342
5350
  async with _request_semaphore:
@@ -5355,11 +5363,15 @@ async def handle_list_tools() -> ListToolsResult:
5355
5363
  @server.call_tool()
5356
5364
  async def handle_call_tool(request: CallToolRequest) -> CallToolResult:
5357
5365
  """Handle tool calls with adaptive concurrency control"""
5358
- global _concurrent_requests
5366
+ global _concurrent_requests, _request_semaphore
5359
5367
 
5360
5368
  tool_name = request.params.name
5361
5369
  arguments = request.params.arguments or {}
5362
5370
 
5371
+ # Lazy-create semaphore to avoid Python 3.9 event loop binding bug
5372
+ if _request_semaphore is None:
5373
+ _request_semaphore = asyncio.Semaphore(_max_concurrent)
5374
+
5363
5375
  # Adaptive concurrency control
5364
5376
  async with _request_semaphore:
5365
5377
  _concurrent_requests += 1
@@ -18,6 +18,7 @@ from .types import (
18
18
  ProviderCapabilities,
19
19
  HealthStatus,
20
20
  ProviderHealth,
21
+ ProviderProfile,
21
22
  )
22
23
 
23
24
  from .base_provider import BaseProvider
@@ -42,11 +42,15 @@ class BaseProvider(ABC):
42
42
 
43
43
  # Shared TCP connector for connection pooling across all providers
44
44
  _shared_connector: Optional[aiohttp.TCPConnector] = None
45
- _connector_lock = asyncio.Lock()
45
+ _connector_lock: Optional[asyncio.Lock] = None
46
46
 
47
47
  @classmethod
48
48
  async def _get_shared_connector(cls) -> aiohttp.TCPConnector:
49
49
  """Get or create shared TCP connector with connection pooling"""
50
+ # Lazy-create lock to avoid Python 3.9 event loop binding bug
51
+ if cls._connector_lock is None:
52
+ cls._connector_lock = asyncio.Lock()
53
+
50
54
  if cls._shared_connector is None or cls._shared_connector.closed:
51
55
  async with cls._connector_lock:
52
56
  if cls._shared_connector is None or cls._shared_connector.closed:
@@ -370,7 +374,7 @@ class BaseProvider(ABC):
370
374
  last_states[iid] = info.status
371
375
  except Exception as e:
372
376
  # Log but don't break the loop
373
- pass
377
+ logger.debug(f"poll_loop error for {iid}: {e}")
374
378
 
375
379
  await asyncio.sleep(poll_interval_s)
376
380
 
@@ -115,7 +115,7 @@ class E2ENetworksProvider(BaseProvider):
115
115
  "instance_type": self.GPU_PLAN_MAP.get(gpu_type, gpu_type.lower()),
116
116
  "gpu_type": gpu_type,
117
117
  "price_per_hour": info["price"],
118
- "region": region or "in-delhi-1",
118
+ "region": region or "in-mumbai-1",
119
119
  "available": True,
120
120
  "provider": "e2enetworks",
121
121
  "vcpus": info["vcpus"],
@@ -156,7 +156,7 @@ class E2ENetworksProvider(BaseProvider):
156
156
  # Convert INR to USD if price looks like INR (>10 per hour for GPU)
157
157
  price_usd = price_inr / 83.5 if price_inr > 10 else price_inr
158
158
 
159
- plan_region = plan.get("region", region or "in-delhi-1")
159
+ plan_region = plan.get("region", region or "in-mumbai-1")
160
160
  if region and plan_region != region:
161
161
  continue
162
162
 
@@ -195,7 +195,7 @@ class E2ENetworksProvider(BaseProvider):
195
195
  body: Dict[str, Any] = {
196
196
  "name": f"terradev-{gpu_type.lower().replace('_', '-')}-{datetime.now().strftime('%H%M%S')}",
197
197
  "plan": instance_type,
198
- "location": region or "in-delhi-1",
198
+ "location": region or "in-mumbai-1",
199
199
  "image": image,
200
200
  "gpu_count": gpu_count,
201
201
  }
@@ -208,7 +208,7 @@ class E2ENetworksProvider(BaseProvider):
208
208
  return {
209
209
  "instance_id": str(node.get("id", f"e2e-{datetime.now().strftime('%Y%m%d%H%M%S')}")),
210
210
  "instance_type": instance_type,
211
- "region": region or "in-delhi-1",
211
+ "region": region or "in-mumbai-1",
212
212
  "gpu_type": gpu_type,
213
213
  "status": node.get("status", "provisioning"),
214
214
  "provider": "e2enetworks",
@@ -135,7 +135,7 @@ class FluidStackProvider(BaseProvider):
135
135
  "instance_type": info["gpu_type"],
136
136
  "gpu_type": gpu_type,
137
137
  "price_per_hour": info["price"],
138
- "region": region or "us-east-1",
138
+ "region": region or "uk-london",
139
139
  "available": True,
140
140
  "provider": "fluidstack",
141
141
  "vcpus": info["vcpus"],
@@ -173,7 +173,7 @@ class FluidStackProvider(BaseProvider):
173
173
  "instance_type": config_gpu,
174
174
  "gpu_type": gpu_type,
175
175
  "price_per_hour": price,
176
- "region": plan.get("region", "us-east-1"),
176
+ "region": plan.get("region", "uk-london"),
177
177
  "available": plan.get("available", True),
178
178
  "provider": "fluidstack",
179
179
  "vcpus": config.get("vcpus", plan.get("vcpus", 16)),
@@ -15,6 +15,7 @@ Benefits:
15
15
 
16
16
  import time
17
17
  import logging
18
+ import asyncio
18
19
  from typing import Dict, List, Optional
19
20
  from collections import defaultdict
20
21
 
@@ -48,7 +49,7 @@ class ProviderRegistry:
48
49
  lambda: ProviderHealth(provider="")
49
50
  )
50
51
  self._spot_preemptions: Dict[str, List[float]] = defaultdict(list) # provider → timestamps
51
- self._lock = None # TODO: add threading lock if needed
52
+ self._lock: Optional[asyncio.Lock] = None
52
53
 
53
54
  def is_healthy(self, provider: str) -> bool:
54
55
  """
@@ -71,57 +72,72 @@ class ProviderRegistry:
71
72
 
72
73
  return True
73
74
 
74
- def record_success(self, provider: str, latency_ms: float):
75
+ async def record_success(self, provider: str, latency_ms: float):
75
76
  """
76
77
  Record a successful operation for a provider.
77
78
 
78
79
  Resets consecutive failure counter and updates latency metrics.
79
80
  """
80
- health = self._health[provider]
81
- health.provider = provider
82
- health.consecutive_failures = 0
83
- health.last_success_ts = time.time()
84
- health.total_provisions += 1
81
+ # Lazy-create lock to avoid Python 3.9 event loop binding bug
82
+ if self._lock is None:
83
+ self._lock = asyncio.Lock()
85
84
 
86
- # Exponential moving average for latency
87
- if health.avg_latency_ms == 0:
88
- health.avg_latency_ms = latency_ms
89
- else:
90
- health.avg_latency_ms = 0.9 * health.avg_latency_ms + 0.1 * latency_ms
85
+ async with self._lock:
86
+ health = self._health[provider]
87
+ health.provider = provider
88
+ health.consecutive_failures = 0
89
+ health.last_success_ts = time.time()
90
+ health.total_provisions += 1
91
91
 
92
- def record_failure(self, provider: str, error: str = ""):
92
+ # Exponential moving average for latency
93
+ if health.avg_latency_ms == 0:
94
+ health.avg_latency_ms = latency_ms
95
+ else:
96
+ health.avg_latency_ms = 0.9 * health.avg_latency_ms + 0.1 * latency_ms
97
+
98
+ async def record_failure(self, provider: str, error: str = ""):
93
99
  """
94
100
  Record a failed operation for a provider.
95
101
 
96
102
  Increments consecutive failure counter. Opens circuit breaker
97
103
  after FAILURE_THRESHOLD consecutive failures.
98
104
  """
99
- health = self._health[provider]
100
- health.provider = provider
101
- health.consecutive_failures += 1
102
- health.last_failure_ts = time.time()
103
- health.total_failures += 1
105
+ # Lazy-create lock to avoid Python 3.9 event loop binding bug
106
+ if self._lock is None:
107
+ self._lock = asyncio.Lock()
104
108
 
105
- if health.consecutive_failures >= self.FAILURE_THRESHOLD:
106
- logger.warning(
107
- f"Circuit breaker opened for provider: {provider} "
108
- f"(failures: {health.consecutive_failures}, error: {error})"
109
- )
109
+ async with self._lock:
110
+ health = self._health[provider]
111
+ health.provider = provider
112
+ health.consecutive_failures += 1
113
+ health.last_failure_ts = time.time()
114
+ health.total_failures += 1
110
115
 
111
- def record_preemption(self, provider: str, region: str = ""):
116
+ if health.consecutive_failures >= self.FAILURE_THRESHOLD:
117
+ logger.warning(
118
+ f"Circuit breaker opened for provider: {provider} "
119
+ f"(failures: {health.consecutive_failures}, error: {error})"
120
+ )
121
+
122
+ async def record_preemption(self, provider: str, region: str = ""):
112
123
  """
113
124
  Record a spot instance preemption for a provider.
114
125
 
115
126
  Used to calculate spot preemption rate for provider ranking.
116
127
  """
117
- now = time.time()
118
- self._spot_preemptions[provider].append(now)
119
-
120
- # Clean old preemptions (older than 24 hours)
121
- cutoff = now - 86400
122
- self._spot_preemptions[provider] = [
123
- ts for ts in self._spot_preemptions[provider] if ts > cutoff
124
- ]
128
+ # Lazy-create lock to avoid Python 3.9 event loop binding bug
129
+ if self._lock is None:
130
+ self._lock = asyncio.Lock()
131
+
132
+ async with self._lock:
133
+ now = time.time()
134
+ self._spot_preemptions[provider].append(now)
135
+
136
+ # Clean old preemptions (older than 24 hours)
137
+ cutoff = now - 86400
138
+ self._spot_preemptions[provider] = [
139
+ ts for ts in self._spot_preemptions[provider] if ts > cutoff
140
+ ]
125
141
 
126
142
  def get_spot_score(self, provider: str, region: str = "") -> float:
127
143
  """
@@ -142,7 +142,7 @@ class YottaLabsProvider(BaseProvider):
142
142
  "instance_type": yotta_gpu_type,
143
143
  "gpu_type": gpu_type,
144
144
  "price_per_hour": info["price"],
145
- "region": region or "us-east-1",
145
+ "region": region or "ap-south-1",
146
146
  "available": True,
147
147
  "provider": "yottalabs",
148
148
  "vcpus": info["vcpus"],
@@ -170,8 +170,8 @@ class YottaLabsProvider(BaseProvider):
170
170
  ):
171
171
  continue
172
172
 
173
- for r in entry.get("regions", [region or "us-east-1"]):
174
- target_region = r if isinstance(r, str) else r.get("region", "us-east-1")
173
+ for r in entry.get("regions", [region or "ap-south-1"]):
174
+ target_region = r if isinstance(r, str) else r.get("region", "ap-south-1")
175
175
  if region and target_region != region:
176
176
  continue
177
177
  price = entry.get("pricePerHour", entry.get("price_per_hour", 0))
@@ -213,7 +213,7 @@ class YottaLabsProvider(BaseProvider):
213
213
  "gpuType": yotta_gpu_type,
214
214
  "gpuCount": gpu_count,
215
215
  "containerVolumeInGb": volume_gb,
216
- "regions": [region] if region else ["us-east-1"],
216
+ "regions": [region] if region else ["ap-south-1"],
217
217
  "minSingleCardVcpu": 8,
218
218
  "minSingleCardRamInGb": 32,
219
219
  "environmentVars": [
@@ -229,7 +229,7 @@ class YottaLabsProvider(BaseProvider):
229
229
  return {
230
230
  "instance_id": str(pod.get("id", f"yl-{datetime.now().strftime('%Y%m%d%H%M%S')}")),
231
231
  "instance_type": yotta_gpu_type,
232
- "region": region or "us-east-1",
232
+ "region": region or "ap-south-1",
233
233
  "gpu_type": gpu_type,
234
234
  "status": pod.get("status", "Initialize"),
235
235
  "provider": "yottalabs",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: terradev-cli
3
- Version: 5.3.3
3
+ Version: 5.3.4
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.3
96
+ # Terradev CLI v5.3.4
97
97
 
98
98
  **An imperative command-line-interface for AI workload orchestration.**
99
99
 
@@ -105,9 +105,10 @@ pypi.org/project/terradev-cli/
105
105
 
106
106
  Terradev is a cross-cloud compute-provisioning CLI that compresses + stages datasets, provisions optimal instances + nodes, and deploys **3-5x faster** than sequential provisioning.
107
107
 
108
+
108
109
  **NOTES ON 5.3.3**
109
110
 
110
- Added **provider profile system** for intelligent quirk-aware routing across 23 cloud providers:
111
+ Added **provider registration and profiling system** for intelligent quirk-aware routing across 23 cloud providers, and registration for custom providers from .yaml import:
111
112
 
112
113
  - **ProviderProfile schema** (`providers/types.py`): Encodes provider-specific behaviors including API style (REST/GraphQL/JSON:API), authentication type (Bearer/Basic/HMAC/X-Api-Key), rate limits, spot instance support, egress costs, fallback routing, capacity checks, container image pinning, and spot interruption handling.
113
114
 
@@ -126,20 +127,6 @@ Added **provider profile system** for intelligent quirk-aware routing across 23
126
127
  terradev providers export-example -o ~/.terradev/custom_providers.yaml
127
128
  ```
128
129
 
129
- **NOTES ON 5.3.0**
130
-
131
- Added **transport-agnostic Prefill/Decode (P/D) disaggregation layer** and **multi-agent KV cache sharing planner**:
132
-
133
- - **Transport-agnostic P/D layer** (`core/pd_transport.py`): KV cache transfer is abstracted across NIXL/NVLink (600 GB/s), NIXL/InfiniBand (200–400 GB/s), CXL 3.0 (planned migration), RoCE RDMA, and TCP fallback. The `TransportSelector` probes at provision time and selects the best available transport. Documented NIXL→CXL migration path (Phase 1 co-existence → Phase 2 CXL-primary → Phase 3 fabric switch).
134
-
135
- - **Multi-agent KV sharing planner** (`core/kv_sharing.py`): Computes fleet VRAM requirements with KV cache sharing topologies (broadcast/star/chain/none). For 20 agents with 70% shared context (broadcast), VRAM reduces by 66% → 3× more agents per GPU, 3× fewer GPUs needed, ~$14/hr savings on H100 fleet. Includes `EvictionCostModel` to quantify re-prefill penalty when VRAM is under-provisioned.
136
-
137
- - **CLI integration**: `terradev provision` now supports `--agents`, `--context`, `--sharing-topology`, `--dtype` flags. When `--agents` is passed, the KV planner outputs the heterogeneous fleet spec with cost savings:
138
- ```bash
139
- terradev provision -g H100 --agents 20 --context 32k --model-name llama-70b
140
- terradev provision -g H100 --agents 20 --context 32k --sharing-topology broadcast --dry-run
141
- ```
142
-
143
130
  **NOTES ON 5.2.1**
144
131
 
145
132
  Added two new BYOAPI providers: **Yotta Labs (Shakti Cloud)** and **E2E Networks** — India's leading GPU clouds. Yotta Labs uses a pod-based compute model (similar to RunPod), and E2E Networks is a traditional VM-style hyperscaler that is NSE-listed and MeitY empanelled. Both are BYOAPI: your key, stored locally, never touches a Terradev server.
@@ -771,6 +758,5 @@ Apache 2.0.
771
758
 
772
759
  ## Support
773
760
 
774
- - **Documentation**: [Full User Guide](USER_GUIDE.md)
775
761
  - **Issues**: [GitHub Issues](https://github.com/theoddden/Terradev/issues)
776
762
  - **Discussions**: [GitHub Discussions](https://github.com/theoddden/Terradev/discussions)
@@ -5,7 +5,6 @@ LICENSE
5
5
  MANIFEST.in
6
6
  README.md
7
7
  pyproject.toml
8
- requirements.txt
9
8
  terraform.tfvars.example
10
9
  .github/workflows/action.yml
11
10
  .github/workflows/ci.yml
@@ -1,56 +0,0 @@
1
- # Terradev Python Dependencies
2
-
3
- # Cloud SDKs
4
- boto3==1.28.57
5
- botocore==1.31.57
6
- google-cloud-billing==1.10.0
7
- azure-mgmt-billing==6.0.0
8
- aiohttp==3.9.1
9
-
10
- # Data Processing
11
- pandas==2.0.3
12
- numpy==1.24.3
13
- requests==2.31.0
14
-
15
- # Machine Learning
16
- tensorflow==2.13.0
17
- torch==2.0.1
18
- scikit-learn==1.3.0
19
- keras==2.13.1
20
- transformers==4.35.2
21
- datasets==2.14.6
22
- tokenizers==0.14.1
23
-
24
- # Hugging Face Integration
25
- huggingface-hub==0.17.3
26
-
27
- # Data Visualization
28
- matplotlib==3.7.2
29
- seaborn==0.12.2
30
-
31
- # Data Feed Processing
32
- feedparser==6.0.10
33
- beautifulsoup4==4.12.2
34
- lxml==4.9.3
35
-
36
- # Monitoring and Logging
37
- psutil==5.9.5
38
- gpustat==1.1.1
39
- prometheus-client==0.17.1
40
-
41
- # Utilities
42
- click==8.1.7
43
- pyyaml==6.0.1
44
- jinja2==3.1.2
45
- python-dotenv==1.0.0
46
-
47
- # Development and Testing
48
- pytest==7.4.2
49
- pytest-cov==4.1.0
50
- black==23.7.0
51
- flake8==6.0.0
52
- mypy==1.5.1
53
-
54
- # Documentation
55
- sphinx==7.1.2
56
- sphinx-rtd-theme==1.3.0
File without changes