agenta 0.62.3__tar.gz → 0.62.9__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 (422) hide show
  1. {agenta-0.62.3 → agenta-0.62.9}/PKG-INFO +8 -8
  2. {agenta-0.62.3 → agenta-0.62.9}/README.md +7 -7
  3. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/agenta_init.py +9 -7
  4. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/assets.py +1 -0
  5. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/decorators/routing.py +2 -0
  6. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/litellm/litellm.py +12 -0
  7. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/secrets.py +35 -19
  8. agenta-0.62.9/agenta/sdk/middleware/vault.py +333 -0
  9. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/tracing/exporters.py +4 -4
  10. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/types.py +11 -0
  11. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/helpers.py +13 -12
  12. {agenta-0.62.3 → agenta-0.62.9}/pyproject.toml +1 -1
  13. agenta-0.62.3/agenta/sdk/middleware/vault.py +0 -138
  14. {agenta-0.62.3 → agenta-0.62.9}/agenta/__init__.py +0 -0
  15. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/Readme.md +0 -0
  16. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/__init__.py +0 -0
  17. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/__init__.py +0 -0
  18. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/access_control/__init__.py +0 -0
  19. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/access_control/client.py +0 -0
  20. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/access_control/raw_client.py +0 -0
  21. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/admin/__init__.py +0 -0
  22. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/admin/client.py +0 -0
  23. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/admin/raw_client.py +0 -0
  24. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/api_keys/__init__.py +0 -0
  25. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/api_keys/client.py +0 -0
  26. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/api_keys/raw_client.py +0 -0
  27. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/apps/__init__.py +0 -0
  28. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/apps/client.py +0 -0
  29. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/apps/raw_client.py +0 -0
  30. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/bases/__init__.py +0 -0
  31. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/bases/client.py +0 -0
  32. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/bases/raw_client.py +0 -0
  33. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/billing/__init__.py +0 -0
  34. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/billing/client.py +0 -0
  35. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/billing/raw_client.py +0 -0
  36. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/client.py +0 -0
  37. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/configs/__init__.py +0 -0
  38. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/configs/client.py +0 -0
  39. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/configs/raw_client.py +0 -0
  40. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/containers/__init__.py +0 -0
  41. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/containers/client.py +0 -0
  42. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/containers/raw_client.py +0 -0
  43. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/__init__.py +0 -0
  44. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/api_error.py +0 -0
  45. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/client_wrapper.py +0 -0
  46. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/datetime_utils.py +0 -0
  47. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/file.py +0 -0
  48. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/force_multipart.py +0 -0
  49. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/http_client.py +0 -0
  50. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/http_response.py +0 -0
  51. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/jsonable_encoder.py +0 -0
  52. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/pydantic_utilities.py +0 -0
  53. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/query_encoder.py +0 -0
  54. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/remove_none_from_dict.py +0 -0
  55. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/request_options.py +0 -0
  56. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/core/serialization.py +0 -0
  57. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/environment.py +0 -0
  58. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/environments/__init__.py +0 -0
  59. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/environments/client.py +0 -0
  60. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/environments/raw_client.py +0 -0
  61. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/errors/__init__.py +0 -0
  62. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/errors/unprocessable_entity_error.py +0 -0
  63. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/evals/__init__.py +0 -0
  64. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/evals/client.py +0 -0
  65. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/evals/raw_client.py +0 -0
  66. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/evaluations/__init__.py +0 -0
  67. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/evaluations/client.py +0 -0
  68. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/evaluations/raw_client.py +0 -0
  69. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/evaluators/__init__.py +0 -0
  70. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/evaluators/client.py +0 -0
  71. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/evaluators/raw_client.py +0 -0
  72. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/human_evaluations/__init__.py +0 -0
  73. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/human_evaluations/client.py +0 -0
  74. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/human_evaluations/raw_client.py +0 -0
  75. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/observability/__init__.py +0 -0
  76. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/observability/client.py +0 -0
  77. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/observability/raw_client.py +0 -0
  78. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/observability/types/__init__.py +0 -0
  79. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/observability/types/fetch_trace_by_id_request_trace_id.py +0 -0
  80. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/observability/types/fetch_trace_by_id_response.py +0 -0
  81. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/observability/types/query_analytics_response.py +0 -0
  82. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/observability/types/query_traces_response.py +0 -0
  83. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/organization/__init__.py +0 -0
  84. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/organization/client.py +0 -0
  85. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/organization/raw_client.py +0 -0
  86. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/raw_client.py +0 -0
  87. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/scopes/__init__.py +0 -0
  88. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/scopes/client.py +0 -0
  89. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/scopes/raw_client.py +0 -0
  90. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/testsets/__init__.py +0 -0
  91. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/testsets/client.py +0 -0
  92. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/testsets/raw_client.py +0 -0
  93. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/testsets/types/__init__.py +0 -0
  94. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/testsets/types/create_testset_from_file_request_file_type.py +0 -0
  95. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/testsets/types/fetch_testset_to_file_request_file_type.py +0 -0
  96. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/testsets/types/update_testset_from_file_request_file_type.py +0 -0
  97. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/tracing/__init__.py +0 -0
  98. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/tracing/client.py +0 -0
  99. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/tracing/raw_client.py +0 -0
  100. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/tracing/types/__init__.py +0 -0
  101. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/tracing/types/fetch_trace_request_trace_id.py +0 -0
  102. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/tracing/types/remove_trace_request_trace_id.py +0 -0
  103. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/__init__.py +0 -0
  104. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/account_request.py +0 -0
  105. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/account_response.py +0 -0
  106. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/agenta_node_dto.py +0 -0
  107. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/agenta_node_dto_nodes_value.py +0 -0
  108. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/agenta_nodes_response.py +0 -0
  109. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/agenta_root_dto.py +0 -0
  110. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/agenta_roots_response.py +0 -0
  111. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/agenta_tree_dto.py +0 -0
  112. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/agenta_trees_response.py +0 -0
  113. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/aggregated_result.py +0 -0
  114. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/aggregated_result_evaluator_config.py +0 -0
  115. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/analytics_response.py +0 -0
  116. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation.py +0 -0
  117. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation_create.py +0 -0
  118. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation_edit.py +0 -0
  119. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation_kind.py +0 -0
  120. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation_link.py +0 -0
  121. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation_link_response.py +0 -0
  122. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation_query.py +0 -0
  123. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation_query_request.py +0 -0
  124. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation_reference.py +0 -0
  125. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation_references.py +0 -0
  126. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation_response.py +0 -0
  127. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotation_source.py +0 -0
  128. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/annotations_response.py +0 -0
  129. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/app.py +0 -0
  130. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/app_variant_response.py +0 -0
  131. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/app_variant_revision.py +0 -0
  132. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/artifact.py +0 -0
  133. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/base_output.py +0 -0
  134. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/body_fetch_workflow_revision.py +0 -0
  135. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/body_import_testset.py +0 -0
  136. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/bucket_dto.py +0 -0
  137. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/collect_status_response.py +0 -0
  138. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/config_db.py +0 -0
  139. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/config_dto.py +0 -0
  140. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/config_response_model.py +0 -0
  141. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/correct_answer.py +0 -0
  142. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/create_app_output.py +0 -0
  143. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/custom_model_settings_dto.py +0 -0
  144. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/custom_provider_dto.py +0 -0
  145. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/custom_provider_kind.py +0 -0
  146. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/custom_provider_settings_dto.py +0 -0
  147. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/data.py +0 -0
  148. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/delete_evaluation.py +0 -0
  149. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/environment_output.py +0 -0
  150. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/environment_output_extended.py +0 -0
  151. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/environment_revision.py +0 -0
  152. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/error.py +0 -0
  153. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluation.py +0 -0
  154. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluation_scenario.py +0 -0
  155. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluation_scenario_input.py +0 -0
  156. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluation_scenario_output.py +0 -0
  157. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluation_scenario_result.py +0 -0
  158. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluation_status_enum.py +0 -0
  159. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluation_type.py +0 -0
  160. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluator.py +0 -0
  161. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluator_config.py +0 -0
  162. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluator_flags.py +0 -0
  163. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluator_mapping_output_interface.py +0 -0
  164. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluator_output_interface.py +0 -0
  165. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluator_query.py +0 -0
  166. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluator_query_request.py +0 -0
  167. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluator_request.py +0 -0
  168. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluator_response.py +0 -0
  169. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/evaluators_response.py +0 -0
  170. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/exception_dto.py +0 -0
  171. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/extended_o_tel_tracing_response.py +0 -0
  172. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/focus.py +0 -0
  173. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/format.py +0 -0
  174. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/full_json_input.py +0 -0
  175. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/full_json_output.py +0 -0
  176. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/get_config_response.py +0 -0
  177. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/header.py +0 -0
  178. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/http_validation_error.py +0 -0
  179. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/human_evaluation.py +0 -0
  180. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/human_evaluation_scenario.py +0 -0
  181. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/human_evaluation_scenario_input.py +0 -0
  182. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/human_evaluation_scenario_output.py +0 -0
  183. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/invite_request.py +0 -0
  184. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/legacy_analytics_response.py +0 -0
  185. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/legacy_data_point.py +0 -0
  186. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/legacy_evaluator.py +0 -0
  187. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/legacy_scope_request.py +0 -0
  188. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/legacy_scopes_response.py +0 -0
  189. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/legacy_subscription_request.py +0 -0
  190. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/legacy_user_request.py +0 -0
  191. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/legacy_user_response.py +0 -0
  192. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/lifecycle_dto.py +0 -0
  193. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/link_dto.py +0 -0
  194. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/list_api_keys_response.py +0 -0
  195. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/llm_run_rate_limit.py +0 -0
  196. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/meta_request.py +0 -0
  197. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/metrics_dto.py +0 -0
  198. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/new_testset.py +0 -0
  199. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/node_dto.py +0 -0
  200. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/node_type.py +0 -0
  201. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_context_dto.py +0 -0
  202. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_event.py +0 -0
  203. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_event_dto.py +0 -0
  204. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_extra_dto.py +0 -0
  205. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_flat_span.py +0 -0
  206. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_flat_span_input_end_time.py +0 -0
  207. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_flat_span_input_start_time.py +0 -0
  208. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_flat_span_output_end_time.py +0 -0
  209. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_flat_span_output_start_time.py +0 -0
  210. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_link.py +0 -0
  211. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_link_dto.py +0 -0
  212. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_links_response.py +0 -0
  213. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_span.py +0 -0
  214. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_span_dto.py +0 -0
  215. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_span_input_end_time.py +0 -0
  216. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_span_input_spans_value.py +0 -0
  217. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_span_input_start_time.py +0 -0
  218. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_span_kind.py +0 -0
  219. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_span_output_end_time.py +0 -0
  220. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_span_output_spans_value.py +0 -0
  221. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_span_output_start_time.py +0 -0
  222. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_spans_tree.py +0 -0
  223. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_spans_tree_input_spans_value.py +0 -0
  224. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_spans_tree_output_spans_value.py +0 -0
  225. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_status_code.py +0 -0
  226. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_tracing_data_response.py +0 -0
  227. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_tracing_request.py +0 -0
  228. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/o_tel_tracing_response.py +0 -0
  229. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/organization.py +0 -0
  230. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/organization_details.py +0 -0
  231. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/organization_membership_request.py +0 -0
  232. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/organization_output.py +0 -0
  233. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/organization_request.py +0 -0
  234. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/parent_dto.py +0 -0
  235. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/permission.py +0 -0
  236. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/plan.py +0 -0
  237. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/project_membership_request.py +0 -0
  238. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/project_request.py +0 -0
  239. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/project_scope.py +0 -0
  240. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/projects_response.py +0 -0
  241. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/recursive_types.py +0 -0
  242. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/reference.py +0 -0
  243. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/reference_dto.py +0 -0
  244. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/reference_request_model.py +0 -0
  245. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/result.py +0 -0
  246. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/role.py +0 -0
  247. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/root_dto.py +0 -0
  248. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/scopes_response_model.py +0 -0
  249. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/score.py +0 -0
  250. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/secret_dto.py +0 -0
  251. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/secret_kind.py +0 -0
  252. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/secret_response_dto.py +0 -0
  253. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/simple_evaluation_output.py +0 -0
  254. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/span_dto.py +0 -0
  255. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/span_dto_nodes_value.py +0 -0
  256. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/standard_provider_dto.py +0 -0
  257. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/standard_provider_kind.py +0 -0
  258. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/standard_provider_settings_dto.py +0 -0
  259. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/status_code.py +0 -0
  260. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/status_dto.py +0 -0
  261. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/tags_request.py +0 -0
  262. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/testcase_response.py +0 -0
  263. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/testset.py +0 -0
  264. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/testset_output_response.py +0 -0
  265. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/testset_request.py +0 -0
  266. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/testset_response.py +0 -0
  267. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/testset_simple_response.py +0 -0
  268. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/testsets_response.py +0 -0
  269. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/time_dto.py +0 -0
  270. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/timestamp.py +0 -0
  271. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/tree_dto.py +0 -0
  272. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/tree_type.py +0 -0
  273. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/update_app_output.py +0 -0
  274. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/user_request.py +0 -0
  275. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/validation_error.py +0 -0
  276. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/validation_error_loc_item.py +0 -0
  277. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_artifact.py +0 -0
  278. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_data.py +0 -0
  279. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_flags.py +0 -0
  280. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_request.py +0 -0
  281. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_response.py +0 -0
  282. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_revision.py +0 -0
  283. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_revision_request.py +0 -0
  284. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_revision_response.py +0 -0
  285. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_revisions_response.py +0 -0
  286. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_variant.py +0 -0
  287. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_variant_request.py +0 -0
  288. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_variant_response.py +0 -0
  289. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflow_variants_response.py +0 -0
  290. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workflows_response.py +0 -0
  291. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workspace.py +0 -0
  292. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workspace_member_response.py +0 -0
  293. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workspace_membership_request.py +0 -0
  294. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workspace_permission.py +0 -0
  295. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workspace_request.py +0 -0
  296. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workspace_response.py +0 -0
  297. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workspace_role.py +0 -0
  298. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/types/workspace_role_response.py +0 -0
  299. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/variants/__init__.py +0 -0
  300. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/variants/client.py +0 -0
  301. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/variants/raw_client.py +0 -0
  302. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/variants/types/__init__.py +0 -0
  303. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/variants/types/add_variant_from_base_and_config_response.py +0 -0
  304. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/vault/__init__.py +0 -0
  305. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/vault/client.py +0 -0
  306. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/vault/raw_client.py +0 -0
  307. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/workflows/__init__.py +0 -0
  308. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/workflows/client.py +0 -0
  309. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/workflows/raw_client.py +0 -0
  310. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/workspace/__init__.py +0 -0
  311. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/workspace/client.py +0 -0
  312. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/backend/workspace/raw_client.py +0 -0
  313. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/client.py +0 -0
  314. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/types/provider_key_dto.py~HEAD +0 -0
  315. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/types/provider_key_dto.py~feat_model-registry +0 -0
  316. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/types/provider_kind.py~HEAD +0 -0
  317. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/types/provider_kind.py~feat_model-registry +0 -0
  318. {agenta-0.62.3 → agenta-0.62.9}/agenta/client/types.py +0 -0
  319. {agenta-0.62.3 → agenta-0.62.9}/agenta/config.py +0 -0
  320. {agenta-0.62.3 → agenta-0.62.9}/agenta/config.toml +0 -0
  321. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/__init__.py +0 -0
  322. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/context/__init__.py +0 -0
  323. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/context/running.py +0 -0
  324. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/context/serving.py +0 -0
  325. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/context/tracing.py +0 -0
  326. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/contexts/__init__.py +0 -0
  327. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/contexts/routing.py +0 -0
  328. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/contexts/running.py +0 -0
  329. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/contexts/tracing.py +0 -0
  330. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/decorators/__init__.py +0 -0
  331. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/decorators/running.py +0 -0
  332. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/decorators/serving.py +0 -0
  333. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/decorators/tracing.py +0 -0
  334. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/__init__.py +0 -0
  335. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/running/__init__.py +0 -0
  336. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/running/registry.py +0 -0
  337. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/running/utils.py +0 -0
  338. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/tracing/__init__.py +0 -0
  339. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/tracing/attributes.py +0 -0
  340. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/tracing/conventions.py +0 -0
  341. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/tracing/exporters.py +0 -0
  342. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/tracing/inline.py +0 -0
  343. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/tracing/processors.py +0 -0
  344. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/tracing/propagation.py +0 -0
  345. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/tracing/spans.py +0 -0
  346. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/engines/tracing/tracing.py +0 -0
  347. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/evaluations/__init__.py +0 -0
  348. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/evaluations/metrics.py +0 -0
  349. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/evaluations/preview/__init__.py +0 -0
  350. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/evaluations/preview/evaluate.py +0 -0
  351. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/evaluations/preview/utils.py +0 -0
  352. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/evaluations/results.py +0 -0
  353. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/evaluations/runs.py +0 -0
  354. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/evaluations/scenarios.py +0 -0
  355. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/litellm/__init__.py +0 -0
  356. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/litellm/mockllm.py +0 -0
  357. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/litellm/mocks/__init__.py +0 -0
  358. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/__init__.py +0 -0
  359. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/applications.py +0 -0
  360. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/apps.py +0 -0
  361. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/config.py +0 -0
  362. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/deployment.py +0 -0
  363. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/evaluations.py +0 -0
  364. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/evaluators.py +0 -0
  365. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/shared.py +0 -0
  366. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/testsets.py +0 -0
  367. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/variant.py +0 -0
  368. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/managers/vault.py +0 -0
  369. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middleware/__init__.py +0 -0
  370. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middleware/auth.py +0 -0
  371. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middleware/config.py +0 -0
  372. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middleware/cors.py +0 -0
  373. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middleware/inline.py +0 -0
  374. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middleware/mock.py +0 -0
  375. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middleware/otel.py +0 -0
  376. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middlewares/__init__.py +0 -0
  377. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middlewares/routing/__init__.py +0 -0
  378. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middlewares/routing/auth.py +0 -0
  379. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middlewares/routing/cors.py +0 -0
  380. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middlewares/routing/otel.py +0 -0
  381. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middlewares/running/__init__.py +0 -0
  382. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middlewares/running/normalizer.py +0 -0
  383. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middlewares/running/resolver.py +0 -0
  384. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/middlewares/running/vault.py +0 -0
  385. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/models/__init__.py +0 -0
  386. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/models/blobs.py +0 -0
  387. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/models/evaluations.py +0 -0
  388. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/models/git.py +0 -0
  389. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/models/shared.py +0 -0
  390. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/models/testsets.py +0 -0
  391. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/models/tracing.py +0 -0
  392. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/models/workflows.py +0 -0
  393. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/router.py +0 -0
  394. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/tracing/__init__.py +0 -0
  395. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/tracing/attributes.py +0 -0
  396. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/tracing/conventions.py +0 -0
  397. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/tracing/inline.py +0 -0
  398. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/tracing/processors.py +0 -0
  399. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/tracing/propagation.py +0 -0
  400. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/tracing/spans.py +0 -0
  401. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/tracing/tracing.py +0 -0
  402. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/__init__.py +0 -0
  403. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/cache.py +0 -0
  404. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/client.py +0 -0
  405. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/constants.py +0 -0
  406. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/costs.py +0 -0
  407. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/exceptions.py +0 -0
  408. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/globals.py +0 -0
  409. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/logging.py +0 -0
  410. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/otel.py +0 -0
  411. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/preinit.py +0 -0
  412. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/references.py +0 -0
  413. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/singleton.py +0 -0
  414. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/utils/timing.py +0 -0
  415. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/workflows/__init__.py +0 -0
  416. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/workflows/builtin.py +0 -0
  417. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/workflows/configurations.py +0 -0
  418. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/workflows/errors.py +0 -0
  419. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/workflows/handlers.py +0 -0
  420. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/workflows/interfaces.py +0 -0
  421. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/workflows/sandbox.py +0 -0
  422. {agenta-0.62.3 → agenta-0.62.9}/agenta/sdk/workflows/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agenta
3
- Version: 0.62.3
3
+ Version: 0.62.9
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
@@ -61,9 +61,9 @@ Description-Content-Type: text/markdown
61
61
  <div align="center" >
62
62
  <a href="https://cloud.agenta.ai?utm_source=github&utm_medium=referral&utm_campaign=readme">
63
63
  <picture >
64
- <source media="(prefers-color-scheme: dark)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/9a4fde42-c96c-4ec2-b8d1-c8c0e3851a00/large" >
65
- <source media="(prefers-color-scheme: light)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/98140352-14c0-4db1-bafb-a1e8d271d500/large" >
66
- <img alt="Shows the logo of agenta" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/98140352-14c0-4db1-bafb-a1e8d271d500/large" >
64
+ <source media="(prefers-color-scheme: dark)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
65
+ <source media="(prefers-color-scheme: light)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
66
+ <img alt="Shows the logo of agenta" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
67
67
  </picture>
68
68
  </a>
69
69
  </div>
@@ -155,10 +155,10 @@ Get visibility into your LLM applications in production.
155
155
 
156
156
  ## 📸 Screenshots
157
157
 
158
- <img alt="Playground" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/e7d16967-d564-4148-3615-03bfe2a29d00/large" />
159
- <img alt="Prompt Management" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/b4210a13-b41e-4dfd-d383-4286fb011e00/large" />
160
- <img alt="Evaluation" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/4b1c62b9-ff6e-4bd1-4c8d-de59b8485e00/large" />
161
- <img alt="Observability" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/5c764759-e525-499e-544a-1077c45e9600/large" />
158
+ <img alt="Playground" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/a4f67ac4-1acc-40c6-7a1a-5616eee7bb00/large" />
159
+ <img alt="Prompt Management" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/65f697d0-3221-4e3c-7232-f350b1976a00/large" />
160
+ <img alt="Evaluation" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/19b5b77e-6945-4419-15b9-cfea197e1300/large" />
161
+ <img alt="Observability" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/efc8a24c-2a2a-427c-f285-7d8b41200700/large" />
162
162
 
163
163
  ## 🚀 Getting Started
164
164
 
@@ -16,9 +16,9 @@
16
16
  <div align="center" >
17
17
  <a href="https://cloud.agenta.ai?utm_source=github&utm_medium=referral&utm_campaign=readme">
18
18
  <picture >
19
- <source media="(prefers-color-scheme: dark)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/9a4fde42-c96c-4ec2-b8d1-c8c0e3851a00/large" >
20
- <source media="(prefers-color-scheme: light)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/98140352-14c0-4db1-bafb-a1e8d271d500/large" >
21
- <img alt="Shows the logo of agenta" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/98140352-14c0-4db1-bafb-a1e8d271d500/large" >
19
+ <source media="(prefers-color-scheme: dark)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
20
+ <source media="(prefers-color-scheme: light)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
21
+ <img alt="Shows the logo of agenta" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
22
22
  </picture>
23
23
  </a>
24
24
  </div>
@@ -110,10 +110,10 @@ Get visibility into your LLM applications in production.
110
110
 
111
111
  ## 📸 Screenshots
112
112
 
113
- <img alt="Playground" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/e7d16967-d564-4148-3615-03bfe2a29d00/large" />
114
- <img alt="Prompt Management" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/b4210a13-b41e-4dfd-d383-4286fb011e00/large" />
115
- <img alt="Evaluation" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/4b1c62b9-ff6e-4bd1-4c8d-de59b8485e00/large" />
116
- <img alt="Observability" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/5c764759-e525-499e-544a-1077c45e9600/large" />
113
+ <img alt="Playground" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/a4f67ac4-1acc-40c6-7a1a-5616eee7bb00/large" />
114
+ <img alt="Prompt Management" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/65f697d0-3221-4e3c-7232-f350b1976a00/large" />
115
+ <img alt="Evaluation" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/19b5b77e-6945-4419-15b9-cfea197e1300/large" />
116
+ <img alt="Observability" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/efc8a24c-2a2a-427c-f285-7d8b41200700/large" />
117
117
 
118
118
  ## 🚀 Getting Started
119
119
 
@@ -85,28 +85,30 @@ class AgentaSingleton:
85
85
 
86
86
  _api_url = (
87
87
  api_url
88
+ or getenv("AGENTA_API_INTERNAL_URL")
88
89
  or getenv("AGENTA_API_URL")
89
90
  or config.get("api_url")
90
91
  or None # NO FALLBACK
91
92
  )
92
93
 
93
94
  if _api_url:
95
+ _api_url = parse_url(url=_api_url)
94
96
  _host = _api_url.rsplit("/api", 1)[0]
95
-
96
- if _host and not _api_url:
97
+ elif _host:
98
+ _host = parse_url(url=_host)
97
99
  _api_url = _host + "/api"
98
100
 
99
101
  try:
100
- assert _host and isinstance(_host, str), (
101
- "Host is required. Please provide a valid host or set AGENTA_HOST environment variable."
102
+ 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."
102
104
  )
103
- self.host = parse_url(url=_host)
104
- self.api_url = self.host + "/api"
105
+ self.host = _host
106
+ self.api_url = _api_url
105
107
  except AssertionError as e:
106
108
  log.error(str(e))
107
109
  raise
108
110
  except Exception as e:
109
- log.error(f"Failed to parse host URL '{_host}': {e}")
111
+ log.error(f"Failed to parse API URL '{_api_url}': {e}")
110
112
  raise
111
113
 
112
114
  self.api_key = (
@@ -27,6 +27,7 @@ supported_llm_models = {
27
27
  "deepinfra/mistralai/Mistral-7B-Instruct-v0.1",
28
28
  ],
29
29
  "gemini": [
30
+ "gemini/gemini-3-pro-preview",
30
31
  "gemini/gemini-2.5-pro",
31
32
  "gemini/gemini-2.5-pro-preview-05-06",
32
33
  "gemini/gemini-2.5-flash",
@@ -223,10 +223,12 @@ class route:
223
223
 
224
224
  async def invoke_endpoint(req: Request, request: WorkflowServiceRequest):
225
225
  credentials = req.state.auth.get("credentials")
226
+ secrets = req.state.auth.get("secrets")
226
227
 
227
228
  try:
228
229
  response = await workflow.invoke(
229
230
  request=request,
231
+ secrets=secrets,
230
232
  credentials=credentials,
231
233
  )
232
234
 
@@ -193,6 +193,9 @@ def litellm_handler():
193
193
 
194
194
  span.end()
195
195
 
196
+ # Clean up span from dictionary to prevent memory leak
197
+ del self.span[litellm_call_id]
198
+
196
199
  def log_failure_event(
197
200
  self,
198
201
  kwargs,
@@ -221,6 +224,9 @@ def litellm_handler():
221
224
 
222
225
  span.end()
223
226
 
227
+ # Clean up span from dictionary to prevent memory leak
228
+ del self.span[litellm_call_id]
229
+
224
230
  async def async_log_stream_event(
225
231
  self,
226
232
  kwargs,
@@ -321,6 +327,9 @@ def litellm_handler():
321
327
 
322
328
  span.end()
323
329
 
330
+ # Clean up span from dictionary to prevent memory leak
331
+ del self.span[litellm_call_id]
332
+
324
333
  async def async_log_failure_event(
325
334
  self,
326
335
  kwargs,
@@ -349,4 +358,7 @@ def litellm_handler():
349
358
 
350
359
  span.end()
351
360
 
361
+ # Clean up span from dictionary to prevent memory leak
362
+ del self.span[litellm_call_id]
363
+
352
364
  return LitellmHandler()
@@ -156,17 +156,17 @@ class SecretsManager:
156
156
  # STEP 1: get vault secrets from route context and transform it
157
157
  secrets = SecretsManager.get_from_route()
158
158
  if not secrets:
159
- return []
159
+ return None
160
160
 
161
161
  # STEP 1b: Parse secrets into usable format
162
162
  secrets = SecretsManager._parse_secrets(secrets=secrets)
163
163
 
164
164
  # STEP 2: check model exists in supported standard models
165
- provider = _standard_providers.get(model)
165
+ provider = _standard_providers.get(request_provider_model)
166
166
  if not provider:
167
167
  # check and get provider kind if model exists in custom provider models
168
168
  provider = SecretsManager._custom_providers_get(
169
- model=model,
169
+ model=request_provider_model,
170
170
  secrets=secrets,
171
171
  )
172
172
 
@@ -175,16 +175,19 @@ class SecretsManager:
175
175
  return None
176
176
 
177
177
  # STEP 2c: get litellm compatible model
178
- provider_slug = SecretsManager._custom_provider_slug_get(
179
- model=model, secrets=secrets
178
+ request_provider_slug = (
179
+ SecretsManager._custom_provider_slug_get(
180
+ model=request_provider_model, secrets=secrets
181
+ )
182
+ or ""
180
183
  )
181
- model = SecretsManager._get_compatible_model(
182
- model=model, provider_slug=provider_slug
184
+ compatible_provider_model = SecretsManager._get_compatible_model(
185
+ model=request_provider_model, provider_slug=request_provider_slug
183
186
  )
184
187
 
185
188
  # STEP 3: initialize provider settings and simplify provider name
186
- provider_settings = {"model": model}
187
- provider_name = re.sub(
189
+ provider_settings = dict(model=compatible_provider_model)
190
+ request_provider_kind = re.sub(
188
191
  r"[\s-]+", "", provider.lower()
189
192
  ) # normalizing other special characters too (azure-openai)
190
193
 
@@ -196,25 +199,35 @@ class SecretsManager:
196
199
  # i). Extract API key if present
197
200
  # (for standard models -- openai/anthropic/gemini, etc)
198
201
  if secret.get("kind") == "provider_key":
199
- provider_kind = secret_data.get("kind", "")
202
+ secret_provider_kind = secret_data.get("kind", "")
200
203
 
201
- if provider_kind == provider_name:
204
+ if request_provider_kind == secret_provider_kind:
202
205
  if "key" in provider_info:
203
206
  provider_settings["api_key"] = provider_info["key"]
204
207
  continue
205
208
 
206
209
  # ii). Extract Credentials if present
207
- # (for custom providers -- aws bedrock/sagemaker, vertexai, etc)
210
+ # (for custom providers -- aws bedrock/sagemaker, vertex_ai, etc)
208
211
  elif secret.get("kind") == "custom_provider":
209
- provider_kind = provider_info.get("kind", "").lower().replace(" ", "")
210
- provider_slug = secret_data.get("provider_slug", "")
211
- provider_extras = provider_info.get("extras", {})
212
+ secret_provider_kind = (
213
+ provider_info.get("kind", "").lower().replace(" ", "")
214
+ )
215
+ secret_provider_slug = secret_data.get("provider_slug", "")
216
+ secret_provider_models = secret_data.get("models", "")
217
+ secret_provider_extras = provider_info.get("extras", {})
212
218
 
213
- if provider_kind == provider_name or provider_slug == provider_name:
214
- if provider_extras:
215
- provider_settings.update(provider_extras)
219
+ if (
220
+ request_provider_kind == secret_provider_kind
221
+ and request_provider_slug == secret_provider_slug
222
+ and request_provider_model in secret_provider_models
223
+ ):
224
+ if secret_provider_extras:
225
+ provider_settings.update(secret_provider_extras)
216
226
  continue
217
227
 
228
+ if len(provider_settings.keys()) <= 1:
229
+ return None
230
+
218
231
  return provider_settings
219
232
 
220
233
  @staticmethod
@@ -251,7 +264,7 @@ class SecretsManager:
251
264
  # STEP 1: get vault secrets from route context and transform it
252
265
  secrets = RunningContext.get().secrets
253
266
  if not secrets:
254
- return []
267
+ return None
255
268
 
256
269
  # STEP 1b: Parse secrets into usable format
257
270
  secrets = SecretsManager._parse_secrets(secrets=secrets)
@@ -320,4 +333,7 @@ class SecretsManager:
320
333
  provider_settings.update(secret_provider_extras)
321
334
  continue
322
335
 
336
+ if len(provider_settings.keys()) <= 1:
337
+ return None
338
+
323
339
  return provider_settings
@@ -0,0 +1,333 @@
1
+ from os import getenv
2
+ from json import dumps
3
+ from typing import Callable, Dict, Optional, List, Any
4
+
5
+ import httpx
6
+ from fastapi import FastAPI, Request
7
+ from starlette.middleware.base import BaseHTTPMiddleware
8
+
9
+ from agenta.sdk.utils.logging import get_module_logger
10
+ from agenta.sdk.utils.constants import TRUTHY
11
+ from agenta.sdk.utils.cache import TTLLRUCache
12
+ from agenta.sdk.utils.exceptions import suppress, display_exception
13
+ from agenta.client.backend.types import SecretDto as SecretDTO
14
+ from agenta.client.backend.types import (
15
+ StandardProviderDto as StandardProviderDTO,
16
+ StandardProviderSettingsDto as StandardProviderSettingsDTO,
17
+ )
18
+
19
+ import agenta as ag
20
+
21
+ log = get_module_logger(__name__)
22
+
23
+
24
+ AGENTA_RUNTIME_PREFIX = getenv("AGENTA_RUNTIME_PREFIX", "")
25
+
26
+ _ALWAYS_ALLOW_LIST = [
27
+ f"{AGENTA_RUNTIME_PREFIX}/health",
28
+ f"{AGENTA_RUNTIME_PREFIX}/openapi.json",
29
+ ]
30
+
31
+ _PROVIDER_KINDS = [
32
+ "openai",
33
+ "cohere",
34
+ "anyscale",
35
+ "deepinfra",
36
+ "alephalpha",
37
+ "groq",
38
+ "mistral",
39
+ "mistralai",
40
+ "anthropic",
41
+ "perplexityai",
42
+ "togetherai",
43
+ "openrouter",
44
+ "gemini",
45
+ ]
46
+
47
+ _AUTH_ENABLED = (
48
+ getenv("AGENTA_SERVICE_MIDDLEWARE_AUTH_ENABLED", "true").lower() in TRUTHY
49
+ )
50
+
51
+ _CACHE_ENABLED = (
52
+ getenv("AGENTA_SERVICE_MIDDLEWARE_CACHE_ENABLED", "true").lower() in TRUTHY
53
+ )
54
+
55
+ _cache = TTLLRUCache()
56
+
57
+
58
+ class DenyException(Exception):
59
+ def __init__(
60
+ self,
61
+ status_code: int = 403,
62
+ content: str = "Forbidden",
63
+ ) -> None:
64
+ super().__init__()
65
+
66
+ self.status_code = status_code
67
+ self.content = content
68
+
69
+
70
+ class VaultMiddleware(BaseHTTPMiddleware):
71
+ def __init__(self, app: FastAPI):
72
+ super().__init__(app)
73
+
74
+ self.host = ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.host
75
+
76
+ self.scope_type = ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.scope_type
77
+ self.scope_id = ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.scope_id
78
+
79
+ async def dispatch(
80
+ self,
81
+ request: Request,
82
+ call_next: Callable,
83
+ ):
84
+ request.state.vault = {}
85
+
86
+ with suppress():
87
+ secrets = await self._get_secrets(request)
88
+
89
+ request.state.vault = {"secrets": secrets}
90
+
91
+ return await call_next(request)
92
+
93
+ async def _get_secrets(self, request: Request) -> Optional[Dict]:
94
+ credentials = request.state.auth.get("credentials")
95
+
96
+ headers = None
97
+ if credentials:
98
+ headers = {"Authorization": credentials}
99
+
100
+ _hash = dumps(
101
+ {
102
+ "headers": headers,
103
+ },
104
+ sort_keys=True,
105
+ )
106
+
107
+ if _CACHE_ENABLED:
108
+ secrets_cache = _cache.get(_hash)
109
+
110
+ if secrets_cache:
111
+ secrets = secrets_cache.get("secrets")
112
+
113
+ return secrets
114
+
115
+ local_secrets: List[Dict[str, Any]] = []
116
+ allow_secrets = True
117
+
118
+ try:
119
+ if not request.url.path in _ALWAYS_ALLOW_LIST:
120
+ await self._allow_local_secrets(credentials)
121
+
122
+ for provider_kind in _PROVIDER_KINDS:
123
+ provider = provider_kind
124
+ key_name = f"{provider.upper()}_API_KEY"
125
+ key = getenv(key_name)
126
+
127
+ if not key:
128
+ continue
129
+
130
+ secret = SecretDTO(
131
+ kind="provider_key", # type: ignore
132
+ data=StandardProviderDTO(
133
+ kind=provider,
134
+ provider=StandardProviderSettingsDTO(key=key),
135
+ ),
136
+ )
137
+
138
+ local_secrets.append(secret.model_dump())
139
+ except DenyException as e: # pylint: disable=bare-except
140
+ log.warning(f"Agenta [secrets] {e.status_code}: {e.content}")
141
+ allow_secrets = False
142
+ except: # pylint: disable=bare-except
143
+ display_exception("Vault: Local Secrets Exception")
144
+
145
+ vault_secrets: List[Dict[str, Any]] = []
146
+
147
+ try:
148
+ async with httpx.AsyncClient() as client:
149
+ response = await client.get(
150
+ f"{self.host}/api/vault/v1/secrets/",
151
+ headers=headers,
152
+ )
153
+
154
+ if response.status_code != 200:
155
+ vault_secrets = []
156
+
157
+ else:
158
+ vault_secrets = response.json()
159
+ except: # pylint: disable=bare-except
160
+ display_exception("Vault: Vault Secrets Exception")
161
+
162
+ secrets = local_secrets + vault_secrets
163
+
164
+ standard_secrets = {}
165
+ custom_secrets = []
166
+
167
+ if local_secrets:
168
+ for secret in local_secrets:
169
+ standard_secrets[secret["data"]["kind"]] = secret # type: ignore
170
+
171
+ if vault_secrets:
172
+ for secret in vault_secrets:
173
+ if secret["kind"] == "provider_key": # type: ignore
174
+ standard_secrets[secret["data"]["kind"]] = secret # type: ignore
175
+ elif secret["kind"] == "custom_provider": # type: ignore
176
+ custom_secrets.append(secret)
177
+
178
+ standard_secrets = list(standard_secrets.values())
179
+
180
+ secrets = standard_secrets + custom_secrets
181
+
182
+ if not allow_secrets:
183
+ _cache.put(_hash, {"secrets": secrets})
184
+
185
+ return secrets
186
+
187
+ async def _allow_local_secrets(self, credentials):
188
+ try:
189
+ if not _AUTH_ENABLED:
190
+ return
191
+
192
+ if not credentials:
193
+ raise DenyException(
194
+ status_code=401,
195
+ content="Invalid credentials. Please check your credentials or login again.",
196
+ )
197
+
198
+ # HEADERS
199
+ headers = {"Authorization": credentials}
200
+ # PARAMS
201
+ params = {}
202
+ ## SCOPE
203
+ if self.scope_type and self.scope_id:
204
+ params["scope_type"] = self.scope_type
205
+ params["scope_id"] = self.scope_id
206
+ ## ACTION
207
+ params["action"] = "view_secret"
208
+ ## RESOURCE
209
+ params["resource_type"] = "local_secrets"
210
+
211
+ _hash = dumps(
212
+ {
213
+ "headers": headers,
214
+ "params": params,
215
+ },
216
+ sort_keys=True,
217
+ )
218
+
219
+ access = None
220
+
221
+ if _CACHE_ENABLED:
222
+ access = _cache.get(_hash)
223
+
224
+ if isinstance(access, Exception):
225
+ raise access
226
+
227
+ try:
228
+ async with httpx.AsyncClient() as client:
229
+ try:
230
+ response = await client.get(
231
+ f"{self.host}/api/permissions/verify",
232
+ headers=headers,
233
+ params=params,
234
+ timeout=30.0,
235
+ )
236
+ except httpx.TimeoutException as exc:
237
+ # log.debug(f"Timeout error while verify secrets access: {exc}")
238
+ raise DenyException(
239
+ status_code=504,
240
+ content=f"Could not verify secrets access: connection to {self.host} timed out. Please check your network connection.",
241
+ ) from exc
242
+ except httpx.ConnectError as exc:
243
+ # log.debug(f"Connection error while verify secrets access: {exc}")
244
+ raise DenyException(
245
+ status_code=503,
246
+ content=f"Could not verify secrets access: connection to {self.host} failed. Please check if agenta is available.",
247
+ ) from exc
248
+ except httpx.NetworkError as exc:
249
+ # log.debug(f"Network error while verify secrets access: {exc}")
250
+ raise DenyException(
251
+ status_code=503,
252
+ content=f"Could not verify secrets access: connection to {self.host} failed. Please check your network connection.",
253
+ ) from exc
254
+ except httpx.HTTPError as exc:
255
+ # log.debug(f"HTTP error while verify secrets access: {exc}")
256
+ raise DenyException(
257
+ status_code=502,
258
+ content=f"Could not verify secrets access: connection to {self.host} failed. Please check if agenta is available.",
259
+ ) from exc
260
+
261
+ if response.status_code == 401:
262
+ # log.debug("Agenta returned 401 - Invalid credentials")
263
+ raise DenyException(
264
+ status_code=401,
265
+ content="Invalid credentials. Please check your credentials or login again.",
266
+ )
267
+ elif response.status_code == 403:
268
+ # log.debug("Agenta returned 403 - Permission denied")
269
+ raise DenyException(
270
+ status_code=403,
271
+ content="Out of credits. Please set your LLM provider API keys or contact support.",
272
+ )
273
+ elif response.status_code != 200:
274
+ # log.debug(
275
+ # f"Agenta returned {response.status_code} - Unexpected status code"
276
+ # )
277
+ raise DenyException(
278
+ status_code=500,
279
+ content=f"Could not verify secrets access: {self.host} returned unexpected status code {response.status_code}. Please try again later or contact support if the issue persists.",
280
+ )
281
+
282
+ try:
283
+ auth = response.json()
284
+ except ValueError as exc:
285
+ # log.debug(f"Agenta returned invalid JSON response: {exc}")
286
+ raise DenyException(
287
+ status_code=500,
288
+ content=f"Could not verify secrets access: {self.host} returned unexpected invalid JSON response. Please try again later or contact support if the issue persists.",
289
+ ) from exc
290
+
291
+ if not isinstance(auth, dict):
292
+ # log.debug(
293
+ # f"Agenta returned invalid response format: {type(auth)}"
294
+ # )
295
+ raise DenyException(
296
+ status_code=500,
297
+ content=f"Could not verify secrets access: {self.host} returned unexpected invalid response format. Please try again later or contact support if the issue persists.",
298
+ )
299
+
300
+ effect = auth.get("effect")
301
+
302
+ access = effect == "allow"
303
+
304
+ if effect != "allow":
305
+ # log.debug("Access denied by Agenta - effect: {effect}")
306
+ raise DenyException(
307
+ status_code=403,
308
+ content="Out of credits. Please set your LLM provider API keys or contact support.",
309
+ )
310
+
311
+ return
312
+
313
+ except DenyException as deny:
314
+ _cache.put(_hash, deny)
315
+
316
+ raise deny
317
+ except Exception as exc: # pylint: disable=bare-except
318
+ # log.debug(
319
+ # f"Unexpected error while verifying credentials (remote): {exc}"
320
+ # )
321
+ raise DenyException(
322
+ status_code=500,
323
+ content=f"Could not verify credentials: unexpected error - {str(exc)}. Please try again later or contact support if the issue persists.",
324
+ ) from exc
325
+
326
+ except DenyException as deny:
327
+ raise deny
328
+ except Exception as exc:
329
+ # log.debug(f"Unexpected error while verifying credentials (local): {exc}")
330
+ raise DenyException(
331
+ status_code=500,
332
+ content=f"Could not verify credentials: unexpected error - {str(exc)}. Please try again later or contact support if the issue persists.",
333
+ ) from exc
@@ -99,7 +99,7 @@ class OTLPExporter(OTLPSpanExporter):
99
99
 
100
100
  credentials = None
101
101
  if self.credentials:
102
- credentials = str(self.credentials.get(trace_id))
102
+ credentials = self.credentials.get(trace_id)
103
103
 
104
104
  if credentials not in grouped_spans:
105
105
  grouped_spans[credentials] = list()
@@ -158,11 +158,11 @@ class OTLPExporter(OTLPSpanExporter):
158
158
  # )
159
159
 
160
160
  if _ASYNC_EXPORT is True:
161
- # log.debug("[SPAN] [ASYNC.X]")
162
- thread = Thread(target=__export, daemon=True)
161
+ # log.debug("[SPAN] [ASYNC.X]", credentials=(credentials is not None))
162
+ thread = Thread(target=__export, daemon=False)
163
163
  thread.start()
164
164
  else:
165
- # log.debug("[SPAN] [ SYNC.X]")
165
+ # log.debug("[SPAN] [ SYNC.X]", credentials=(credentials is not None))
166
166
  return __export()
167
167
 
168
168
  except Exception as e:
@@ -421,6 +421,14 @@ class ModelConfig(BaseModel):
421
421
  le=2.0,
422
422
  description="Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far",
423
423
  )
424
+ reasoning_effort: Optional[Literal["none", "low", "medium", "high"]] = Field(
425
+ default=None,
426
+ description="Controls the reasoning effort for thinking models. Options: 'none' (cost-optimized, 0 tokens), 'low' (1024 tokens), 'medium' (2048 tokens), 'high' (4096 tokens)",
427
+ json_schema_extra={
428
+ "x-parameter": "choice",
429
+ "enum": ["none", "low", "medium", "high"],
430
+ },
431
+ )
424
432
  response_format: Optional[ResponseFormat] = Field(
425
433
  default=None,
426
434
  description="An object specifying the format that the model must output",
@@ -819,6 +827,9 @@ class PromptTemplate(BaseModel):
819
827
  if self.llm_config.presence_penalty is not None:
820
828
  kwargs["presence_penalty"] = self.llm_config.presence_penalty
821
829
 
830
+ if self.llm_config.reasoning_effort is not None:
831
+ kwargs["reasoning_effort"] = self.llm_config.reasoning_effort
832
+
822
833
  if self.llm_config.response_format:
823
834
  kwargs["response_format"] = self.llm_config.response_format.dict(
824
835
  by_alias=True