agenta 0.64.1__tar.gz → 0.74.0__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 (431) hide show
  1. {agenta-0.64.1 → agenta-0.74.0}/PKG-INFO +16 -22
  2. {agenta-0.64.1 → agenta-0.74.0}/agenta/__init__.py +73 -37
  3. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/testset_output_response.py +1 -0
  4. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/__init__.py +2 -4
  5. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/agenta_init.py +88 -63
  6. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/assets.py +73 -10
  7. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/decorators/serving.py +61 -26
  8. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/decorators/tracing.py +51 -30
  9. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/tracing/inline.py +8 -1
  10. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/tracing/processors.py +23 -12
  11. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/tracing/tracing.py +2 -2
  12. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/evaluations/metrics.py +3 -3
  13. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/evaluations/preview/evaluate.py +36 -8
  14. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/evaluations/runs.py +2 -1
  15. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/litellm/litellm.py +38 -30
  16. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/litellm/mockllm.py +2 -2
  17. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/managers/config.py +3 -1
  18. agenta-0.74.0/agenta/sdk/managers/testsets.py +357 -0
  19. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middleware/auth.py +19 -4
  20. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middleware/config.py +3 -1
  21. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middleware/otel.py +3 -4
  22. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middleware/vault.py +20 -5
  23. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middlewares/routing/otel.py +1 -1
  24. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middlewares/running/vault.py +1 -1
  25. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/models/evaluations.py +11 -3
  26. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/models/shared.py +1 -1
  27. agenta-0.74.0/agenta/sdk/router.py +33 -0
  28. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/tracing/exporters.py +1 -0
  29. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/tracing/inline.py +8 -1
  30. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/tracing/processors.py +48 -40
  31. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/tracing/propagation.py +9 -12
  32. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/tracing/tracing.py +91 -2
  33. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/types.py +19 -20
  34. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/client.py +10 -9
  35. agenta-0.74.0/agenta/sdk/utils/lazy.py +318 -0
  36. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/workflows/configurations.py +1 -0
  37. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/workflows/handlers.py +223 -80
  38. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/workflows/interfaces.py +47 -0
  39. agenta-0.74.0/agenta/sdk/workflows/runners/__init__.py +3 -0
  40. agenta-0.74.0/agenta/sdk/workflows/runners/base.py +30 -0
  41. agenta-0.74.0/agenta/sdk/workflows/runners/daytona.py +272 -0
  42. agenta-0.74.0/agenta/sdk/workflows/runners/local.py +109 -0
  43. agenta-0.74.0/agenta/sdk/workflows/runners/registry.py +48 -0
  44. agenta-0.74.0/agenta/sdk/workflows/sandbox.py +55 -0
  45. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/workflows/utils.py +6 -0
  46. agenta-0.74.0/pyproject.toml +64 -0
  47. agenta-0.64.1/agenta/config.py +0 -25
  48. agenta-0.64.1/agenta/config.toml +0 -4
  49. agenta-0.64.1/agenta/sdk/managers/testsets.py +0 -441
  50. agenta-0.64.1/agenta/sdk/router.py +0 -8
  51. agenta-0.64.1/agenta/sdk/workflows/sandbox.py +0 -118
  52. agenta-0.64.1/pyproject.toml +0 -68
  53. {agenta-0.64.1 → agenta-0.74.0}/README.md +0 -0
  54. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/Readme.md +0 -0
  55. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/__init__.py +0 -0
  56. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/__init__.py +0 -0
  57. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/access_control/__init__.py +0 -0
  58. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/access_control/client.py +0 -0
  59. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/access_control/raw_client.py +0 -0
  60. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/admin/__init__.py +0 -0
  61. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/admin/client.py +0 -0
  62. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/admin/raw_client.py +0 -0
  63. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/api_keys/__init__.py +0 -0
  64. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/api_keys/client.py +0 -0
  65. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/api_keys/raw_client.py +0 -0
  66. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/apps/__init__.py +0 -0
  67. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/apps/client.py +0 -0
  68. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/apps/raw_client.py +0 -0
  69. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/bases/__init__.py +0 -0
  70. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/bases/client.py +0 -0
  71. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/bases/raw_client.py +0 -0
  72. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/billing/__init__.py +0 -0
  73. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/billing/client.py +0 -0
  74. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/billing/raw_client.py +0 -0
  75. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/client.py +0 -0
  76. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/configs/__init__.py +0 -0
  77. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/configs/client.py +0 -0
  78. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/configs/raw_client.py +0 -0
  79. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/containers/__init__.py +0 -0
  80. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/containers/client.py +0 -0
  81. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/containers/raw_client.py +0 -0
  82. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/__init__.py +0 -0
  83. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/api_error.py +0 -0
  84. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/client_wrapper.py +0 -0
  85. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/datetime_utils.py +0 -0
  86. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/file.py +0 -0
  87. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/force_multipart.py +0 -0
  88. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/http_client.py +0 -0
  89. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/http_response.py +0 -0
  90. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/jsonable_encoder.py +0 -0
  91. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/pydantic_utilities.py +0 -0
  92. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/query_encoder.py +0 -0
  93. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/remove_none_from_dict.py +0 -0
  94. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/request_options.py +0 -0
  95. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/core/serialization.py +0 -0
  96. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/environment.py +0 -0
  97. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/environments/__init__.py +0 -0
  98. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/environments/client.py +0 -0
  99. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/environments/raw_client.py +0 -0
  100. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/errors/__init__.py +0 -0
  101. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/errors/unprocessable_entity_error.py +0 -0
  102. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/evals/__init__.py +0 -0
  103. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/evals/client.py +0 -0
  104. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/evals/raw_client.py +0 -0
  105. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/evaluations/__init__.py +0 -0
  106. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/evaluations/client.py +0 -0
  107. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/evaluations/raw_client.py +0 -0
  108. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/evaluators/__init__.py +0 -0
  109. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/evaluators/client.py +0 -0
  110. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/evaluators/raw_client.py +0 -0
  111. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/human_evaluations/__init__.py +0 -0
  112. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/human_evaluations/client.py +0 -0
  113. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/human_evaluations/raw_client.py +0 -0
  114. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/observability/__init__.py +0 -0
  115. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/observability/client.py +0 -0
  116. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/observability/raw_client.py +0 -0
  117. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/observability/types/__init__.py +0 -0
  118. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/observability/types/fetch_trace_by_id_request_trace_id.py +0 -0
  119. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/observability/types/fetch_trace_by_id_response.py +0 -0
  120. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/observability/types/query_analytics_response.py +0 -0
  121. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/observability/types/query_traces_response.py +0 -0
  122. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/organization/__init__.py +0 -0
  123. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/organization/client.py +0 -0
  124. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/organization/raw_client.py +0 -0
  125. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/raw_client.py +0 -0
  126. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/scopes/__init__.py +0 -0
  127. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/scopes/client.py +0 -0
  128. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/scopes/raw_client.py +0 -0
  129. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/testsets/__init__.py +0 -0
  130. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/testsets/client.py +0 -0
  131. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/testsets/raw_client.py +0 -0
  132. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/testsets/types/__init__.py +0 -0
  133. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/testsets/types/create_testset_from_file_request_file_type.py +0 -0
  134. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/testsets/types/fetch_testset_to_file_request_file_type.py +0 -0
  135. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/testsets/types/update_testset_from_file_request_file_type.py +0 -0
  136. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/tracing/__init__.py +0 -0
  137. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/tracing/client.py +0 -0
  138. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/tracing/raw_client.py +0 -0
  139. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/tracing/types/__init__.py +0 -0
  140. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/tracing/types/fetch_trace_request_trace_id.py +0 -0
  141. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/tracing/types/remove_trace_request_trace_id.py +0 -0
  142. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/__init__.py +0 -0
  143. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/account_request.py +0 -0
  144. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/account_response.py +0 -0
  145. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/agenta_node_dto.py +0 -0
  146. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/agenta_node_dto_nodes_value.py +0 -0
  147. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/agenta_nodes_response.py +0 -0
  148. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/agenta_root_dto.py +0 -0
  149. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/agenta_roots_response.py +0 -0
  150. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/agenta_tree_dto.py +0 -0
  151. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/agenta_trees_response.py +0 -0
  152. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/aggregated_result.py +0 -0
  153. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/aggregated_result_evaluator_config.py +0 -0
  154. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/analytics_response.py +0 -0
  155. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation.py +0 -0
  156. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation_create.py +0 -0
  157. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation_edit.py +0 -0
  158. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation_kind.py +0 -0
  159. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation_link.py +0 -0
  160. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation_link_response.py +0 -0
  161. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation_query.py +0 -0
  162. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation_query_request.py +0 -0
  163. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation_reference.py +0 -0
  164. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation_references.py +0 -0
  165. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation_response.py +0 -0
  166. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotation_source.py +0 -0
  167. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/annotations_response.py +0 -0
  168. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/app.py +0 -0
  169. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/app_variant_response.py +0 -0
  170. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/app_variant_revision.py +0 -0
  171. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/artifact.py +0 -0
  172. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/base_output.py +0 -0
  173. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/body_fetch_workflow_revision.py +0 -0
  174. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/body_import_testset.py +0 -0
  175. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/bucket_dto.py +0 -0
  176. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/collect_status_response.py +0 -0
  177. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/config_db.py +0 -0
  178. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/config_dto.py +0 -0
  179. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/config_response_model.py +0 -0
  180. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/correct_answer.py +0 -0
  181. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/create_app_output.py +0 -0
  182. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/custom_model_settings_dto.py +0 -0
  183. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/custom_provider_dto.py +0 -0
  184. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/custom_provider_kind.py +0 -0
  185. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/custom_provider_settings_dto.py +0 -0
  186. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/data.py +0 -0
  187. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/delete_evaluation.py +0 -0
  188. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/environment_output.py +0 -0
  189. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/environment_output_extended.py +0 -0
  190. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/environment_revision.py +0 -0
  191. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/error.py +0 -0
  192. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluation.py +0 -0
  193. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluation_scenario.py +0 -0
  194. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluation_scenario_input.py +0 -0
  195. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluation_scenario_output.py +0 -0
  196. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluation_scenario_result.py +0 -0
  197. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluation_status_enum.py +0 -0
  198. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluation_type.py +0 -0
  199. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluator.py +0 -0
  200. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluator_config.py +0 -0
  201. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluator_flags.py +0 -0
  202. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluator_mapping_output_interface.py +0 -0
  203. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluator_output_interface.py +0 -0
  204. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluator_query.py +0 -0
  205. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluator_query_request.py +0 -0
  206. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluator_request.py +0 -0
  207. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluator_response.py +0 -0
  208. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/evaluators_response.py +0 -0
  209. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/exception_dto.py +0 -0
  210. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/extended_o_tel_tracing_response.py +0 -0
  211. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/focus.py +0 -0
  212. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/format.py +0 -0
  213. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/full_json_input.py +0 -0
  214. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/full_json_output.py +0 -0
  215. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/get_config_response.py +0 -0
  216. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/header.py +0 -0
  217. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/http_validation_error.py +0 -0
  218. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/human_evaluation.py +0 -0
  219. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/human_evaluation_scenario.py +0 -0
  220. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/human_evaluation_scenario_input.py +0 -0
  221. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/human_evaluation_scenario_output.py +0 -0
  222. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/invite_request.py +0 -0
  223. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/legacy_analytics_response.py +0 -0
  224. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/legacy_data_point.py +0 -0
  225. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/legacy_evaluator.py +0 -0
  226. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/legacy_scope_request.py +0 -0
  227. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/legacy_scopes_response.py +0 -0
  228. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/legacy_subscription_request.py +0 -0
  229. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/legacy_user_request.py +0 -0
  230. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/legacy_user_response.py +0 -0
  231. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/lifecycle_dto.py +0 -0
  232. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/link_dto.py +0 -0
  233. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/list_api_keys_response.py +0 -0
  234. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/llm_run_rate_limit.py +0 -0
  235. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/meta_request.py +0 -0
  236. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/metrics_dto.py +0 -0
  237. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/new_testset.py +0 -0
  238. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/node_dto.py +0 -0
  239. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/node_type.py +0 -0
  240. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_context_dto.py +0 -0
  241. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_event.py +0 -0
  242. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_event_dto.py +0 -0
  243. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_extra_dto.py +0 -0
  244. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_flat_span.py +0 -0
  245. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_flat_span_input_end_time.py +0 -0
  246. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_flat_span_input_start_time.py +0 -0
  247. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_flat_span_output_end_time.py +0 -0
  248. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_flat_span_output_start_time.py +0 -0
  249. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_link.py +0 -0
  250. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_link_dto.py +0 -0
  251. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_links_response.py +0 -0
  252. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_span.py +0 -0
  253. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_span_dto.py +0 -0
  254. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_span_input_end_time.py +0 -0
  255. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_span_input_spans_value.py +0 -0
  256. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_span_input_start_time.py +0 -0
  257. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_span_kind.py +0 -0
  258. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_span_output_end_time.py +0 -0
  259. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_span_output_spans_value.py +0 -0
  260. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_span_output_start_time.py +0 -0
  261. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_spans_tree.py +0 -0
  262. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_spans_tree_input_spans_value.py +0 -0
  263. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_spans_tree_output_spans_value.py +0 -0
  264. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_status_code.py +0 -0
  265. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_tracing_data_response.py +0 -0
  266. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_tracing_request.py +0 -0
  267. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/o_tel_tracing_response.py +0 -0
  268. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/organization.py +0 -0
  269. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/organization_details.py +0 -0
  270. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/organization_membership_request.py +0 -0
  271. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/organization_output.py +0 -0
  272. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/organization_request.py +0 -0
  273. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/parent_dto.py +0 -0
  274. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/permission.py +0 -0
  275. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/plan.py +0 -0
  276. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/project_membership_request.py +0 -0
  277. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/project_request.py +0 -0
  278. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/project_scope.py +0 -0
  279. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/projects_response.py +0 -0
  280. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/recursive_types.py +0 -0
  281. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/reference.py +0 -0
  282. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/reference_dto.py +0 -0
  283. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/reference_request_model.py +0 -0
  284. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/result.py +0 -0
  285. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/role.py +0 -0
  286. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/root_dto.py +0 -0
  287. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/scopes_response_model.py +0 -0
  288. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/score.py +0 -0
  289. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/secret_dto.py +0 -0
  290. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/secret_kind.py +0 -0
  291. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/secret_response_dto.py +0 -0
  292. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/simple_evaluation_output.py +0 -0
  293. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/span_dto.py +0 -0
  294. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/span_dto_nodes_value.py +0 -0
  295. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/standard_provider_dto.py +0 -0
  296. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/standard_provider_kind.py +0 -0
  297. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/standard_provider_settings_dto.py +0 -0
  298. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/status_code.py +0 -0
  299. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/status_dto.py +0 -0
  300. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/tags_request.py +0 -0
  301. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/testcase_response.py +0 -0
  302. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/testset.py +0 -0
  303. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/testset_request.py +0 -0
  304. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/testset_response.py +0 -0
  305. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/testset_simple_response.py +0 -0
  306. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/testsets_response.py +0 -0
  307. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/time_dto.py +0 -0
  308. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/timestamp.py +0 -0
  309. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/tree_dto.py +0 -0
  310. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/tree_type.py +0 -0
  311. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/update_app_output.py +0 -0
  312. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/user_request.py +0 -0
  313. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/validation_error.py +0 -0
  314. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/validation_error_loc_item.py +0 -0
  315. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_artifact.py +0 -0
  316. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_data.py +0 -0
  317. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_flags.py +0 -0
  318. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_request.py +0 -0
  319. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_response.py +0 -0
  320. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_revision.py +0 -0
  321. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_revision_request.py +0 -0
  322. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_revision_response.py +0 -0
  323. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_revisions_response.py +0 -0
  324. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_variant.py +0 -0
  325. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_variant_request.py +0 -0
  326. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_variant_response.py +0 -0
  327. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflow_variants_response.py +0 -0
  328. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workflows_response.py +0 -0
  329. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workspace.py +0 -0
  330. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workspace_member_response.py +0 -0
  331. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workspace_membership_request.py +0 -0
  332. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workspace_permission.py +0 -0
  333. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workspace_request.py +0 -0
  334. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workspace_response.py +0 -0
  335. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workspace_role.py +0 -0
  336. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/types/workspace_role_response.py +0 -0
  337. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/variants/__init__.py +0 -0
  338. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/variants/client.py +0 -0
  339. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/variants/raw_client.py +0 -0
  340. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/variants/types/__init__.py +0 -0
  341. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/variants/types/add_variant_from_base_and_config_response.py +0 -0
  342. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/vault/__init__.py +0 -0
  343. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/vault/client.py +0 -0
  344. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/vault/raw_client.py +0 -0
  345. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/workflows/__init__.py +0 -0
  346. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/workflows/client.py +0 -0
  347. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/workflows/raw_client.py +0 -0
  348. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/workspace/__init__.py +0 -0
  349. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/workspace/client.py +0 -0
  350. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/backend/workspace/raw_client.py +0 -0
  351. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/client.py +0 -0
  352. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/types/provider_key_dto.py~HEAD +0 -0
  353. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/types/provider_key_dto.py~feat_model-registry +0 -0
  354. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/types/provider_kind.py~HEAD +0 -0
  355. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/types/provider_kind.py~feat_model-registry +0 -0
  356. {agenta-0.64.1 → agenta-0.74.0}/agenta/client/types.py +0 -0
  357. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/context/__init__.py +0 -0
  358. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/context/running.py +0 -0
  359. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/context/serving.py +0 -0
  360. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/context/tracing.py +0 -0
  361. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/contexts/__init__.py +0 -0
  362. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/contexts/routing.py +0 -0
  363. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/contexts/running.py +0 -0
  364. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/contexts/tracing.py +0 -0
  365. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/decorators/__init__.py +0 -0
  366. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/decorators/routing.py +0 -0
  367. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/decorators/running.py +0 -0
  368. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/__init__.py +0 -0
  369. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/running/__init__.py +0 -0
  370. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/running/registry.py +0 -0
  371. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/running/utils.py +0 -0
  372. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/tracing/__init__.py +0 -0
  373. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/tracing/attributes.py +0 -0
  374. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/tracing/conventions.py +0 -0
  375. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/tracing/exporters.py +0 -0
  376. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/tracing/propagation.py +0 -0
  377. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/engines/tracing/spans.py +0 -0
  378. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/evaluations/__init__.py +0 -0
  379. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/evaluations/preview/__init__.py +0 -0
  380. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/evaluations/preview/utils.py +0 -0
  381. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/evaluations/results.py +0 -0
  382. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/evaluations/scenarios.py +0 -0
  383. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/litellm/__init__.py +0 -0
  384. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/litellm/mocks/__init__.py +0 -0
  385. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/managers/__init__.py +0 -0
  386. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/managers/applications.py +0 -0
  387. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/managers/apps.py +0 -0
  388. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/managers/deployment.py +0 -0
  389. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/managers/evaluations.py +0 -0
  390. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/managers/evaluators.py +0 -0
  391. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/managers/secrets.py +0 -0
  392. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/managers/shared.py +0 -0
  393. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/managers/variant.py +0 -0
  394. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/managers/vault.py +0 -0
  395. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middleware/__init__.py +0 -0
  396. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middleware/cors.py +0 -0
  397. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middleware/inline.py +0 -0
  398. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middleware/mock.py +0 -0
  399. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middlewares/__init__.py +0 -0
  400. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middlewares/routing/__init__.py +0 -0
  401. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middlewares/routing/auth.py +0 -0
  402. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middlewares/routing/cors.py +0 -0
  403. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middlewares/running/__init__.py +0 -0
  404. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middlewares/running/normalizer.py +0 -0
  405. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/middlewares/running/resolver.py +0 -0
  406. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/models/__init__.py +0 -0
  407. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/models/blobs.py +0 -0
  408. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/models/git.py +0 -0
  409. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/models/testsets.py +0 -0
  410. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/models/tracing.py +0 -0
  411. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/models/workflows.py +0 -0
  412. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/tracing/__init__.py +0 -0
  413. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/tracing/attributes.py +0 -0
  414. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/tracing/conventions.py +0 -0
  415. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/tracing/spans.py +0 -0
  416. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/__init__.py +0 -0
  417. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/cache.py +0 -0
  418. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/constants.py +0 -0
  419. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/costs.py +0 -0
  420. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/exceptions.py +0 -0
  421. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/globals.py +0 -0
  422. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/helpers.py +0 -0
  423. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/logging.py +0 -0
  424. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/otel.py +0 -0
  425. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/preinit.py +0 -0
  426. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/references.py +0 -0
  427. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/singleton.py +0 -0
  428. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/utils/timing.py +0 -0
  429. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/workflows/__init__.py +0 -0
  430. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/workflows/builtin.py +0 -0
  431. {agenta-0.64.1 → agenta-0.74.0}/agenta/sdk/workflows/errors.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agenta
3
- Version: 0.64.1
3
+ Version: 0.74.0
4
4
  Summary: The SDK for agenta is an open-source LLMOps platform.
5
5
  Keywords: LLMOps,LLM,evaluation,prompt engineering
6
6
  Author: Mahmoud Mabrouk
@@ -15,28 +15,22 @@ Classifier: Programming Language :: Python :: 3.13
15
15
  Classifier: Programming Language :: Python :: 3.14
16
16
  Classifier: Programming Language :: Python :: 3.9
17
17
  Classifier: Topic :: Software Development :: Libraries
18
- Requires-Dist: decorator (>=5.2.1,<6.0.0)
19
- Requires-Dist: fastapi (>=0.122.0,<0.123.0)
20
- Requires-Dist: google-auth (>=2.23,<3)
21
- Requires-Dist: h11 (>=0.16.0,<0.17.0)
22
- Requires-Dist: httpx (>=0.28.0,<0.29.0)
23
- Requires-Dist: huggingface-hub (<0.31.0)
24
- Requires-Dist: importlib-metadata (>=8.0.0,<9.0)
25
- Requires-Dist: jinja2 (>=3.1.6,<4.0.0)
26
- Requires-Dist: litellm (==1.78.7)
27
- Requires-Dist: openai (>=1.106.0)
28
- Requires-Dist: opentelemetry-api (>=1.27.0,<2.0.0)
29
- Requires-Dist: opentelemetry-exporter-otlp-proto-http (>=1.27.0,<2.0.0)
30
- Requires-Dist: opentelemetry-instrumentation (>=0.56b0)
31
- Requires-Dist: opentelemetry-sdk (>=1.27.0,<2.0.0)
18
+ Requires-Dist: daytona (>=0.128,<0.129)
19
+ Requires-Dist: fastapi (>=0.127)
20
+ Requires-Dist: httpx (>=0.28,<0.29)
21
+ Requires-Dist: jinja2 (>=3,<4)
22
+ Requires-Dist: litellm (>=1,<2)
23
+ Requires-Dist: openai (>=2,<3)
24
+ Requires-Dist: opentelemetry-api (>=1,<2)
25
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http (>=1,<2)
26
+ Requires-Dist: opentelemetry-instrumentation (>=0.60b1,<0.61)
27
+ Requires-Dist: opentelemetry-sdk (>=1,<2)
28
+ Requires-Dist: orjson (>=3,<4)
32
29
  Requires-Dist: pydantic (>=2,<3)
33
- Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
34
- Requires-Dist: python-jsonpath (>=2.0.0,<3.0.0)
35
- Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
36
- Requires-Dist: restrictedpython (>=8.0,<9.0) ; python_version >= "3.11" and python_version < "3.14"
37
- Requires-Dist: structlog (>=25.2.0,<26.0.0)
38
- Requires-Dist: tiktoken (==0.11.0)
39
- Requires-Dist: toml (>=0.10.2,<0.11.0)
30
+ Requires-Dist: python-jsonpath (>=2,<3)
31
+ Requires-Dist: pyyaml (>=6,<7)
32
+ Requires-Dist: restrictedpython (>=8,<9) ; python_version >= "3.11" and python_version < "3.14"
33
+ Requires-Dist: structlog (>=25,<26)
40
34
  Project-URL: Documentation, https://agenta.ai/docs/
41
35
  Project-URL: Homepage, https://agenta.ai
42
36
  Project-URL: Repository, https://github.com/agenta-ai/agenta
@@ -1,54 +1,50 @@
1
1
  from typing import Any, Callable, Optional
2
2
 
3
- from .sdk.utils.preinit import PreInitObject
4
-
5
- from agenta.client import AgentaApi, AsyncAgentaApi
6
3
  import agenta.client.backend.types as client_types # pylint: disable=wrong-import-order
4
+ from agenta.client import AgentaApi, AsyncAgentaApi
5
+
6
+ from .sdk import assets as assets
7
7
 
8
+ # evaluations
9
+ from .sdk import testsets as testsets
10
+ from .sdk import tracer
11
+ from .sdk.agenta_init import AgentaSingleton
12
+ from .sdk.agenta_init import init as _init
13
+ from .sdk.context.running import workflow_mode_enabled
14
+ from .sdk.decorators.running import (
15
+ application,
16
+ evaluator,
17
+ workflow,
18
+ )
19
+ from .sdk.decorators.serving import app, route
20
+ from .sdk.decorators.tracing import instrument
21
+ from .sdk.managers.apps import AppManager
22
+ from .sdk.managers.config import ConfigManager
23
+ from .sdk.managers.deployment import DeploymentManager
24
+ from .sdk.managers.secrets import SecretsManager
25
+ from .sdk.managers.variant import VariantManager
26
+ from .sdk.managers.vault import VaultManager
27
+ from .sdk.tracing import Tracing, get_tracer
28
+ from .sdk.tracing.conventions import Reference
8
29
  from .sdk.types import (
9
- MCField,
30
+ BinaryParam,
10
31
  DictInput,
11
- MultipleChoice,
32
+ FileInputURL,
12
33
  FloatParam,
13
- IntParam,
14
- MultipleChoiceParam,
15
34
  GroupedMultipleChoiceParam,
35
+ IntParam,
36
+ MCField,
16
37
  MessagesInput,
17
- TextParam,
18
- FileInputURL,
19
- BinaryParam,
38
+ MultipleChoice,
39
+ MultipleChoiceParam,
20
40
  Prompt,
21
41
  PromptTemplate,
42
+ TextParam,
22
43
  )
23
-
24
- from .sdk.agenta_init import Config, AgentaSingleton, init as _init
25
- from .sdk.utils.logging import get_module_logger
26
44
  from .sdk.utils.costs import calculate_token_usage
27
- from .sdk.tracing import Tracing, get_tracer
28
- from .sdk.tracing.conventions import Reference
29
- from .sdk.decorators.tracing import instrument
30
- from .sdk.decorators.running import (
31
- workflow,
32
- application,
33
- evaluator,
34
- )
35
- from .sdk.decorators.serving import route, app
36
- from .sdk.context.running import workflow_mode_enabled
37
- from .sdk.litellm import litellm as callbacks
38
- from .sdk.managers.apps import AppManager
39
- from .sdk.managers.vault import VaultManager
40
- from .sdk.managers.secrets import SecretsManager
41
- from .sdk.managers.config import ConfigManager
42
- from .sdk.managers.variant import VariantManager
43
- from .sdk.managers.deployment import DeploymentManager
44
- from .sdk import assets as assets
45
- from .sdk import tracer
46
-
47
- # evaluations
48
- from .sdk import testsets as testsets
49
-
45
+ from .sdk.utils.logging import get_module_logger
46
+ from .sdk.utils.preinit import PreInitObject
50
47
 
51
- config = PreInitObject("agenta.config", Config)
52
48
  DEFAULT_AGENTA_SINGLETON_INSTANCE = AgentaSingleton()
53
49
 
54
50
  types = client_types
@@ -60,6 +56,14 @@ tracing = DEFAULT_AGENTA_SINGLETON_INSTANCE.tracing # type: ignore
60
56
  tracer = get_tracer(tracing)
61
57
 
62
58
 
59
+ def __getattr__(name: str):
60
+ if name == "callbacks":
61
+ from .sdk.litellm import litellm as callbacks
62
+
63
+ return callbacks
64
+ raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
65
+
66
+
63
67
  def init(
64
68
  host: Optional[str] = None,
65
69
  api_url: Optional[str] = None,
@@ -88,3 +92,35 @@ def init(
88
92
 
89
93
  tracing = DEFAULT_AGENTA_SINGLETON_INSTANCE.tracing # type: ignore
90
94
  tracer = get_tracer(tracing)
95
+
96
+
97
+ def get_trace_url(trace_id: Optional[str] = None) -> str:
98
+ """
99
+ Build a URL to view the current trace in the Agenta UI.
100
+
101
+ Automatically extracts the trace ID from the current tracing context.
102
+ Can also accept an explicit trace_id if needed.
103
+
104
+ Args:
105
+ trace_id: Optional trace ID (hex string format). If not provided,
106
+ it will be automatically extracted from the current trace context.
107
+
108
+ Returns:
109
+ The full URL to view the trace in the observability dashboard
110
+
111
+ Raises:
112
+ RuntimeError: If the SDK is not initialized, no active trace context exists,
113
+ or scope info cannot be fetched
114
+
115
+ Example:
116
+ >>> import agenta as ag
117
+ >>> ag.init(api_key="xxx")
118
+ >>>
119
+ >>> @ag.instrument()
120
+ >>> def my_function():
121
+ >>> # Get URL for the current trace
122
+ >>> url = ag.tracing.get_trace_url()
123
+ >>> print(url)
124
+ >>> return "result"
125
+ """
126
+ return DEFAULT_AGENTA_SINGLETON_INSTANCE.tracing.get_trace_url(trace_id)
@@ -13,6 +13,7 @@ class TestsetOutputResponse(UniversalBaseModel):
13
13
  name: str
14
14
  created_at: str
15
15
  updated_at: str
16
+ columns: typing.List[str]
16
17
 
17
18
  if IS_PYDANTIC_V2:
18
19
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
@@ -73,7 +73,7 @@ from agenta.sdk.decorators.running import (
73
73
  )
74
74
  from agenta.sdk.decorators.serving import route, app
75
75
  from .tracing.conventions import Reference
76
- from .agenta_init import Config, AgentaSingleton, init as _init
76
+ from .agenta_init import AgentaSingleton, init as _init
77
77
  from .utils.costs import calculate_token_usage
78
78
  from .managers.apps import AppManager
79
79
  from .managers.vault import VaultManager
@@ -83,9 +83,7 @@ from .managers.variant import VariantManager
83
83
  from .managers.deployment import DeploymentManager
84
84
  from .managers import testsets as testsets
85
85
 
86
-
87
- config = PreInitObject("agenta.config", Config)
88
- DEFAULT_AGENTA_SINGLETON_INSTANCE = AgentaSingleton()
86
+ DEFAULT_AGENTA_SINGLETON_INSTANCE: AgentaSingleton = AgentaSingleton()
89
87
 
90
88
  types = client_types
91
89
 
@@ -1,16 +1,14 @@
1
- import toml
2
- from os import getenv
3
- from typing import Optional, Callable, Any
4
1
  from importlib.metadata import version
2
+ from os import getenv
3
+ from typing import Any, Callable, Optional
5
4
 
6
- from agenta.sdk.utils.helpers import parse_url
7
- from agenta.sdk.utils.globals import set_global
8
- from agenta.sdk.utils.logging import get_module_logger
5
+ import httpx
9
6
  from agenta.client.client import AgentaApi, AsyncAgentaApi
10
-
11
- from agenta.sdk.tracing import Tracing
12
7
  from agenta.sdk.contexts.routing import RoutingContext
13
-
8
+ from agenta.sdk.tracing import Tracing
9
+ from agenta.sdk.utils.globals import set_global
10
+ from agenta.sdk.utils.helpers import parse_url
11
+ from agenta.sdk.utils.logging import get_module_logger
14
12
 
15
13
  log = get_module_logger(__name__)
16
14
 
@@ -19,6 +17,7 @@ class AgentaSingleton:
19
17
  """Singleton class to save all the "global variables" for the sdk."""
20
18
 
21
19
  _instance = None
20
+ _initialized = False
22
21
  config = None
23
22
  tracing = None
24
23
 
@@ -26,6 +25,11 @@ class AgentaSingleton:
26
25
  async_api = None
27
26
 
28
27
  def __init__(self):
28
+ # Only initialize once
29
+ if AgentaSingleton._initialized:
30
+ return
31
+
32
+ AgentaSingleton._initialized = True
29
33
  self.host = None
30
34
  self.api_url = None
31
35
  self.api_key = None
@@ -33,6 +37,11 @@ class AgentaSingleton:
33
37
  self.scope_type = None
34
38
  self.scope_id = None
35
39
 
40
+ # Cached scope information for URL building
41
+ self.organization_id: Optional[str] = None
42
+ self.workspace_id: Optional[str] = None
43
+ self.project_id: Optional[str] = None
44
+
36
45
  def __new__(cls):
37
46
  if not cls._instance:
38
47
  cls._instance = super(AgentaSingleton, cls).__new__(cls)
@@ -70,24 +79,19 @@ class AgentaSingleton:
70
79
 
71
80
  """
72
81
 
73
- log.info("Agenta - SDK ver: %s", version("agenta"))
82
+ # Idempotency check: if already initialized, skip re-initialization
83
+ if self.tracing and self.api and self.async_api:
84
+ return
74
85
 
75
- config = {}
76
- if config_fname:
77
- config = toml.load(config_fname)
86
+ log.info("Agenta - SDK ver: %s", version("agenta"))
78
87
 
79
- _host = (
80
- host
81
- or getenv("AGENTA_HOST")
82
- or config.get("host")
83
- or "https://cloud.agenta.ai"
84
- )
88
+ _host = host or getenv("AGENTA_HOST") or "https://cloud.agenta.ai"
85
89
 
86
90
  _api_url = (
87
91
  api_url
92
+ #
88
93
  or getenv("AGENTA_API_INTERNAL_URL")
89
94
  or getenv("AGENTA_API_URL")
90
- or config.get("api_url")
91
95
  or None # NO FALLBACK
92
96
  )
93
97
 
@@ -100,7 +104,7 @@ class AgentaSingleton:
100
104
 
101
105
  try:
102
106
  assert _api_url and isinstance(_api_url, str), (
103
- "API URL is required. Please provide a valid API URL or set AGENTA_API_URL environment variable."
107
+ "API URL is required. Please set AGENTA_API_URL environment variable or pass api_url parameter in ag.init()."
104
108
  )
105
109
  self.host = _host
106
110
  self.api_url = _api_url
@@ -113,24 +117,29 @@ class AgentaSingleton:
113
117
 
114
118
  self.api_key = (
115
119
  api_key
120
+ #
116
121
  or getenv("AGENTA_API_KEY")
117
- or config.get("api_key")
118
122
  or None # NO FALLBACK
119
123
  )
120
124
 
121
- log.info("Agenta - API URL: %s", self.api_url)
125
+ if self.api_key is None:
126
+ log.warning(
127
+ "API key is required (in most cases). Please set AGENTA_API_KEY environment variable or pass api_key parameter in ag.init()."
128
+ )
129
+
130
+ log.info("Agenta - API URL: %s", self.api_url)
122
131
 
123
132
  self.scope_type = (
124
133
  scope_type
134
+ #
125
135
  or getenv("AGENTA_SCOPE_TYPE")
126
- or config.get("scope_type")
127
136
  or None # NO FALLBACK
128
137
  )
129
138
 
130
139
  self.scope_id = (
131
140
  scope_id
141
+ #
132
142
  or getenv("AGENTA_SCOPE_ID")
133
- or config.get("scope_id")
134
143
  or None # NO FALLBACK
135
144
  )
136
145
 
@@ -154,43 +163,62 @@ class AgentaSingleton:
154
163
  api_key=self.api_key if self.api_key else "",
155
164
  )
156
165
 
157
- self.config = Config(
158
- host=self.host,
159
- api_key=self.api_key,
160
- )
161
-
162
-
163
- class Config:
164
- def __init__(
165
- self,
166
- **kwargs,
167
- ):
168
- self.default_parameters = {**kwargs}
169
-
170
- def set_default(self, **kwargs):
171
- self.default_parameters.update(kwargs)
172
-
173
- def get_default(self):
174
- return self.default_parameters
175
-
176
- def __getattr__(self, key):
177
- context = RoutingContext.get()
178
-
179
- parameters = context.parameters
180
-
181
- if not parameters:
166
+ # Reset cached scope info on re-init
167
+ self.organization_id = None
168
+ self.workspace_id = None
169
+ self.project_id = None
170
+
171
+ def resolve_scopes(self) -> Optional[tuple[str, str, str]]:
172
+ """Fetch and cache workspace_id and project_id from the API."""
173
+ if (
174
+ self.organization_id is not None
175
+ and self.workspace_id is not None
176
+ and self.project_id is not None
177
+ ):
182
178
  return None
183
179
 
184
- if key in parameters:
185
- value = parameters[key]
180
+ if self.api_url is None or self.api_key is None:
181
+ log.error("API URL or API key is not set. Please call ag.init() first.")
182
+ return None
186
183
 
187
- if isinstance(value, dict):
188
- nested_config = Config()
189
- nested_config.set_default(**value)
184
+ try:
185
+ with httpx.Client() as client:
186
+ response = client.get(
187
+ f"{self.api_url}/projects/current",
188
+ headers={"Authorization": f"ApiKey {self.api_key}"},
189
+ timeout=10,
190
+ )
191
+ response.raise_for_status()
192
+ project_info = response.json()
193
+
194
+ if not project_info:
195
+ log.error(
196
+ "No project context found. Please ensure your API key is valid."
197
+ )
198
+
199
+ self.organization_id = project_info.get("organization_id")
200
+ self.workspace_id = project_info.get("workspace_id")
201
+ self.project_id = project_info.get("project_id")
202
+
203
+ if (
204
+ not self.organization_id
205
+ and not self.workspace_id
206
+ or not self.project_id
207
+ ):
208
+ log.error(
209
+ "Could not determine organization/workspace/project from API response."
210
+ )
190
211
 
191
- return nested_config
212
+ except Exception as e:
213
+ log.error(f"Failed to fetch scope information: {e}")
214
+ return None
192
215
 
193
- return value
216
+ if self.organization_id and self.workspace_id and self.project_id:
217
+ return (
218
+ self.organization_id,
219
+ self.workspace_id,
220
+ self.project_id,
221
+ )
194
222
 
195
223
  return None
196
224
 
@@ -199,11 +227,12 @@ def init(
199
227
  host: Optional[str] = None,
200
228
  api_url: Optional[str] = None,
201
229
  api_key: Optional[str] = None,
202
- config_fname: Optional[str] = None,
203
230
  redact: Optional[Callable[..., Any]] = None,
204
231
  redact_on_error: Optional[bool] = True,
205
232
  scope_type: Optional[str] = None,
206
233
  scope_id: Optional[str] = None,
234
+ # DEPRECATED
235
+ config_fname: Optional[str] = None,
207
236
  ):
208
237
  """Main function to initialize the agenta sdk.
209
238
 
@@ -228,14 +257,10 @@ def init(
228
257
  host=host,
229
258
  api_url=api_url,
230
259
  api_key=api_key,
231
- config_fname=config_fname,
232
260
  redact=redact,
233
261
  redact_on_error=redact_on_error,
234
262
  scope_type=scope_type,
235
263
  scope_id=scope_id,
236
264
  )
237
265
 
238
- set_global(
239
- config=singleton.config,
240
- tracing=singleton.tracing,
241
- )
266
+ set_global(tracing=singleton.tracing)
@@ -1,3 +1,8 @@
1
+ from typing import Dict, Optional, Tuple
2
+
3
+ from litellm import cost_calculator
4
+
5
+
1
6
  supported_llm_models = {
2
7
  "anthropic": [
3
8
  "anthropic/claude-sonnet-4-5",
@@ -28,6 +33,7 @@ supported_llm_models = {
28
33
  ],
29
34
  "gemini": [
30
35
  "gemini/gemini-3-pro-preview",
36
+ "gemini/gemini-3-flash-preview",
31
37
  "gemini/gemini-2.5-pro",
32
38
  "gemini/gemini-2.5-pro-preview-05-06",
33
39
  "gemini/gemini-2.5-flash",
@@ -64,21 +70,26 @@ supported_llm_models = {
64
70
  "mistral/mistral-large-latest",
65
71
  ],
66
72
  "openai": [
67
- "gpt-5",
73
+ "gpt-5.2-pro",
74
+ "gpt-5.2-chat-latest",
75
+ "gpt-5.2",
76
+ "gpt-5.1-chat-latest",
68
77
  "gpt-5.1",
69
- "gpt-5-mini",
78
+ "gpt-5-pro",
70
79
  "gpt-5-nano",
80
+ "gpt-5-mini",
81
+ "gpt-5",
82
+ "o4-mini",
71
83
  "gpt-4.5-preview",
72
- "gpt-3.5-turbo-1106",
73
- "gpt-3.5-turbo",
74
- "gpt-4",
75
- "gpt-4o",
84
+ "gpt-4.1-nano",
85
+ "gpt-4.1-mini",
86
+ "gpt-4.1",
76
87
  "gpt-4o-mini",
88
+ "gpt-4o",
77
89
  "gpt-4-1106-preview",
78
- "gpt-4.1",
79
- "gpt-4.1-mini",
80
- "gpt-4.1-nano",
81
- "o4-mini",
90
+ "gpt-4",
91
+ "gpt-3.5-turbo-1106",
92
+ "gpt-3.5-turbo",
82
93
  ],
83
94
  "openrouter": [
84
95
  "openrouter/qwen/qwen3-235b-a22b",
@@ -200,6 +211,58 @@ supported_llm_models = {
200
211
 
201
212
  providers_list = list(supported_llm_models.keys())
202
213
 
214
+
215
+ def _get_model_costs(model: str) -> Optional[Tuple[float, float]]:
216
+ """
217
+ Get the input and output costs per 1M tokens for a model.
218
+
219
+ Uses litellm's cost_calculator (same as tracing/inline.py) for consistency.
220
+
221
+ Args:
222
+ model: The model name (e.g., "gpt-4o" or "anthropic/claude-3-opus-20240229")
223
+
224
+ Returns:
225
+ Tuple of (input_cost, output_cost) per 1M tokens, or None if not found.
226
+ """
227
+ try:
228
+ costs = cost_calculator.cost_per_token(
229
+ model=model,
230
+ prompt_tokens=1_000_000,
231
+ completion_tokens=1_000_000,
232
+ )
233
+ if costs:
234
+ input_cost, output_cost = costs
235
+ if input_cost > 0 or output_cost > 0:
236
+ return (input_cost, output_cost)
237
+ except Exception:
238
+ pass
239
+ return None
240
+
241
+
242
+ def _build_model_metadata() -> Dict[str, Dict[str, Dict[str, float]]]:
243
+ """
244
+ Build metadata dictionary with costs for all supported models.
245
+
246
+ Returns:
247
+ Nested dict: {provider: {model: {"input": cost, "output": cost}}}
248
+ """
249
+ metadata: Dict[str, Dict[str, Dict[str, float]]] = {}
250
+
251
+ for provider, models in supported_llm_models.items():
252
+ metadata[provider] = {}
253
+ for model in models:
254
+ costs = _get_model_costs(model)
255
+ if costs:
256
+ metadata[provider][model] = {
257
+ "input": costs[0],
258
+ "output": costs[1],
259
+ }
260
+
261
+ return metadata
262
+
263
+
264
+ model_metadata = _build_model_metadata()
265
+
203
266
  model_to_provider_mapping = {
204
267
  model: provider
205
268
  for provider, models in supported_llm_models.items()