terradev-cli 5.0.0__tar.gz → 5.0.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 (505) hide show
  1. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/.github/workflows/ci.yml +16 -19
  2. terradev_cli-5.0.2/.github/workflows/release.yml +22 -0
  3. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/PKG-INFO +148 -35
  4. {terradev_cli-5.0.0/terradev_cli → terradev_cli-5.0.2}/README.md +138 -27
  5. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/pyproject.toml +10 -8
  6. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/Cargo.toml +2 -1
  7. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-artifact-verification/Cargo.toml +1 -1
  8. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-artifact-verification/src/lib.rs +18 -5
  9. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-artifact-verification/src/types.rs +4 -2
  10. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-artifact-verification/src/verifier.rs +14 -12
  11. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-authentication/Cargo.toml +2 -1
  12. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-authentication/src/encoding.rs +5 -1
  13. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-authentication/src/hmac.rs +7 -9
  14. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-authentication/src/lib.rs +6 -4
  15. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-cache-eviction/Cargo.toml +2 -1
  16. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-cache-eviction/src/cache.rs +9 -9
  17. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-cache-eviction/src/lib.rs +22 -16
  18. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-cache-eviction/src/types.rs +2 -2
  19. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-command-executor/Cargo.toml +1 -1
  20. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-command-executor/src/lib.rs +8 -6
  21. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-config-validator/Cargo.toml +1 -1
  22. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-config-validator/src/lib.rs +6 -2
  23. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-config-validator/src/types.rs +12 -4
  24. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-config-validator/src/validator.rs +9 -8
  25. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-connection-pool/Cargo.toml +1 -1
  26. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-connection-pool/src/lib.rs +8 -6
  27. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-connection-pool/src/pool.rs +25 -18
  28. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-connection-pool/src/types.rs +4 -2
  29. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-cost-calculator/Cargo.toml +1 -1
  30. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-cost-calculator/src/calculator.rs +23 -23
  31. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-cost-calculator/src/lib.rs +32 -13
  32. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-cost-calculator/src/types.rs +0 -1
  33. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-cost-scaler/Cargo.toml +1 -1
  34. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-cost-scaler/src/lib.rs +119 -43
  35. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-credential-vault/Cargo.toml +2 -1
  36. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-credential-vault/src/lib.rs +9 -6
  37. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-credential-vault/src/vault.rs +8 -9
  38. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-dag-executor/Cargo.toml +1 -1
  39. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-dag-executor/src/lib.rs +131 -95
  40. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-distributed-lock/Cargo.toml +1 -1
  41. terradev_cli-5.0.2/rust/terradev-distributed-lock/src/lib.rs +124 -0
  42. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-distributed-lock/src/lock.rs +27 -20
  43. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-distributed-lock/src/types.rs +4 -3
  44. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-egress-optimizer/Cargo.toml +1 -1
  45. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-egress-optimizer/src/graph.rs +34 -30
  46. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-egress-optimizer/src/lib.rs +16 -12
  47. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-egress-optimizer/src/types.rs +1 -1
  48. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-event-bus/Cargo.toml +3 -1
  49. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-event-bus/src/bus.rs +20 -17
  50. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-event-bus/src/lib.rs +32 -8
  51. terradev_cli-5.0.2/rust/terradev-event-bus/src/types.rs +37 -0
  52. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-governance/Cargo.toml +1 -1
  53. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-governance/src/lib.rs +48 -13
  54. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-gpu-discovery/Cargo.toml +4 -4
  55. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-gpu-discovery/src/lib.rs +31 -6
  56. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-gpu-topology/Cargo.toml +1 -1
  57. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-gpu-topology/src/lib.rs +21 -13
  58. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-gpu-topology/src/topology.rs +15 -18
  59. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-gpu-topology/src/types.rs +4 -4
  60. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-helm-generator/Cargo.toml +1 -1
  61. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-helm-generator/src/lib.rs +53 -34
  62. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-mcp-codec/Cargo.toml +1 -1
  63. terradev_cli-5.0.2/rust/terradev-mcp-codec/src/lib.rs +202 -0
  64. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-mcp-optimizer/Cargo.toml +1 -1
  65. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-mcp-optimizer/src/lib.rs +43 -9
  66. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-price-intelligence/Cargo.toml +1 -1
  67. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-price-intelligence/src/lib.rs +101 -38
  68. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-quota-manager/Cargo.toml +1 -1
  69. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-quota-manager/src/lib.rs +21 -11
  70. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-quota-manager/src/manager.rs +13 -13
  71. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-quota-manager/src/types.rs +6 -2
  72. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-resource-pool/Cargo.toml +1 -1
  73. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-resource-pool/src/lib.rs +24 -15
  74. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-resource-pool/src/pool.rs +25 -21
  75. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-resource-pool/src/types.rs +7 -4
  76. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-result-compressor/Cargo.toml +1 -1
  77. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-result-compressor/src/lib.rs +16 -7
  78. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-semantic-router/Cargo.toml +1 -1
  79. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-semantic-router/src/lib.rs +27 -14
  80. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-snapshot-manager/Cargo.toml +1 -1
  81. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-snapshot-manager/src/lib.rs +23 -13
  82. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-snapshot-manager/src/snapshot.rs +22 -21
  83. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-snapshot-manager/src/types.rs +2 -2
  84. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-state-machine/Cargo.toml +1 -1
  85. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-state-machine/src/lib.rs +62 -26
  86. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-state-machine/src/state.rs +112 -63
  87. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-state-machine/src/types.rs +5 -4
  88. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-telemetry/Cargo.toml +2 -1
  89. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-telemetry/src/lib.rs +14 -8
  90. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-telemetry/src/pipeline.rs +31 -15
  91. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-tool-registry/Cargo.toml +1 -1
  92. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-tool-registry/src/lib.rs +31 -14
  93. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-vram-estimator/Cargo.toml +1 -1
  94. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-vram-estimator/src/estimator.rs +16 -15
  95. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-vram-estimator/src/lib.rs +7 -3
  96. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-warm-pool/Cargo.toml +2 -2
  97. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-warm-pool/src/lib.rs +51 -32
  98. {terradev_cli-5.0.0 → terradev_cli-5.0.2/terradev_cli}/README.md +138 -27
  99. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/__init__.py +2 -2
  100. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/cli.py +1437 -1039
  101. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/helm_generator.py +1 -1
  102. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/inference_router.py +92 -103
  103. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/price_intelligence.py +1 -0
  104. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/quick_start.py +1 -1
  105. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/training_orchestrator.py +1 -1
  106. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/warm_pool_manager.py +31 -33
  107. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/mcp/server.py +8 -86
  108. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/kubernetes_enhanced.py +3 -21
  109. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/kubernetes_service.py +13 -4
  110. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/ollama_service.py +22 -16
  111. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/sglang_service.py +22 -11
  112. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/vllm_service.py +25 -25
  113. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/base_provider.py +25 -1
  114. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terradev_cli/cli.py +320 -320
  115. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli.egg-info/PKG-INFO +148 -35
  116. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli.egg-info/SOURCES.txt +0 -4
  117. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli.egg-info/requires.txt +10 -6
  118. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_vllm_features.py +2 -2
  119. terradev_cli-5.0.0/.github/workflows/release.yml +0 -50
  120. terradev_cli-5.0.0/rust/terradev-distributed-lock/src/lib.rs +0 -129
  121. terradev_cli-5.0.0/rust/terradev-event-bus/src/types.rs +0 -13
  122. terradev_cli-5.0.0/rust/terradev-mcp-codec/src/lib.rs +0 -123
  123. terradev_cli-5.0.0/terradev_cli/bandit-report.json +0 -388
  124. terradev_cli-5.0.0/terradev_cli/core/stripe_manager.py +0 -440
  125. terradev_cli-5.0.0/terradev_cli/core/tier_manager.py +0 -308
  126. terradev_cli-5.0.0/terradev_cli/safety-report.json +0 -18554
  127. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/.ebextensions/python.config +0 -0
  128. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/.env.example +0 -0
  129. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/.github/workflows/action.yml +0 -0
  130. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/.github/workflows/static.yml +0 -0
  131. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/BNF_GRAMMAR.md +0 -0
  132. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/CUCO_INTEGRATION_GUIDE.md +0 -0
  133. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/Dockerfile +0 -0
  134. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/LICENSE +0 -0
  135. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/MANIFEST.in +0 -0
  136. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/MCP_CI_SETUP.md +0 -0
  137. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/USER_GUIDE.md +0 -0
  138. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/activations/973dfe463ec85785f5f95af5ba3906eedb2d931c24e69824a89ea65dba4e813b.json +0 -0
  139. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/analysis/api-differences-comparison.tf +0 -0
  140. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/analysis/cost-structure-differences.tf +0 -0
  141. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/analysis/inference-arbitrage-pivot.tf +0 -0
  142. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/apis/free-apis-latency-arbitrage.tf +0 -0
  143. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/README.md +0 -0
  144. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/helm/values-glm5.yaml +0 -0
  145. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/k8s/hpa.yaml +0 -0
  146. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/k8s/model-cache-pvc.yaml +0 -0
  147. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/k8s/namespace.yaml +0 -0
  148. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/k8s/pdb.yaml +0 -0
  149. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/k8s/service.yaml +0 -0
  150. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/k8s/sglang-deployment.yaml +0 -0
  151. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/k8s/vllm-deployment.yaml +0 -0
  152. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/task.yaml +0 -0
  153. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/terraform/main.tf +0 -0
  154. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/terraform/outputs.tf +0 -0
  155. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/glm-5/terraform/variables.tf +0 -0
  156. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/llmd-template/README.md +0 -0
  157. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/llmd-template/helm/values-llmd.yaml +0 -0
  158. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/llmd-template/k8s/gateway.yaml +0 -0
  159. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/llmd-template/k8s/leaderworkerset.yaml +0 -0
  160. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/llmd-template/k8s/llminferenceservice.yaml +0 -0
  161. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/llmd-template/task.yaml +0 -0
  162. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/README.md +0 -0
  163. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/helm/values-moe.yaml +0 -0
  164. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/k8s/deployment.yaml +0 -0
  165. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/k8s/hpa.yaml +0 -0
  166. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/k8s/model-cache-pvc.yaml +0 -0
  167. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/k8s/namespace.yaml +0 -0
  168. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/k8s/pdb.yaml +0 -0
  169. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/k8s/service.yaml +0 -0
  170. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/task.yaml +0 -0
  171. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/terraform/main.tf +0 -0
  172. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/terraform/outputs.tf +0 -0
  173. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/moe-template/terraform/variables.tf +0 -0
  174. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/rag-template/README.md +0 -0
  175. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/rag-template/helm/values-rag.yaml +0 -0
  176. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/rag-template/k8s/deployment.yaml +0 -0
  177. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/clusters/rag-template/terraform/main.tf +0 -0
  178. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/demo/RECORDING_GUIDE.md +0 -0
  179. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/demo/generate_gif.py +0 -0
  180. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/demo/terradev-demo.gif +0 -0
  181. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/ADVANCED_FINANCIAL_INNOVATIONS.md +0 -0
  182. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/API_DOCUMENTATION.md +0 -0
  183. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/BingSiteAuth.xml +0 -0
  184. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/FINOPS_ATTRIBUTION_SYSTEM.md +0 -0
  185. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/MIGRATE_EVAL_IMPLEMENTATION.md +0 -0
  186. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/PHASE1_SSO_IMPLEMENTATION_SUMMARY.md +0 -0
  187. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/SGLANG_OPTIMIZATION_IMPLEMENTATION_COMPLETE.md +0 -0
  188. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/USER_GUIDE.md +0 -0
  189. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/VLLM_AUTO_OPTIMIZATION_GUIDE.md +0 -0
  190. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/VLLM_OPTIMIZATION_GUIDE.md +0 -0
  191. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/VLLM_OPTIMIZATION_SUMMARY.md +0 -0
  192. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/architecture.md +0 -0
  193. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/index.html +0 -0
  194. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/robots.txt +0 -0
  195. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/sitemap.xml +0 -0
  196. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/docs/test_spot_provision.md +0 -0
  197. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/examples/aws_ssm_starter.py +0 -0
  198. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/examples/config.example.json +0 -0
  199. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/examples/demo_k8s_config.yaml +0 -0
  200. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/examples/direct_aws_starter.py +0 -0
  201. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/examples/ec2_user_data_starter.py +0 -0
  202. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/examples/example-pipeline.yaml +0 -0
  203. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/examples/kubernetes_training_deployment.yaml +0 -0
  204. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/examples/simple_ssm_starter.py +0 -0
  205. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/examples/ssh_server_starter.py +0 -0
  206. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/examples/start_aws_servers.py +0 -0
  207. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/helm/terradev/Chart.yaml +0 -0
  208. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/helm/terradev/templates/_helpers.tpl +0 -0
  209. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/helm/terradev/templates/deployment.yaml +0 -0
  210. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/helm/terradev/values.yaml +0 -0
  211. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/infrastructure/bucket-policy.json +0 -0
  212. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/infrastructure/grafana_training_dashboard.json +0 -0
  213. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/infrastructure/kubernetes/microservices.yaml +0 -0
  214. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/infrastructure/terraform/main.tf +0 -0
  215. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/infrastructure/terraform/parallelism.tf +0 -0
  216. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/integrations/cli-tool.tf +0 -0
  217. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/integrations/cloud-management-widgets.tf +0 -0
  218. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/integrations/cloud-provider-apis.py +0 -0
  219. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/integrations/critical-widgets.tf +0 -0
  220. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/integrations/devops-cicd-widgets.tf +0 -0
  221. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/integrations/devops-essential-tools.tf +0 -0
  222. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/integrations/docker-integration.tf +0 -0
  223. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/integrations/kubernetes-operator.tf +0 -0
  224. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/integrations/mlflow-integration.tf +0 -0
  225. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/modules/datadog/README.md +0 -0
  226. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/modules/datadog/dashboard.tf +0 -0
  227. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/modules/datadog/monitors.tf +0 -0
  228. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/modules/datadog/outputs.tf +0 -0
  229. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/modules/datadog/provider.tf +0 -0
  230. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/modules/datadog/variables.tf +0 -0
  231. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/modules/datadog/versions.tf +0 -0
  232. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/modules/prometheus_training_config.yml +0 -0
  233. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/requirements.txt +0 -0
  234. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/INTEGRATION_GUIDE.md +0 -0
  235. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/PERFORMANCE_OPTIMIZATIONS.md +0 -0
  236. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/README.md +0 -0
  237. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-authentication/src/types.rs +0 -0
  238. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-credential-vault/src/types.rs +0 -0
  239. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-telemetry/src/types.rs +1 -1
  240. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/rust/terradev-vram-estimator/src/types.rs +0 -0
  241. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/action.py +0 -0
  242. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/check_logs_fix.py +0 -0
  243. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/debug_comparison.py +0 -0
  244. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/debug_mla.py +0 -0
  245. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/debug_streaming.py +0 -0
  246. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/deployment/deploy_correct_pricing.py +0 -0
  247. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/deployment/deploy_enhanced_server.py +0 -0
  248. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/deployment/deploy_exact_servers.py +0 -0
  249. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/deployment/deploy_simple_enhanced.py +0 -0
  250. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/deployment/deploy_telemetry_aws.py +0 -0
  251. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/deployment/deploy_to_aws.py +0 -0
  252. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/figure_calculation_breakdown.py +0 -0
  253. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/fix_server_ports.py +0 -0
  254. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/gpu-check.sh +0 -0
  255. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/scripts/server_manager.py +0 -0
  256. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/setup/Lambda Cloud API spec 1.8.3.json +0 -0
  257. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/setup/account-setup-guide.tf +0 -0
  258. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/setup/docker-compose.yml +0 -0
  259. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/setup/nginx.conf +0 -0
  260. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/setup/render.yaml +0 -0
  261. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/setup/setup.sh +0 -0
  262. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/setup.cfg +0 -0
  263. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/CHANGELOG.md +0 -0
  264. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/COMPLETE_COMMAND_REFERENCE.md +0 -0
  265. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/COMPLETE_INTEGRATION_GUIDE.md +0 -0
  266. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/FULL_SOLUTION_STACK_MARCH_2025.md +0 -0
  267. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/IMPLEMENTATION_SUMMARY.md +0 -0
  268. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/MAKING_SPOT_WORK_FOR_STATEFUL_WORKLOADS.md +0 -0
  269. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/SGLANG_COMMAND_GUIDE.md +0 -0
  270. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/TERRADEV_STACK_CHART.md +0 -0
  271. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/__main__.py +0 -0
  272. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/cli_hf_spaces.py +0 -0
  273. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/cli_karpenter.py +0 -0
  274. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/__init__.py +0 -0
  275. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/async_config.py +0 -0
  276. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/auth.py +0 -0
  277. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/auto_lineage.py +0 -0
  278. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/cache_manager.py +0 -0
  279. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/checkpoint_manager.py +0 -0
  280. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/command_executor.py +0 -0
  281. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/config.py +0 -0
  282. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/config_validator.py +0 -0
  283. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/cost_scaler.py +0 -0
  284. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/cost_tracker.py +0 -0
  285. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/credential_vault.py +0 -0
  286. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/cuda_graph_integrator.py +0 -0
  287. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/dag_executor.py +0 -0
  288. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/data_governance.py +0 -0
  289. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/dataset_stager.py +0 -0
  290. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/deployment_router.py +0 -0
  291. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/distributed_lock.py +0 -0
  292. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/drift_detector.py +0 -0
  293. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/egress_cost_monitor.py +0 -0
  294. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/egress_optimizer.py +0 -0
  295. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/evaluation_orchestrator.py +0 -0
  296. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/event_system.py +0 -0
  297. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/gitops_manager.py +0 -0
  298. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/gpu_discovery.py +0 -0
  299. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/gpu_topology.py +0 -0
  300. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/hf_cli_integration.py +0 -0
  301. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/hf_smart_templates.py +0 -0
  302. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/hf_spaces.py +0 -0
  303. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/inference_spot_manager.py +0 -0
  304. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/job_state_manager.py +0 -0
  305. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/kv_cache_checkpoint_manager.py +0 -0
  306. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/kv_cache_checkpoint_tests.py +0 -0
  307. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/manifest_cache.py +0 -0
  308. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/manifest_example.json +0 -0
  309. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/mig_manager.py +0 -0
  310. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/migration_orchestrator.py +0 -0
  311. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/mla_vram_estimator.py +0 -0
  312. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/mla_vram_tests.py +0 -0
  313. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/model_orchestrator.py +0 -0
  314. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/oidc_provider.py +0 -0
  315. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/optimization_config.py +0 -0
  316. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/parallel_provisioner.py +0 -0
  317. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/pipeline_schema.py +0 -0
  318. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/preflight_validator.py +0 -0
  319. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/price_discovery.py +0 -0
  320. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/public_ip_billing_tracker.py +0 -0
  321. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/quota_manager.py +0 -0
  322. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/rate_limiter.py +0 -0
  323. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/rust_telemetry.py +0 -0
  324. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/semantic_router.py +0 -0
  325. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/semantic_signals/__init__.py +0 -0
  326. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/semantic_signals/base_signal.py +0 -0
  327. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/semantic_signals/complexity_signal.py +0 -0
  328. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/semantic_signals/domain_signal.py +0 -0
  329. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/semantic_signals/keyword_signal.py +0 -0
  330. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/semantic_signals/language_signal.py +0 -0
  331. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/semantic_signals/modality_signal.py +0 -0
  332. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/semantic_signals/orchestrator.py +0 -0
  333. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/semantic_signals/routing_policy.yaml +0 -0
  334. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/semantic_signals/safety_signal.py +0 -0
  335. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/session_manager.py +0 -0
  336. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/ssh_key_manager.py +0 -0
  337. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/telemetry.py +0 -0
  338. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/terradev_engine.py +0 -0
  339. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/trace_viewer.py +0 -0
  340. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/training_monitor.py +0 -0
  341. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/user_manager.py +0 -0
  342. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/weight_streaming_benchmarks.py +0 -0
  343. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/core/weight_streaming_manager.py +0 -0
  344. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/cost_optimizer.py +0 -0
  345. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/credential_prompt.py +0 -0
  346. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/demo.py +0 -0
  347. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/entry_point.py +0 -0
  348. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/integrations/Terradev LOGO BLACK.png +0 -0
  349. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/integrations/Terradev LOGO WHITEW.png +0 -0
  350. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/integrations/__init__.py +0 -0
  351. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/integrations/databricks_integration.py +0 -0
  352. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/integrations/datadog_integration.py +0 -0
  353. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/integrations/helicone_integration.py +0 -0
  354. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/integrations/prometheus_integration.py +0 -0
  355. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/integrations/wandb_integration.py +0 -0
  356. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/k8s/terraform_wrapper.py +0 -0
  357. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/kubernetes/inferx-cost-optimized.yaml +0 -0
  358. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/kubernetes/inferx-infrastructure.yaml +0 -0
  359. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/kubernetes/inferx-models.yaml +0 -0
  360. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/kubernetes/inferx-platform.yaml +0 -0
  361. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/kubernetes/inferx_setup.py +0 -0
  362. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/mcp/__init__.py +0 -0
  363. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/mcp/server.py.bak3 +0 -0
  364. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/__init__.py +0 -0
  365. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/agentic_serving.py +0 -0
  366. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/drift_retrain_service.py +0 -0
  367. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/dvc_service.py +0 -0
  368. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/guardrails_service.py +0 -0
  369. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/huggingface_service.py +0 -0
  370. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/kserve_service.py +0 -0
  371. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/langchain_service.py +0 -0
  372. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/langfuse_service.py +0 -0
  373. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/langgraph_service.py +0 -0
  374. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/lmcache_service.py +0 -0
  375. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/mlflow_service.py +0 -0
  376. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/model_router.py +0 -0
  377. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/phoenix_service.py +0 -0
  378. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/qdrant_service.py +0 -0
  379. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/ray_enhanced.py +0 -0
  380. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/ray_service.py +0 -0
  381. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/ml_services/wandb_enhanced.py +0 -0
  382. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/optimization/__init__.py +0 -0
  383. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/optimization/auto_optimizer.py +0 -0
  384. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/optimization/cuco_optimizer.py +0 -0
  385. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/LATITUDE_PROVIDER.md +0 -0
  386. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/__init__.py +0 -0
  387. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/alibaba_provider.py +0 -0
  388. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/aws_provider.py +0 -0
  389. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/azure_provider.py +0 -0
  390. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/baseten_provider.py +0 -0
  391. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/coreweave_provider.py +0 -0
  392. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/crusoe_provider.py +0 -0
  393. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/demo_mode.py +0 -0
  394. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/digitalocean_provider.py +0 -0
  395. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/fluidstack_provider.py +0 -0
  396. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/gcp_provider.py +0 -0
  397. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/hetzner_provider.py +0 -0
  398. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/huggingface_provider.py +0 -0
  399. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/hyperstack_provider.py +0 -0
  400. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/inferx_provider.py +0 -0
  401. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/lambda_labs_provider.py +0 -0
  402. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/latitude_provider.py +0 -0
  403. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/oracle_provider.py +0 -0
  404. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/ovhcloud_provider.py +0 -0
  405. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/provider_factory.py +0 -0
  406. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/real_pricing.py +0 -0
  407. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/runpod_provider.py +0 -0
  408. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/siliconflow_provider.py +0 -0
  409. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/tensordock_provider.py +0 -0
  410. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/providers/vastai_provider.py +0 -0
  411. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/requirements.txt +0 -0
  412. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/requirements_minimal.txt +0 -0
  413. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terradev_cli/__init__.py +0 -0
  414. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terradev_cli/credential_prompt.py +0 -0
  415. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/main.tf +0 -0
  416. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/__init__.py +0 -0
  417. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-aws/bootstrap.sh +0 -0
  418. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-aws/main.tf +0 -0
  419. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-aws/outputs.tf +0 -0
  420. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-aws/variables.tf +0 -0
  421. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-aws/versions.tf +0 -0
  422. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-hyperstack/bootstrap.sh +0 -0
  423. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-hyperstack/main.tf +0 -0
  424. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-hyperstack/outputs.tf +0 -0
  425. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-hyperstack/variables.tf +0 -0
  426. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-hyperstack/versions.tf +0 -0
  427. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-lambda/bootstrap.sh +0 -0
  428. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-lambda/main.tf +0 -0
  429. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-lambda/outputs.tf +0 -0
  430. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-lambda/variables.tf +0 -0
  431. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-lambda/versions.tf +0 -0
  432. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-vastai/bootstrap.sh +0 -0
  433. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-vastai/main.tf +0 -0
  434. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-vastai/outputs.tf +0 -0
  435. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-vastai/variables.tf +0 -0
  436. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/gpu-node-vastai/versions.tf +0 -0
  437. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/k8s-control-plane/join-script.tpl +0 -0
  438. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/k8s-control-plane/kubeconfig.tpl +0 -0
  439. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/k8s-control-plane/main.tf +0 -0
  440. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/k8s-control-plane/outputs.tf +0 -0
  441. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/k8s-control-plane/variables.tf +0 -0
  442. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/k8s-control-plane/versions.tf +0 -0
  443. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/networking/main.tf +0 -0
  444. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/networking/outputs.tf +0 -0
  445. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/networking/variables.tf +0 -0
  446. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/modules/networking/versions.tf +0 -0
  447. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/outputs.tf +0 -0
  448. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/price-optimizer/optimal-allocation.py +0 -0
  449. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/providers.tf +0 -0
  450. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/terraform/variables.tf +0 -0
  451. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/test_summary.py +0 -0
  452. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/utils/__init__.py +0 -0
  453. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli/utils/formatters.py +0 -0
  454. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli.egg-info/dependency_links.txt +0 -0
  455. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli.egg-info/entry_points.txt +0 -0
  456. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terradev_cli.egg-info/top_level.txt +0 -0
  457. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform.tfvars.example +0 -0
  458. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_optimization/backend.tf +0 -0
  459. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_optimization/error_handling.py +0 -0
  460. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_optimization/parallel_provisioning.tf +0 -0
  461. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_optimization/storage_choice_matrix.py +0 -0
  462. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_optimization/test_error_handler.py +0 -0
  463. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_optimization/versions.tf +0 -0
  464. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_transparency/audit_demo/trail_3caed73ad5bf.json +0 -0
  465. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_transparency/audit_trail.py +0 -0
  466. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_transparency/audit_trails.json +0 -0
  467. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_transparency/decision_engine.py +0 -0
  468. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_transparency/decision_logs.json +0 -0
  469. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_transparency/operations.json +0 -0
  470. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_transparency/terraform_manager.py +0 -0
  471. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_transparency/terraform_plans.json +0 -0
  472. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_transparency/transparency_demo.py +0 -0
  473. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/terraform_transparency/transparency_report.json +0 -0
  474. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/INTEGRATION_STRATEGY.md +0 -0
  475. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/Makefile +0 -0
  476. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/ci_pipeline.py +0 -0
  477. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/conftest.py +0 -0
  478. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/root_tests/test_cli_ux_battle.py +0 -0
  479. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/root_tests/test_cli_ux_battle_fixed.py +0 -0
  480. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/root_tests/test_cli_ux_final.py +0 -0
  481. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/root_tests/test_final_integration.py +0 -0
  482. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/root_tests/test_integrated_optimization.py +0 -0
  483. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/root_tests/test_p10_production_failover.py +0 -0
  484. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/root_tests/test_sso_phase1.py +0 -0
  485. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/root_tests/test_vllm_optimization.py +0 -0
  486. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/simple_test.py +0 -0
  487. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_ai_integrations.py +0 -0
  488. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_checkpoint_manager.py +0 -0
  489. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_cli_smoke.py +0 -0
  490. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_dag_executor.py +0 -0
  491. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_flashoptim.py +0 -0
  492. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_integration.py +0 -0
  493. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_job_state_manager.py +0 -0
  494. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_k8s_regression.py +0 -0
  495. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_latitude_provider.py +0 -0
  496. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_major_providers.py +0 -0
  497. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_mcp_handlers.py +0 -0
  498. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_new_providers.py +0 -0
  499. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_provider_conformance.py +0 -0
  500. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_providers.py +0 -0
  501. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_semantic_router.py +0 -0
  502. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_sglang_optimization.py +0 -0
  503. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_ssh_key_manager.py +0 -0
  504. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_training_monitor.py +0 -0
  505. {terradev_cli-5.0.0 → terradev_cli-5.0.2}/tests/test_training_orchestrator.py +0 -0
@@ -41,33 +41,24 @@ jobs:
41
41
 
42
42
  - name: Run cargo test
43
43
  run: |
44
- if [ -f "float-protocols/Cargo.toml" ]; then
45
- cd float-protocols
46
- cargo test --verbose
47
- elif [ -f "dxfeed-rust-api/Cargo.toml" ]; then
48
- cd dxfeed-rust-api
49
- cargo test --verbose
44
+ if [ -f "rust/Cargo.toml" ]; then
45
+ cd rust
46
+ cargo test --workspace --verbose
50
47
  else
51
- echo "No Rust Cargo.toml found, skipping Rust tests"
48
+ echo "No rust/ workspace found, skipping Rust tests"
52
49
  fi
53
50
 
54
51
  - name: Run cargo clippy
55
52
  run: |
56
- if [ -f "float-protocols/Cargo.toml" ]; then
57
- cd float-protocols
58
- cargo clippy -- -D warnings
59
- elif [ -f "dxfeed-rust-api/Cargo.toml" ]; then
60
- cd dxfeed-rust-api
61
- cargo clippy -- -D warnings
53
+ if [ -f "rust/Cargo.toml" ]; then
54
+ cd rust
55
+ cargo clippy --workspace -- -D warnings
62
56
  fi
63
57
 
64
58
  - name: Run cargo fmt
65
59
  run: |
66
- if [ -f "float-protocols/Cargo.toml" ]; then
67
- cd float-protocols
68
- cargo fmt --all -- --check
69
- elif [ -f "dxfeed-rust-api/Cargo.toml" ]; then
70
- cd dxfeed-rust-api
60
+ if [ -f "rust/Cargo.toml" ]; then
61
+ cd rust
71
62
  cargo fmt --all -- --check
72
63
  fi
73
64
 
@@ -157,10 +148,16 @@ jobs:
157
148
  with:
158
149
  python-version: '3.11'
159
150
 
151
+ - name: Install package for scan
152
+ run: pip install -e ".[dev]" 2>/dev/null || pip install -e .
153
+
160
154
  - name: Install + scan
161
155
  run: |
162
156
  pip install bandit safety
163
- bandit -r terradev_cli/ -f json -o bandit-report.json -ll || true
157
+ # Scan the full package tree; -ll = medium+high only; fail on high severity
158
+ bandit -r terradev_cli/ -f json -o bandit-report.json -lll || true
159
+ # Print a summary to the job log for visibility
160
+ bandit -r terradev_cli/ -lll --exit-zero
164
161
  safety check --json --output safety-report.json || true
165
162
 
166
163
  - uses: actions/upload-artifact@v4
@@ -0,0 +1,22 @@
1
+ name: Release to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ permissions:
9
+ contents: write
10
+ releases: write
11
+
12
+ jobs:
13
+ release:
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - name: Checkout code
18
+ uses: actions/checkout@v4
19
+
20
+ - name: Create GitHub Release
21
+ run: |
22
+ gh release create ${{ github.ref_name }} --generate-notes
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: terradev-cli
3
- Version: 5.0.0
4
- Summary: NUMA-aware GPU provisioning and orchestration for stateless MoE workloads of all sizes
3
+ Version: 5.0.2
4
+ Summary: Open Source BYOAPI Multi-Cloud GPU Infrastructure Platform
5
5
  Author-email: Terradev Team <team@terradev.com>
6
6
  Maintainer-email: Terradev Team <team@terradev.com>
7
7
  License: Apache-2.0
@@ -34,16 +34,10 @@ Requires-Dist: aiohttp>=3.9.0
34
34
  Requires-Dist: pyyaml>=6.0
35
35
  Requires-Dist: cryptography>=41.0.0
36
36
  Requires-Dist: requests>=2.31.0
37
- Requires-Dist: gradio>=4.0.0
38
- Requires-Dist: streamlit>=1.28.0
39
- Requires-Dist: transformers>=4.0.0
40
- Requires-Dist: torch>=2.0.0
41
- Requires-Dist: sentence-transformers>=2.0.0
42
37
  Requires-Dist: plotly>=5.0.0
43
38
  Requires-Dist: pandas>=1.0.0
44
39
  Requires-Dist: numpy>=1.0.0
45
40
  Requires-Dist: huggingface-hub>=0.19.0
46
- Requires-Dist: stripe>=7.0.0
47
41
  Provides-Extra: aws
48
42
  Requires-Dist: boto3>=1.34.0; extra == "aws"
49
43
  Provides-Extra: gcp
@@ -54,6 +48,14 @@ Requires-Dist: azure-identity>=1.12.0; extra == "azure"
54
48
  Provides-Extra: lmcache
55
49
  Requires-Dist: lmcache>=0.1; extra == "lmcache"
56
50
  Requires-Dist: redis>=5.0.0; extra == "lmcache"
51
+ Provides-Extra: ml
52
+ Requires-Dist: torch>=2.0.0; extra == "ml"
53
+ Requires-Dist: transformers>=4.0.0; extra == "ml"
54
+ Requires-Dist: sentence-transformers>=2.0.0; extra == "ml"
55
+ Requires-Dist: gradio>=4.0.0; extra == "ml"
56
+ Requires-Dist: streamlit>=1.28.0; extra == "ml"
57
+ Provides-Extra: billing
58
+ Requires-Dist: stripe>=7.0.0; extra == "billing"
57
59
  Provides-Extra: all
58
60
  Requires-Dist: boto3>=1.34.0; extra == "all"
59
61
  Requires-Dist: google-cloud-compute>=1.8.0; extra == "all"
@@ -90,7 +92,7 @@ Requires-Dist: redis>=5.0.0; extra == "enterprise"
90
92
  Requires-Dist: PyJWT>=2.8.0; extra == "enterprise"
91
93
  Dynamic: license-file
92
94
 
93
- # Terradev CLI v5.0.0
95
+ # Terradev CLI v5.0.2
94
96
 
95
97
  **Open Source BYOAPI Multi-Cloud GPU Infrastructure Platform**
96
98
 
@@ -102,12 +104,34 @@ Terradev is a cross-cloud compute-provisioning CLI that compresses + stages data
102
104
 
103
105
  **NOTES ON 5.0.0**
104
106
 
105
- We removed the paywall, open-sourced Terradev, and added Rust DAG accelerators for safe agent execution, and snappy execution...
107
+ We removed the paywall, open-sourced Terradev, and added Rust accelerators for safe and snappy delivery...
106
108
 
107
- With the Rust DAG orchestrator, the execution graph enforces correct sequencing and idempotency at the runtime level. The agent can issue commands freely... the orchestrator ensures they're safe to execute.
109
+ With the Rust DAG orchestrator, the execution graph enforces correct sequencing and idempotency at the runtime level. You or the agent can issue commands freely... the orchestrator ensures they're safe to execute.
108
110
 
109
- 192 MCP sub-tools require heavy context. The Rust MCP orchestrator processes tool calls with minimal overhead: deserializing, routing, executing, and responding faster than pure-Python-based MCP servers by an order of magnitude. For an agent running a complex provisioning workflow across 21+ cloud providers, that compounds across every tool call in the chain.
111
+ 104 tools and sub-tools require heavy context. The Rust MCP orchestrator processes tool calls with minimal overhead: deserializing, routing, executing, and responding faster than pure-Python-based MCP servers by an order of magnitude. For an agent running a complex provisioning workflow across 21+ cloud providers, that compounds across every tool call in the chain.
110
112
 
113
+ ## BYOAPI Configuration
114
+
115
+ Your API keys are stored locally at ~/.terradev/credentials.json and never sent to Terradev servers.
116
+
117
+ ```bash
118
+ # Configure multiple providers
119
+ terradev configure --provider runpod
120
+ terradev configure --provider vastai
121
+ terradev configure --provider aws
122
+ terradev configure --provider gcp
123
+ ```
124
+
125
+ ## Performance
126
+
127
+ - **2-8x throughput improvements** with vLLM optimization
128
+ - **30-50% bandwidth penalty eliminated** with NUMA topology
129
+ - **2-5x CUDA Graph speedup** with optimal topology
130
+ - **Up to 90% cost savings** with automatic provider switching
131
+ - **<2 minute spot recovery** with KV cache checkpointing
132
+ - **3.6x faster cold starts** with weight streaming
133
+ - **57% cost savings** with MLA-aware VRAM estimation
134
+
111
135
  ## Complete Tutorial
112
136
 
113
137
  ### Step 1: Install Terradev
@@ -126,7 +150,7 @@ terradev --help
126
150
  ```
127
151
 
128
152
  ### Step 2: Configure Your First Cloud Provider
129
- Terradev supports 19 GPU cloud providers. Start with one, RunPod is the fastest to set up:
153
+ Terradev supports 21+ GPU cloud providers. Start with one, RunPod is the fastest to set up:
130
154
 
131
155
  ```bash
132
156
  terradev setup runpod --quick
@@ -561,6 +585,117 @@ echo "3. Test failover: terradev inferx failover --endpoint burst-llm-api --test
561
585
  echo "4. Update adapters: terradev lora update -n customer-enterprise-a -p ./new-adapters/"
562
586
  ```
563
587
 
588
+ ## Bare Metal GPU Access with IPMI Management (Latitude.sh)
589
+
590
+ Most GPU clouds give you a virtual machine. You get a slice of hardware, shared kernel paths, and a hypervisor layer between your workload and the GPU. For most ML workloads this is fine. For compliance-sensitive deployments — HIPAA, FedRAMP, financial services, defense contractors — it isn't. Virtualization introduces attestation gaps that auditors reject.
591
+
592
+ Latitude.sh is the only provider in Terradev's fleet that offers both **bare metal** and **virtual machine** GPU instances from the same API. Bare metal gives you the physical server — dedicated hardware, no virtualization overhead, and IPMI out-of-band management.
593
+
594
+ ```bash
595
+ # See both bare metal and VM options side by side
596
+ terradev quote -g H100 --provider latitude
597
+
598
+ # Provision dedicated bare metal with IPMI access
599
+ terradev provision --provider latitude --gpu H100 --instance-type bare-metal
600
+
601
+ # Provision a VM (faster spin-up, slightly lower cost)
602
+ terradev provision --provider latitude --gpu H100 --instance-type vm
603
+ ```
604
+
605
+ ### IPMI: Why It Matters for Enterprise
606
+
607
+ IPMI (Intelligent Platform Management Interface) gives you out-of-band server management independent of the OS and GPU stack. If a training job deadlocks the kernel, you don't wait for a cloud provider ticket — you power-cycle via IPMI directly. Security teams can verify hardware attestation. Compliance frameworks that require dedicated hardware and physical access controls are satisfied.
608
+
609
+ ```bash
610
+ # Instance status includes IPMI access endpoint when bare metal
611
+ terradev status --live --provider latitude
612
+
613
+ # Output includes:
614
+ # ipmi_access: true
615
+ # ipmi_endpoint: 10.x.x.x
616
+ # isolation: bare_metal
617
+ ```
618
+ ---
619
+
620
+ ## Local GPU Discovery and Hybrid Compute Pools
621
+
622
+ Every other GPU orchestration platform assumes you're renting compute. Terradev doesn't.
623
+
624
+ If you have a GPU in your local machine — a gaming rig, a workstation, a university compute node you have SSH access to — Terradev can discover it, register it into your compute pool, and incorporate it into provisioning decisions alongside cloud providers.
625
+
626
+ ```bash
627
+ # Scan local machine for GPUs
628
+ terradev local scan
629
+
630
+ # Output:
631
+ # Found 1 local GPU:
632
+ # [0] NVIDIA RTX 4090 24GB Driver 545.29 Util: 3% Temp: 42C
633
+ #
634
+ # Register in pool? [y/N]:
635
+
636
+ # Register local GPU into your pool
637
+ terradev local register --name "workstation-4090"
638
+
639
+ # Scan a remote machine you have SSH access to
640
+ terradev local scan --host 192.168.1.50 --user ubuntu --key ~/.ssh/id_rsa
641
+
642
+ # View your full compute pool (local + cloud)
643
+ terradev local pool
644
+ ```
645
+
646
+ Pool output:
647
+ ```
648
+ COMPUTE POOL (4 resources)
649
+ workstation-4090 RTX 4090 24GB local $0.00/hr Free
650
+ runpod-h100-001 H100 80GB runpod $2.49/hr Running
651
+ vastai-a100-002 A100 40GB vastai $1.82/hr Running
652
+ lambda-a10g-003 A10G 24GB lambda_labs $0.60/hr Idle
653
+ ```
654
+
655
+ ### Why This Matters
656
+
657
+ The `terradev quote` command normally shows cloud provider pricing. With local GPUs registered, the pool includes your own hardware — priced at $0/hr. For a university researcher with a 3090 workstation running overnight jobs, or a startup with a rack of 4090s before they've moved to cloud: Terradev routes workloads to the cheapest available compute, and $0/hr always wins.
658
+
659
+ ```bash
660
+ # Get quotes including local pool
661
+ terradev quote -g RTX4090 --include-local
662
+
663
+ # Output:
664
+ # GPU PROVIDER $/HR AVAILABLE
665
+ # RTX 4090 local (workstation-4090) $0.00 Yes
666
+ # RTX 4090 vastai $0.34 Yes
667
+ # RTX 4090 runpod $0.39 Yes
668
+
669
+ # Provision to cheapest available — prefers local automatically
670
+ terradev provision -g RTX4090 --prefer-local
671
+
672
+ # Launch training on local GPU with cloud overflow
673
+ terradev train --script train.py --pool workstation-4090 --overflow-to-cloud
674
+ ```
675
+
676
+ ### How Discovery Works
677
+
678
+ The local scanner uses direct NVML bindings (Rust backend, 5–10x faster than `nvidia-smi` parsing) to introspect every GPU on the target machine:
679
+
680
+ - GPU model, memory, PCIe bus ID, NUMA affinity
681
+ - Current utilization, memory usage, temperature, clock speeds
682
+ - Driver version, CUDA version, compute capability
683
+ - Multi-GPU topology (NVLink, PCIe switch topology)
684
+
685
+ Falls back to `nvidia-smi` parsing automatically if the Rust NVML extension isn't available.
686
+
687
+ ```bash
688
+ # Detailed hardware report for local GPU
689
+ terradev local scan --detailed
690
+
691
+ # Output includes:
692
+ # GPU 0: RTX 4090 VRAM 24GB PCIe x16 NUMA node 0
693
+ # NVLink: none (single GPU)
694
+ # Compute: 8.9 Driver: 545.29 CUDA: 12.3
695
+ # P-state: P0 Temp: 42C Power: 45W / 450W TDP
696
+ ```
697
+ ---
698
+
564
699
  ## Quick Reference
565
700
  ```bash
566
701
  # Set up cloud provider credentials
@@ -594,28 +729,6 @@ terradev analytics --days 30
594
729
  terradev optimize
595
730
  ```
596
731
 
597
- ## Configuration
598
-
599
- Your API keys are stored locally at ~/.terradev/credentials.json and never sent to Terradev servers.
600
-
601
- ```bash
602
- # Configure multiple providers
603
- terradev configure --provider runpod
604
- terradev configure --provider vastai
605
- terradev configure --provider aws
606
- terradev configure --provider gcp
607
- ```
608
-
609
- ## Performance
610
-
611
- - **2-8x throughput improvements** with vLLM optimization
612
- - **30-50% bandwidth penalty eliminated** with NUMA topology
613
- - **2-5x CUDA Graph speedup** with optimal topology
614
- - **Up to 90% cost savings** with automatic provider switching
615
- - **<2 minute spot recovery** with KV cache checkpointing
616
- - **3.6x faster cold starts** with weight streaming
617
- - **57.3% cost savings** with MLA-aware VRAM estimation
618
-
619
732
  ### Troubleshooting Training Workflows
620
733
 
621
734
  **NCCL Connectivity Problems**
@@ -1,4 +1,4 @@
1
- # Terradev CLI v5.0.0
1
+ # Terradev CLI v5.0.2
2
2
 
3
3
  **Open Source BYOAPI Multi-Cloud GPU Infrastructure Platform**
4
4
 
@@ -10,12 +10,34 @@ Terradev is a cross-cloud compute-provisioning CLI that compresses + stages data
10
10
 
11
11
  **NOTES ON 5.0.0**
12
12
 
13
- We removed the paywall, open-sourced Terradev, and added Rust DAG accelerators for safe agent execution, and snappy execution...
13
+ We removed the paywall, open-sourced Terradev, and added Rust accelerators for safe and snappy delivery...
14
14
 
15
- With the Rust DAG orchestrator, the execution graph enforces correct sequencing and idempotency at the runtime level. The agent can issue commands freely... the orchestrator ensures they're safe to execute.
15
+ With the Rust DAG orchestrator, the execution graph enforces correct sequencing and idempotency at the runtime level. You or the agent can issue commands freely... the orchestrator ensures they're safe to execute.
16
16
 
17
- 192 MCP sub-tools require heavy context. The Rust MCP orchestrator processes tool calls with minimal overhead: deserializing, routing, executing, and responding faster than pure-Python-based MCP servers by an order of magnitude. For an agent running a complex provisioning workflow across 21+ cloud providers, that compounds across every tool call in the chain.
17
+ 104 tools and sub-tools require heavy context. The Rust MCP orchestrator processes tool calls with minimal overhead: deserializing, routing, executing, and responding faster than pure-Python-based MCP servers by an order of magnitude. For an agent running a complex provisioning workflow across 21+ cloud providers, that compounds across every tool call in the chain.
18
18
 
19
+ ## BYOAPI Configuration
20
+
21
+ Your API keys are stored locally at ~/.terradev/credentials.json and never sent to Terradev servers.
22
+
23
+ ```bash
24
+ # Configure multiple providers
25
+ terradev configure --provider runpod
26
+ terradev configure --provider vastai
27
+ terradev configure --provider aws
28
+ terradev configure --provider gcp
29
+ ```
30
+
31
+ ## Performance
32
+
33
+ - **2-8x throughput improvements** with vLLM optimization
34
+ - **30-50% bandwidth penalty eliminated** with NUMA topology
35
+ - **2-5x CUDA Graph speedup** with optimal topology
36
+ - **Up to 90% cost savings** with automatic provider switching
37
+ - **<2 minute spot recovery** with KV cache checkpointing
38
+ - **3.6x faster cold starts** with weight streaming
39
+ - **57% cost savings** with MLA-aware VRAM estimation
40
+
19
41
  ## Complete Tutorial
20
42
 
21
43
  ### Step 1: Install Terradev
@@ -34,7 +56,7 @@ terradev --help
34
56
  ```
35
57
 
36
58
  ### Step 2: Configure Your First Cloud Provider
37
- Terradev supports 19 GPU cloud providers. Start with one, RunPod is the fastest to set up:
59
+ Terradev supports 21+ GPU cloud providers. Start with one, RunPod is the fastest to set up:
38
60
 
39
61
  ```bash
40
62
  terradev setup runpod --quick
@@ -469,6 +491,117 @@ echo "3. Test failover: terradev inferx failover --endpoint burst-llm-api --test
469
491
  echo "4. Update adapters: terradev lora update -n customer-enterprise-a -p ./new-adapters/"
470
492
  ```
471
493
 
494
+ ## Bare Metal GPU Access with IPMI Management (Latitude.sh)
495
+
496
+ Most GPU clouds give you a virtual machine. You get a slice of hardware, shared kernel paths, and a hypervisor layer between your workload and the GPU. For most ML workloads this is fine. For compliance-sensitive deployments — HIPAA, FedRAMP, financial services, defense contractors — it isn't. Virtualization introduces attestation gaps that auditors reject.
497
+
498
+ Latitude.sh is the only provider in Terradev's fleet that offers both **bare metal** and **virtual machine** GPU instances from the same API. Bare metal gives you the physical server — dedicated hardware, no virtualization overhead, and IPMI out-of-band management.
499
+
500
+ ```bash
501
+ # See both bare metal and VM options side by side
502
+ terradev quote -g H100 --provider latitude
503
+
504
+ # Provision dedicated bare metal with IPMI access
505
+ terradev provision --provider latitude --gpu H100 --instance-type bare-metal
506
+
507
+ # Provision a VM (faster spin-up, slightly lower cost)
508
+ terradev provision --provider latitude --gpu H100 --instance-type vm
509
+ ```
510
+
511
+ ### IPMI: Why It Matters for Enterprise
512
+
513
+ IPMI (Intelligent Platform Management Interface) gives you out-of-band server management independent of the OS and GPU stack. If a training job deadlocks the kernel, you don't wait for a cloud provider ticket — you power-cycle via IPMI directly. Security teams can verify hardware attestation. Compliance frameworks that require dedicated hardware and physical access controls are satisfied.
514
+
515
+ ```bash
516
+ # Instance status includes IPMI access endpoint when bare metal
517
+ terradev status --live --provider latitude
518
+
519
+ # Output includes:
520
+ # ipmi_access: true
521
+ # ipmi_endpoint: 10.x.x.x
522
+ # isolation: bare_metal
523
+ ```
524
+ ---
525
+
526
+ ## Local GPU Discovery and Hybrid Compute Pools
527
+
528
+ Every other GPU orchestration platform assumes you're renting compute. Terradev doesn't.
529
+
530
+ If you have a GPU in your local machine — a gaming rig, a workstation, a university compute node you have SSH access to — Terradev can discover it, register it into your compute pool, and incorporate it into provisioning decisions alongside cloud providers.
531
+
532
+ ```bash
533
+ # Scan local machine for GPUs
534
+ terradev local scan
535
+
536
+ # Output:
537
+ # Found 1 local GPU:
538
+ # [0] NVIDIA RTX 4090 24GB Driver 545.29 Util: 3% Temp: 42C
539
+ #
540
+ # Register in pool? [y/N]:
541
+
542
+ # Register local GPU into your pool
543
+ terradev local register --name "workstation-4090"
544
+
545
+ # Scan a remote machine you have SSH access to
546
+ terradev local scan --host 192.168.1.50 --user ubuntu --key ~/.ssh/id_rsa
547
+
548
+ # View your full compute pool (local + cloud)
549
+ terradev local pool
550
+ ```
551
+
552
+ Pool output:
553
+ ```
554
+ COMPUTE POOL (4 resources)
555
+ workstation-4090 RTX 4090 24GB local $0.00/hr Free
556
+ runpod-h100-001 H100 80GB runpod $2.49/hr Running
557
+ vastai-a100-002 A100 40GB vastai $1.82/hr Running
558
+ lambda-a10g-003 A10G 24GB lambda_labs $0.60/hr Idle
559
+ ```
560
+
561
+ ### Why This Matters
562
+
563
+ The `terradev quote` command normally shows cloud provider pricing. With local GPUs registered, the pool includes your own hardware — priced at $0/hr. For a university researcher with a 3090 workstation running overnight jobs, or a startup with a rack of 4090s before they've moved to cloud: Terradev routes workloads to the cheapest available compute, and $0/hr always wins.
564
+
565
+ ```bash
566
+ # Get quotes including local pool
567
+ terradev quote -g RTX4090 --include-local
568
+
569
+ # Output:
570
+ # GPU PROVIDER $/HR AVAILABLE
571
+ # RTX 4090 local (workstation-4090) $0.00 Yes
572
+ # RTX 4090 vastai $0.34 Yes
573
+ # RTX 4090 runpod $0.39 Yes
574
+
575
+ # Provision to cheapest available — prefers local automatically
576
+ terradev provision -g RTX4090 --prefer-local
577
+
578
+ # Launch training on local GPU with cloud overflow
579
+ terradev train --script train.py --pool workstation-4090 --overflow-to-cloud
580
+ ```
581
+
582
+ ### How Discovery Works
583
+
584
+ The local scanner uses direct NVML bindings (Rust backend, 5–10x faster than `nvidia-smi` parsing) to introspect every GPU on the target machine:
585
+
586
+ - GPU model, memory, PCIe bus ID, NUMA affinity
587
+ - Current utilization, memory usage, temperature, clock speeds
588
+ - Driver version, CUDA version, compute capability
589
+ - Multi-GPU topology (NVLink, PCIe switch topology)
590
+
591
+ Falls back to `nvidia-smi` parsing automatically if the Rust NVML extension isn't available.
592
+
593
+ ```bash
594
+ # Detailed hardware report for local GPU
595
+ terradev local scan --detailed
596
+
597
+ # Output includes:
598
+ # GPU 0: RTX 4090 VRAM 24GB PCIe x16 NUMA node 0
599
+ # NVLink: none (single GPU)
600
+ # Compute: 8.9 Driver: 545.29 CUDA: 12.3
601
+ # P-state: P0 Temp: 42C Power: 45W / 450W TDP
602
+ ```
603
+ ---
604
+
472
605
  ## Quick Reference
473
606
  ```bash
474
607
  # Set up cloud provider credentials
@@ -502,28 +635,6 @@ terradev analytics --days 30
502
635
  terradev optimize
503
636
  ```
504
637
 
505
- ## Configuration
506
-
507
- Your API keys are stored locally at ~/.terradev/credentials.json and never sent to Terradev servers.
508
-
509
- ```bash
510
- # Configure multiple providers
511
- terradev configure --provider runpod
512
- terradev configure --provider vastai
513
- terradev configure --provider aws
514
- terradev configure --provider gcp
515
- ```
516
-
517
- ## Performance
518
-
519
- - **2-8x throughput improvements** with vLLM optimization
520
- - **30-50% bandwidth penalty eliminated** with NUMA topology
521
- - **2-5x CUDA Graph speedup** with optimal topology
522
- - **Up to 90% cost savings** with automatic provider switching
523
- - **<2 minute spot recovery** with KV cache checkpointing
524
- - **3.6x faster cold starts** with weight streaming
525
- - **57.3% cost savings** with MLA-aware VRAM estimation
526
-
527
638
  ### Troubleshooting Training Workflows
528
639
 
529
640
  **NCCL Connectivity Problems**
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "terradev-cli"
7
- version = "5.0.0"
8
- description = "NUMA-aware GPU provisioning and orchestration for stateless MoE workloads of all sizes"
7
+ version = "5.0.2"
8
+ description = "Open Source BYOAPI Multi-Cloud GPU Infrastructure Platform"
9
9
  readme = "README.md"
10
10
  license = {text = "Apache-2.0"}
11
11
  authors = [
@@ -113,16 +113,10 @@ dependencies = [
113
113
  "pyyaml>=6.0",
114
114
  "cryptography>=41.0.0",
115
115
  "requests>=2.31.0",
116
- "gradio>=4.0.0",
117
- "streamlit>=1.28.0",
118
- "transformers>=4.0.0",
119
- "torch>=2.0.0",
120
- "sentence-transformers>=2.0.0",
121
116
  "plotly>=5.0.0",
122
117
  "pandas>=1.0.0",
123
118
  "numpy>=1.0.0",
124
119
  "huggingface-hub>=0.19.0",
125
- "stripe>=7.0.0",
126
120
  ]
127
121
 
128
122
  [project.optional-dependencies]
@@ -130,6 +124,14 @@ aws = ["boto3>=1.34.0"]
130
124
  gcp = ["google-cloud-compute>=1.8.0"]
131
125
  azure = ["azure-mgmt-compute>=29.0.0", "azure-identity>=1.12.0"]
132
126
  lmcache = ["lmcache>=0.1", "redis>=5.0.0"]
127
+ ml = [
128
+ "torch>=2.0.0",
129
+ "transformers>=4.0.0",
130
+ "sentence-transformers>=2.0.0",
131
+ "gradio>=4.0.0",
132
+ "streamlit>=1.28.0",
133
+ ]
134
+ billing = ["stripe>=7.0.0"]
133
135
  all = [
134
136
  "boto3>=1.34.0",
135
137
  "google-cloud-compute>=1.8.0",
@@ -1,4 +1,5 @@
1
1
  [workspace]
2
+ resolver = "2"
2
3
  members = [
3
4
  "terradev-state-machine",
4
5
  "terradev-resource-pool",
@@ -33,7 +34,7 @@ members = [
33
34
  ]
34
35
 
35
36
  [workspace.dependencies]
36
- pyo3 = { version = "0.20", features = ["extension-module"] }
37
+ pyo3 = { version = "0.20", features = ["abi3-py38"] }
37
38
  serde = { version = "1.0", features = ["derive"] }
38
39
  serde_json = "1.0"
39
40
  thiserror = "1.0"
@@ -5,7 +5,7 @@ edition = "2021"
5
5
 
6
6
  [lib]
7
7
  name = "terradev_artifact_verification"
8
- crate-type = ["cdylib", "rlib"]
8
+ crate-type = ["rlib"]
9
9
 
10
10
  [dependencies]
11
11
  pyo3 = { workspace = true }
@@ -1,3 +1,5 @@
1
+ #![allow(non_local_definitions)]
2
+
1
3
  mod types;
2
4
  mod verifier;
3
5
 
@@ -15,24 +17,35 @@ fn terradev_artifact_verification(_py: Python, m: &PyModule) -> PyResult<()> {
15
17
  #[pyclass]
16
18
  pub struct PyArtifactVerifier;
17
19
 
20
+ #[allow(non_local_definitions)]
18
21
  #[pymethods]
19
22
  impl PyArtifactVerifier {
20
23
  #[new]
21
24
  fn new() -> Self {
22
25
  Self
23
26
  }
24
-
27
+
25
28
  fn compute_sha256(&self, data: Vec<u8>) -> String {
26
29
  ArtifactVerifier::compute_sha256(&data)
27
30
  }
28
-
29
- fn verify_artifact(&self, data: Vec<u8>, expected_checksum: String, algorithm: String) -> PyResult<PyVerificationResult> {
31
+
32
+ fn verify_artifact(
33
+ &self,
34
+ data: Vec<u8>,
35
+ expected_checksum: String,
36
+ algorithm: String,
37
+ ) -> PyResult<PyVerificationResult> {
30
38
  ArtifactVerifier::verify_artifact(&data, &expected_checksum, &algorithm)
31
39
  .map(|r| r.into())
32
40
  .map_err(|e| PyErr::new::<pyo3::exceptions::PyValueError, _>(e.to_string()))
33
41
  }
34
-
35
- fn verify_file(&self, path: String, expected_checksum: String, algorithm: String) -> PyResult<PyVerificationResult> {
42
+
43
+ fn verify_file(
44
+ &self,
45
+ path: String,
46
+ expected_checksum: String,
47
+ algorithm: String,
48
+ ) -> PyResult<PyVerificationResult> {
36
49
  ArtifactVerifier::verify_file(&path, &expected_checksum, &algorithm)
37
50
  .map(|r| r.into())
38
51
  .map_err(|e| PyErr::new::<pyo3::exceptions::PyValueError, _>(e.to_string()))
@@ -5,14 +5,16 @@ use thiserror::Error;
5
5
  pub enum VerificationError {
6
6
  #[error("Hash mismatch: expected {expected}, got {actual}")]
7
7
  HashMismatch { expected: String, actual: String },
8
-
8
+
9
+ #[allow(dead_code)]
9
10
  #[error("Invalid signature")]
10
11
  InvalidSignature,
11
-
12
+
12
13
  #[error("Artifact not found: {0}")]
13
14
  NotFound(String),
14
15
  }
15
16
 
17
+ #[allow(dead_code)]
16
18
  #[derive(Debug, Clone, Serialize, Deserialize)]
17
19
  pub struct Artifact {
18
20
  pub name: String,