agenta 0.64.1__tar.gz → 0.69.6__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 (428) hide show
  1. {agenta-0.64.1 → agenta-0.69.6}/PKG-INFO +18 -22
  2. {agenta-0.64.1 → agenta-0.69.6}/agenta/__init__.py +66 -36
  3. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/testset_output_response.py +1 -0
  4. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/agenta_init.py +90 -12
  5. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/assets.py +16 -10
  6. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/tracing/tracing.py +2 -2
  7. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/evaluations/metrics.py +3 -3
  8. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middleware/otel.py +0 -3
  9. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middlewares/running/vault.py +1 -1
  10. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/models/evaluations.py +11 -3
  11. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/models/shared.py +1 -1
  12. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/tracing/exporters.py +1 -0
  13. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/tracing/processors.py +2 -7
  14. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/tracing/tracing.py +91 -2
  15. agenta-0.69.6/agenta/sdk/workflows/runners/__init__.py +3 -0
  16. agenta-0.69.6/agenta/sdk/workflows/runners/base.py +30 -0
  17. agenta-0.69.6/agenta/sdk/workflows/runners/daytona.py +268 -0
  18. agenta-0.69.6/agenta/sdk/workflows/runners/local.py +108 -0
  19. agenta-0.69.6/agenta/sdk/workflows/runners/registry.py +48 -0
  20. agenta-0.69.6/agenta/sdk/workflows/sandbox.py +55 -0
  21. agenta-0.69.6/pyproject.toml +63 -0
  22. agenta-0.64.1/agenta/sdk/workflows/sandbox.py +0 -118
  23. agenta-0.64.1/pyproject.toml +0 -68
  24. {agenta-0.64.1 → agenta-0.69.6}/README.md +0 -0
  25. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/Readme.md +0 -0
  26. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/__init__.py +0 -0
  27. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/__init__.py +0 -0
  28. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/access_control/__init__.py +0 -0
  29. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/access_control/client.py +0 -0
  30. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/access_control/raw_client.py +0 -0
  31. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/admin/__init__.py +0 -0
  32. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/admin/client.py +0 -0
  33. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/admin/raw_client.py +0 -0
  34. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/api_keys/__init__.py +0 -0
  35. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/api_keys/client.py +0 -0
  36. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/api_keys/raw_client.py +0 -0
  37. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/apps/__init__.py +0 -0
  38. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/apps/client.py +0 -0
  39. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/apps/raw_client.py +0 -0
  40. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/bases/__init__.py +0 -0
  41. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/bases/client.py +0 -0
  42. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/bases/raw_client.py +0 -0
  43. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/billing/__init__.py +0 -0
  44. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/billing/client.py +0 -0
  45. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/billing/raw_client.py +0 -0
  46. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/client.py +0 -0
  47. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/configs/__init__.py +0 -0
  48. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/configs/client.py +0 -0
  49. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/configs/raw_client.py +0 -0
  50. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/containers/__init__.py +0 -0
  51. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/containers/client.py +0 -0
  52. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/containers/raw_client.py +0 -0
  53. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/__init__.py +0 -0
  54. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/api_error.py +0 -0
  55. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/client_wrapper.py +0 -0
  56. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/datetime_utils.py +0 -0
  57. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/file.py +0 -0
  58. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/force_multipart.py +0 -0
  59. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/http_client.py +0 -0
  60. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/http_response.py +0 -0
  61. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/jsonable_encoder.py +0 -0
  62. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/pydantic_utilities.py +0 -0
  63. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/query_encoder.py +0 -0
  64. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/remove_none_from_dict.py +0 -0
  65. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/request_options.py +0 -0
  66. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/core/serialization.py +0 -0
  67. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/environment.py +0 -0
  68. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/environments/__init__.py +0 -0
  69. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/environments/client.py +0 -0
  70. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/environments/raw_client.py +0 -0
  71. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/errors/__init__.py +0 -0
  72. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/errors/unprocessable_entity_error.py +0 -0
  73. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/evals/__init__.py +0 -0
  74. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/evals/client.py +0 -0
  75. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/evals/raw_client.py +0 -0
  76. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/evaluations/__init__.py +0 -0
  77. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/evaluations/client.py +0 -0
  78. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/evaluations/raw_client.py +0 -0
  79. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/evaluators/__init__.py +0 -0
  80. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/evaluators/client.py +0 -0
  81. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/evaluators/raw_client.py +0 -0
  82. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/human_evaluations/__init__.py +0 -0
  83. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/human_evaluations/client.py +0 -0
  84. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/human_evaluations/raw_client.py +0 -0
  85. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/observability/__init__.py +0 -0
  86. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/observability/client.py +0 -0
  87. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/observability/raw_client.py +0 -0
  88. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/observability/types/__init__.py +0 -0
  89. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/observability/types/fetch_trace_by_id_request_trace_id.py +0 -0
  90. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/observability/types/fetch_trace_by_id_response.py +0 -0
  91. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/observability/types/query_analytics_response.py +0 -0
  92. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/observability/types/query_traces_response.py +0 -0
  93. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/organization/__init__.py +0 -0
  94. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/organization/client.py +0 -0
  95. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/organization/raw_client.py +0 -0
  96. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/raw_client.py +0 -0
  97. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/scopes/__init__.py +0 -0
  98. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/scopes/client.py +0 -0
  99. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/scopes/raw_client.py +0 -0
  100. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/testsets/__init__.py +0 -0
  101. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/testsets/client.py +0 -0
  102. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/testsets/raw_client.py +0 -0
  103. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/testsets/types/__init__.py +0 -0
  104. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/testsets/types/create_testset_from_file_request_file_type.py +0 -0
  105. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/testsets/types/fetch_testset_to_file_request_file_type.py +0 -0
  106. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/testsets/types/update_testset_from_file_request_file_type.py +0 -0
  107. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/tracing/__init__.py +0 -0
  108. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/tracing/client.py +0 -0
  109. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/tracing/raw_client.py +0 -0
  110. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/tracing/types/__init__.py +0 -0
  111. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/tracing/types/fetch_trace_request_trace_id.py +0 -0
  112. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/tracing/types/remove_trace_request_trace_id.py +0 -0
  113. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/__init__.py +0 -0
  114. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/account_request.py +0 -0
  115. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/account_response.py +0 -0
  116. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/agenta_node_dto.py +0 -0
  117. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/agenta_node_dto_nodes_value.py +0 -0
  118. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/agenta_nodes_response.py +0 -0
  119. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/agenta_root_dto.py +0 -0
  120. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/agenta_roots_response.py +0 -0
  121. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/agenta_tree_dto.py +0 -0
  122. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/agenta_trees_response.py +0 -0
  123. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/aggregated_result.py +0 -0
  124. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/aggregated_result_evaluator_config.py +0 -0
  125. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/analytics_response.py +0 -0
  126. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation.py +0 -0
  127. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation_create.py +0 -0
  128. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation_edit.py +0 -0
  129. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation_kind.py +0 -0
  130. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation_link.py +0 -0
  131. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation_link_response.py +0 -0
  132. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation_query.py +0 -0
  133. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation_query_request.py +0 -0
  134. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation_reference.py +0 -0
  135. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation_references.py +0 -0
  136. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation_response.py +0 -0
  137. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotation_source.py +0 -0
  138. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/annotations_response.py +0 -0
  139. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/app.py +0 -0
  140. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/app_variant_response.py +0 -0
  141. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/app_variant_revision.py +0 -0
  142. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/artifact.py +0 -0
  143. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/base_output.py +0 -0
  144. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/body_fetch_workflow_revision.py +0 -0
  145. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/body_import_testset.py +0 -0
  146. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/bucket_dto.py +0 -0
  147. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/collect_status_response.py +0 -0
  148. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/config_db.py +0 -0
  149. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/config_dto.py +0 -0
  150. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/config_response_model.py +0 -0
  151. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/correct_answer.py +0 -0
  152. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/create_app_output.py +0 -0
  153. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/custom_model_settings_dto.py +0 -0
  154. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/custom_provider_dto.py +0 -0
  155. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/custom_provider_kind.py +0 -0
  156. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/custom_provider_settings_dto.py +0 -0
  157. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/data.py +0 -0
  158. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/delete_evaluation.py +0 -0
  159. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/environment_output.py +0 -0
  160. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/environment_output_extended.py +0 -0
  161. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/environment_revision.py +0 -0
  162. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/error.py +0 -0
  163. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluation.py +0 -0
  164. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluation_scenario.py +0 -0
  165. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluation_scenario_input.py +0 -0
  166. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluation_scenario_output.py +0 -0
  167. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluation_scenario_result.py +0 -0
  168. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluation_status_enum.py +0 -0
  169. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluation_type.py +0 -0
  170. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluator.py +0 -0
  171. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluator_config.py +0 -0
  172. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluator_flags.py +0 -0
  173. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluator_mapping_output_interface.py +0 -0
  174. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluator_output_interface.py +0 -0
  175. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluator_query.py +0 -0
  176. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluator_query_request.py +0 -0
  177. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluator_request.py +0 -0
  178. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluator_response.py +0 -0
  179. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/evaluators_response.py +0 -0
  180. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/exception_dto.py +0 -0
  181. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/extended_o_tel_tracing_response.py +0 -0
  182. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/focus.py +0 -0
  183. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/format.py +0 -0
  184. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/full_json_input.py +0 -0
  185. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/full_json_output.py +0 -0
  186. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/get_config_response.py +0 -0
  187. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/header.py +0 -0
  188. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/http_validation_error.py +0 -0
  189. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/human_evaluation.py +0 -0
  190. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/human_evaluation_scenario.py +0 -0
  191. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/human_evaluation_scenario_input.py +0 -0
  192. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/human_evaluation_scenario_output.py +0 -0
  193. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/invite_request.py +0 -0
  194. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/legacy_analytics_response.py +0 -0
  195. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/legacy_data_point.py +0 -0
  196. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/legacy_evaluator.py +0 -0
  197. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/legacy_scope_request.py +0 -0
  198. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/legacy_scopes_response.py +0 -0
  199. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/legacy_subscription_request.py +0 -0
  200. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/legacy_user_request.py +0 -0
  201. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/legacy_user_response.py +0 -0
  202. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/lifecycle_dto.py +0 -0
  203. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/link_dto.py +0 -0
  204. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/list_api_keys_response.py +0 -0
  205. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/llm_run_rate_limit.py +0 -0
  206. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/meta_request.py +0 -0
  207. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/metrics_dto.py +0 -0
  208. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/new_testset.py +0 -0
  209. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/node_dto.py +0 -0
  210. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/node_type.py +0 -0
  211. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_context_dto.py +0 -0
  212. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_event.py +0 -0
  213. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_event_dto.py +0 -0
  214. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_extra_dto.py +0 -0
  215. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_flat_span.py +0 -0
  216. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_flat_span_input_end_time.py +0 -0
  217. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_flat_span_input_start_time.py +0 -0
  218. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_flat_span_output_end_time.py +0 -0
  219. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_flat_span_output_start_time.py +0 -0
  220. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_link.py +0 -0
  221. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_link_dto.py +0 -0
  222. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_links_response.py +0 -0
  223. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_span.py +0 -0
  224. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_span_dto.py +0 -0
  225. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_span_input_end_time.py +0 -0
  226. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_span_input_spans_value.py +0 -0
  227. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_span_input_start_time.py +0 -0
  228. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_span_kind.py +0 -0
  229. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_span_output_end_time.py +0 -0
  230. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_span_output_spans_value.py +0 -0
  231. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_span_output_start_time.py +0 -0
  232. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_spans_tree.py +0 -0
  233. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_spans_tree_input_spans_value.py +0 -0
  234. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_spans_tree_output_spans_value.py +0 -0
  235. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_status_code.py +0 -0
  236. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_tracing_data_response.py +0 -0
  237. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_tracing_request.py +0 -0
  238. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/o_tel_tracing_response.py +0 -0
  239. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/organization.py +0 -0
  240. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/organization_details.py +0 -0
  241. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/organization_membership_request.py +0 -0
  242. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/organization_output.py +0 -0
  243. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/organization_request.py +0 -0
  244. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/parent_dto.py +0 -0
  245. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/permission.py +0 -0
  246. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/plan.py +0 -0
  247. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/project_membership_request.py +0 -0
  248. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/project_request.py +0 -0
  249. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/project_scope.py +0 -0
  250. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/projects_response.py +0 -0
  251. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/recursive_types.py +0 -0
  252. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/reference.py +0 -0
  253. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/reference_dto.py +0 -0
  254. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/reference_request_model.py +0 -0
  255. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/result.py +0 -0
  256. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/role.py +0 -0
  257. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/root_dto.py +0 -0
  258. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/scopes_response_model.py +0 -0
  259. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/score.py +0 -0
  260. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/secret_dto.py +0 -0
  261. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/secret_kind.py +0 -0
  262. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/secret_response_dto.py +0 -0
  263. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/simple_evaluation_output.py +0 -0
  264. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/span_dto.py +0 -0
  265. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/span_dto_nodes_value.py +0 -0
  266. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/standard_provider_dto.py +0 -0
  267. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/standard_provider_kind.py +0 -0
  268. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/standard_provider_settings_dto.py +0 -0
  269. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/status_code.py +0 -0
  270. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/status_dto.py +0 -0
  271. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/tags_request.py +0 -0
  272. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/testcase_response.py +0 -0
  273. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/testset.py +0 -0
  274. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/testset_request.py +0 -0
  275. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/testset_response.py +0 -0
  276. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/testset_simple_response.py +0 -0
  277. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/testsets_response.py +0 -0
  278. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/time_dto.py +0 -0
  279. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/timestamp.py +0 -0
  280. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/tree_dto.py +0 -0
  281. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/tree_type.py +0 -0
  282. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/update_app_output.py +0 -0
  283. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/user_request.py +0 -0
  284. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/validation_error.py +0 -0
  285. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/validation_error_loc_item.py +0 -0
  286. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_artifact.py +0 -0
  287. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_data.py +0 -0
  288. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_flags.py +0 -0
  289. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_request.py +0 -0
  290. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_response.py +0 -0
  291. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_revision.py +0 -0
  292. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_revision_request.py +0 -0
  293. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_revision_response.py +0 -0
  294. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_revisions_response.py +0 -0
  295. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_variant.py +0 -0
  296. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_variant_request.py +0 -0
  297. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_variant_response.py +0 -0
  298. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflow_variants_response.py +0 -0
  299. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workflows_response.py +0 -0
  300. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workspace.py +0 -0
  301. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workspace_member_response.py +0 -0
  302. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workspace_membership_request.py +0 -0
  303. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workspace_permission.py +0 -0
  304. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workspace_request.py +0 -0
  305. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workspace_response.py +0 -0
  306. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workspace_role.py +0 -0
  307. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/types/workspace_role_response.py +0 -0
  308. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/variants/__init__.py +0 -0
  309. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/variants/client.py +0 -0
  310. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/variants/raw_client.py +0 -0
  311. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/variants/types/__init__.py +0 -0
  312. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/variants/types/add_variant_from_base_and_config_response.py +0 -0
  313. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/vault/__init__.py +0 -0
  314. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/vault/client.py +0 -0
  315. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/vault/raw_client.py +0 -0
  316. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/workflows/__init__.py +0 -0
  317. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/workflows/client.py +0 -0
  318. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/workflows/raw_client.py +0 -0
  319. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/workspace/__init__.py +0 -0
  320. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/workspace/client.py +0 -0
  321. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/backend/workspace/raw_client.py +0 -0
  322. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/client.py +0 -0
  323. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/types/provider_key_dto.py~HEAD +0 -0
  324. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/types/provider_key_dto.py~feat_model-registry +0 -0
  325. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/types/provider_kind.py~HEAD +0 -0
  326. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/types/provider_kind.py~feat_model-registry +0 -0
  327. {agenta-0.64.1 → agenta-0.69.6}/agenta/client/types.py +0 -0
  328. {agenta-0.64.1 → agenta-0.69.6}/agenta/config.py +0 -0
  329. {agenta-0.64.1 → agenta-0.69.6}/agenta/config.toml +0 -0
  330. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/__init__.py +0 -0
  331. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/context/__init__.py +0 -0
  332. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/context/running.py +0 -0
  333. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/context/serving.py +0 -0
  334. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/context/tracing.py +0 -0
  335. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/contexts/__init__.py +0 -0
  336. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/contexts/routing.py +0 -0
  337. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/contexts/running.py +0 -0
  338. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/contexts/tracing.py +0 -0
  339. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/decorators/__init__.py +0 -0
  340. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/decorators/routing.py +0 -0
  341. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/decorators/running.py +0 -0
  342. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/decorators/serving.py +0 -0
  343. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/decorators/tracing.py +0 -0
  344. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/__init__.py +0 -0
  345. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/running/__init__.py +0 -0
  346. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/running/registry.py +0 -0
  347. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/running/utils.py +0 -0
  348. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/tracing/__init__.py +0 -0
  349. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/tracing/attributes.py +0 -0
  350. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/tracing/conventions.py +0 -0
  351. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/tracing/exporters.py +0 -0
  352. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/tracing/inline.py +0 -0
  353. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/tracing/processors.py +0 -0
  354. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/tracing/propagation.py +0 -0
  355. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/engines/tracing/spans.py +0 -0
  356. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/evaluations/__init__.py +0 -0
  357. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/evaluations/preview/__init__.py +0 -0
  358. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/evaluations/preview/evaluate.py +0 -0
  359. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/evaluations/preview/utils.py +0 -0
  360. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/evaluations/results.py +0 -0
  361. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/evaluations/runs.py +0 -0
  362. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/evaluations/scenarios.py +0 -0
  363. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/litellm/__init__.py +0 -0
  364. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/litellm/litellm.py +0 -0
  365. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/litellm/mockllm.py +0 -0
  366. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/litellm/mocks/__init__.py +0 -0
  367. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/__init__.py +0 -0
  368. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/applications.py +0 -0
  369. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/apps.py +0 -0
  370. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/config.py +0 -0
  371. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/deployment.py +0 -0
  372. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/evaluations.py +0 -0
  373. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/evaluators.py +0 -0
  374. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/secrets.py +0 -0
  375. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/shared.py +0 -0
  376. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/testsets.py +0 -0
  377. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/variant.py +0 -0
  378. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/managers/vault.py +0 -0
  379. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middleware/__init__.py +0 -0
  380. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middleware/auth.py +0 -0
  381. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middleware/config.py +0 -0
  382. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middleware/cors.py +0 -0
  383. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middleware/inline.py +0 -0
  384. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middleware/mock.py +0 -0
  385. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middleware/vault.py +0 -0
  386. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middlewares/__init__.py +0 -0
  387. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middlewares/routing/__init__.py +0 -0
  388. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middlewares/routing/auth.py +0 -0
  389. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middlewares/routing/cors.py +0 -0
  390. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middlewares/routing/otel.py +0 -0
  391. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middlewares/running/__init__.py +0 -0
  392. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middlewares/running/normalizer.py +0 -0
  393. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/middlewares/running/resolver.py +0 -0
  394. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/models/__init__.py +0 -0
  395. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/models/blobs.py +0 -0
  396. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/models/git.py +0 -0
  397. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/models/testsets.py +0 -0
  398. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/models/tracing.py +0 -0
  399. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/models/workflows.py +0 -0
  400. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/router.py +0 -0
  401. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/tracing/__init__.py +0 -0
  402. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/tracing/attributes.py +0 -0
  403. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/tracing/conventions.py +0 -0
  404. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/tracing/inline.py +0 -0
  405. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/tracing/propagation.py +0 -0
  406. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/tracing/spans.py +0 -0
  407. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/types.py +0 -0
  408. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/__init__.py +0 -0
  409. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/cache.py +0 -0
  410. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/client.py +0 -0
  411. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/constants.py +0 -0
  412. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/costs.py +0 -0
  413. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/exceptions.py +0 -0
  414. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/globals.py +0 -0
  415. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/helpers.py +0 -0
  416. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/logging.py +0 -0
  417. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/otel.py +0 -0
  418. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/preinit.py +0 -0
  419. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/references.py +0 -0
  420. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/singleton.py +0 -0
  421. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/utils/timing.py +0 -0
  422. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/workflows/__init__.py +0 -0
  423. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/workflows/builtin.py +0 -0
  424. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/workflows/configurations.py +0 -0
  425. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/workflows/errors.py +0 -0
  426. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/workflows/handlers.py +0 -0
  427. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/workflows/interfaces.py +0 -0
  428. {agenta-0.64.1 → agenta-0.69.6}/agenta/sdk/workflows/utils.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.69.6
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,24 @@ 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.121.0,<0.122.0)
19
+ Requires-Dist: fastapi (>=0.125)
20
+ Requires-Dist: httpx (>=0.28,<0.29)
21
+ Requires-Dist: importlib-metadata (>=8,<9)
22
+ Requires-Dist: jinja2 (>=3,<4)
23
+ Requires-Dist: litellm (>=1,<2)
24
+ Requires-Dist: openai (>=2,<3)
25
+ Requires-Dist: opentelemetry-api (>=1,<2)
26
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http (>=1,<2)
27
+ Requires-Dist: opentelemetry-instrumentation (>=0.59b0,<0.60)
28
+ Requires-Dist: opentelemetry-sdk (>=1,<2)
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-dotenv (>=1,<2)
31
+ Requires-Dist: python-jsonpath (>=2,<3)
32
+ Requires-Dist: pyyaml (>=6,<7)
33
+ Requires-Dist: restrictedpython (>=8,<9) ; python_version >= "3.11" and python_version < "3.14"
34
+ Requires-Dist: structlog (>=25,<26)
35
+ Requires-Dist: toml (>=0.10,<0.11)
40
36
  Project-URL: Documentation, https://agenta.ai/docs/
41
37
  Project-URL: Homepage, https://agenta.ai
42
38
  Project-URL: Repository, https://github.com/agenta-ai/agenta
@@ -1,52 +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
7
5
 
8
- from .sdk.types import (
9
- MCField,
10
- DictInput,
11
- MultipleChoice,
12
- FloatParam,
13
- IntParam,
14
- MultipleChoiceParam,
15
- GroupedMultipleChoiceParam,
16
- MessagesInput,
17
- TextParam,
18
- FileInputURL,
19
- BinaryParam,
20
- Prompt,
21
- PromptTemplate,
22
- )
6
+ from .sdk import assets as assets
23
7
 
24
- from .sdk.agenta_init import Config, AgentaSingleton, init as _init
25
- from .sdk.utils.logging import get_module_logger
26
- 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
8
+ # evaluations
9
+ from .sdk import testsets as testsets
10
+ from .sdk import tracer
11
+ from .sdk.agenta_init import AgentaSingleton, Config
12
+ from .sdk.agenta_init import init as _init
13
+ from .sdk.context.running import workflow_mode_enabled
30
14
  from .sdk.decorators.running import (
31
- workflow,
32
15
  application,
33
16
  evaluator,
17
+ workflow,
34
18
  )
35
- from .sdk.decorators.serving import route, app
36
- from .sdk.context.running import workflow_mode_enabled
19
+ from .sdk.decorators.serving import app, route
20
+ from .sdk.decorators.tracing import instrument
37
21
  from .sdk.litellm import litellm as callbacks
38
22
  from .sdk.managers.apps import AppManager
39
- from .sdk.managers.vault import VaultManager
40
- from .sdk.managers.secrets import SecretsManager
41
23
  from .sdk.managers.config import ConfigManager
42
- from .sdk.managers.variant import VariantManager
43
24
  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
-
25
+ from .sdk.managers.secrets import SecretsManager
26
+ from .sdk.managers.variant import VariantManager
27
+ from .sdk.managers.vault import VaultManager
28
+ from .sdk.tracing import Tracing, get_tracer
29
+ from .sdk.tracing.conventions import Reference
30
+ from .sdk.types import (
31
+ BinaryParam,
32
+ DictInput,
33
+ FileInputURL,
34
+ FloatParam,
35
+ GroupedMultipleChoiceParam,
36
+ IntParam,
37
+ MCField,
38
+ MessagesInput,
39
+ MultipleChoice,
40
+ MultipleChoiceParam,
41
+ Prompt,
42
+ PromptTemplate,
43
+ TextParam,
44
+ )
45
+ from .sdk.utils.costs import calculate_token_usage
46
+ from .sdk.utils.logging import get_module_logger
47
+ from .sdk.utils.preinit import PreInitObject
50
48
 
51
49
  config = PreInitObject("agenta.config", Config)
52
50
  DEFAULT_AGENTA_SINGLETON_INSTANCE = AgentaSingleton()
@@ -88,3 +86,35 @@ def init(
88
86
 
89
87
  tracing = DEFAULT_AGENTA_SINGLETON_INSTANCE.tracing # type: ignore
90
88
  tracer = get_tracer(tracing)
89
+
90
+
91
+ def get_trace_url(trace_id: Optional[str] = None) -> str:
92
+ """
93
+ Build a URL to view the current trace in the Agenta UI.
94
+
95
+ Automatically extracts the trace ID from the current tracing context.
96
+ Can also accept an explicit trace_id if needed.
97
+
98
+ Args:
99
+ trace_id: Optional trace ID (hex string format). If not provided,
100
+ it will be automatically extracted from the current trace context.
101
+
102
+ Returns:
103
+ The full URL to view the trace in the observability dashboard
104
+
105
+ Raises:
106
+ RuntimeError: If the SDK is not initialized, no active trace context exists,
107
+ or scope info cannot be fetched
108
+
109
+ Example:
110
+ >>> import agenta as ag
111
+ >>> ag.init(api_key="xxx")
112
+ >>>
113
+ >>> @ag.instrument()
114
+ >>> def my_function():
115
+ >>> # Get URL for the current trace
116
+ >>> url = ag.tracing.get_trace_url()
117
+ >>> print(url)
118
+ >>> return "result"
119
+ """
120
+ 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(
@@ -1,16 +1,15 @@
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 requests
6
+ import toml
9
7
  from agenta.client.client import AgentaApi, AsyncAgentaApi
10
-
11
- from agenta.sdk.tracing import Tracing
12
8
  from agenta.sdk.contexts.routing import RoutingContext
13
-
9
+ from agenta.sdk.tracing import Tracing
10
+ from agenta.sdk.utils.globals import set_global
11
+ from agenta.sdk.utils.helpers import parse_url
12
+ from agenta.sdk.utils.logging import get_module_logger
14
13
 
15
14
  log = get_module_logger(__name__)
16
15
 
@@ -19,6 +18,7 @@ class AgentaSingleton:
19
18
  """Singleton class to save all the "global variables" for the sdk."""
20
19
 
21
20
  _instance = None
21
+ _initialized = False
22
22
  config = None
23
23
  tracing = None
24
24
 
@@ -26,6 +26,11 @@ class AgentaSingleton:
26
26
  async_api = None
27
27
 
28
28
  def __init__(self):
29
+ # Only initialize once
30
+ if AgentaSingleton._initialized:
31
+ return
32
+
33
+ AgentaSingleton._initialized = True
29
34
  self.host = None
30
35
  self.api_url = None
31
36
  self.api_key = None
@@ -33,6 +38,11 @@ class AgentaSingleton:
33
38
  self.scope_type = None
34
39
  self.scope_id = None
35
40
 
41
+ # Cached scope information for URL building
42
+ self.organization_id: Optional[str] = None
43
+ self.workspace_id: Optional[str] = None
44
+ self.project_id: Optional[str] = None
45
+
36
46
  def __new__(cls):
37
47
  if not cls._instance:
38
48
  cls._instance = super(AgentaSingleton, cls).__new__(cls)
@@ -70,7 +80,11 @@ class AgentaSingleton:
70
80
 
71
81
  """
72
82
 
73
- log.info("Agenta - SDK ver: %s", version("agenta"))
83
+ # Idempotency check: if already initialized, skip re-initialization
84
+ if self.tracing and self.api and self.async_api:
85
+ return
86
+
87
+ log.info("Agenta - SDK ver: %s", version("agenta"))
74
88
 
75
89
  config = {}
76
90
  if config_fname:
@@ -100,7 +114,7 @@ class AgentaSingleton:
100
114
 
101
115
  try:
102
116
  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."
117
+ "API URL is required. Please set AGENTA_API_URL environment variable or pass api_url parameter in ag.init()."
104
118
  )
105
119
  self.host = _host
106
120
  self.api_url = _api_url
@@ -118,7 +132,12 @@ class AgentaSingleton:
118
132
  or None # NO FALLBACK
119
133
  )
120
134
 
121
- log.info("Agenta - API URL: %s", self.api_url)
135
+ if self.api_key is None:
136
+ log.error(
137
+ "API key is required. Please set AGENTA_API_KEY environment variable or pass api_key parameter in ag.init()."
138
+ )
139
+
140
+ log.info("Agenta - API URL: %s", self.api_url)
122
141
 
123
142
  self.scope_type = (
124
143
  scope_type
@@ -159,6 +178,65 @@ class AgentaSingleton:
159
178
  api_key=self.api_key,
160
179
  )
161
180
 
181
+ # Reset cached scope info on re-init
182
+ self.organization_id = None
183
+ self.workspace_id = None
184
+ self.project_id = None
185
+
186
+ def resolve_scopes(self) -> Optional[tuple[str, str, str]]:
187
+ """Fetch and cache workspace_id and project_id from the API."""
188
+ if (
189
+ self.organization_id is not None
190
+ and self.workspace_id is not None
191
+ and self.project_id is not None
192
+ ):
193
+ return
194
+
195
+ if self.api_url is None or self.api_key is None:
196
+ log.error("API URL or API key is not set. Please call ag.init() first.")
197
+ return
198
+
199
+ try:
200
+ response = requests.get(
201
+ f"{self.api_url}/projects/current",
202
+ headers={"Authorization": f"ApiKey {self.api_key}"},
203
+ timeout=10,
204
+ )
205
+ response.raise_for_status()
206
+
207
+ project_info = response.json()
208
+
209
+ if not project_info:
210
+ log.error(
211
+ "No project context found. Please ensure your API key is valid."
212
+ )
213
+
214
+ self.organization_id = project_info.get("organization_id")
215
+ self.workspace_id = project_info.get("workspace_id")
216
+ self.project_id = project_info.get("project_id")
217
+
218
+ if (
219
+ not self.organization_id
220
+ and not self.workspace_id
221
+ or not self.project_id
222
+ ):
223
+ log.error(
224
+ "Could not determine organization/workspace/project from API response."
225
+ )
226
+
227
+ except Exception as e:
228
+ log.error(f"Failed to fetch scope information: {e}")
229
+ return
230
+
231
+ if self.organization_id and self.workspace_id and self.project_id:
232
+ return (
233
+ self.organization_id,
234
+ self.workspace_id,
235
+ self.project_id,
236
+ )
237
+
238
+ return None
239
+
162
240
 
163
241
  class Config:
164
242
  def __init__(
@@ -28,6 +28,7 @@ supported_llm_models = {
28
28
  ],
29
29
  "gemini": [
30
30
  "gemini/gemini-3-pro-preview",
31
+ "gemini/gemini-3-flash-preview",
31
32
  "gemini/gemini-2.5-pro",
32
33
  "gemini/gemini-2.5-pro-preview-05-06",
33
34
  "gemini/gemini-2.5-flash",
@@ -64,21 +65,26 @@ supported_llm_models = {
64
65
  "mistral/mistral-large-latest",
65
66
  ],
66
67
  "openai": [
67
- "gpt-5",
68
+ "gpt-5.2-pro",
69
+ "gpt-5.2-chat-latest",
70
+ "gpt-5.2",
71
+ "gpt-5.1-chat-latest",
68
72
  "gpt-5.1",
69
- "gpt-5-mini",
73
+ "gpt-5-pro",
70
74
  "gpt-5-nano",
75
+ "gpt-5-mini",
76
+ "gpt-5",
77
+ "o4-mini",
71
78
  "gpt-4.5-preview",
72
- "gpt-3.5-turbo-1106",
73
- "gpt-3.5-turbo",
74
- "gpt-4",
75
- "gpt-4o",
79
+ "gpt-4.1-nano",
80
+ "gpt-4.1-mini",
81
+ "gpt-4.1",
76
82
  "gpt-4o-mini",
83
+ "gpt-4o",
77
84
  "gpt-4-1106-preview",
78
- "gpt-4.1",
79
- "gpt-4.1-mini",
80
- "gpt-4.1-nano",
81
- "o4-mini",
85
+ "gpt-4",
86
+ "gpt-3.5-turbo-1106",
87
+ "gpt-3.5-turbo",
82
88
  ],
83
89
  "openrouter": [
84
90
  "openrouter/qwen/qwen3-235b-a22b",
@@ -114,7 +114,7 @@ class Tracing(metaclass=Singleton):
114
114
 
115
115
  # TRACE PROCESSORS -- OTLP
116
116
  try:
117
- log.info("Agenta - OLTP URL: %s", self.otlp_url)
117
+ log.info("Agenta - OTLP URL: %s", self.otlp_url)
118
118
 
119
119
  _otlp = TraceProcessor(
120
120
  OTLPExporter(
@@ -127,7 +127,7 @@ class Tracing(metaclass=Singleton):
127
127
 
128
128
  self.tracer_provider.add_span_processor(_otlp)
129
129
  except: # pylint: disable=bare-except
130
- log.warning("Agenta - OLTP unreachable, skipping exports.")
130
+ log.warning("Agenta - OTLP unreachable, skipping exports.")
131
131
 
132
132
  # GLOBAL TRACER PROVIDER -- INSTRUMENTATION LIBRARIES
133
133
  set_tracer_provider(self.tracer_provider)
@@ -13,15 +13,15 @@ async def arefresh(
13
13
  # timestamp: Optional[str] = None,
14
14
  # interval: Optional[float] = None,
15
15
  ) -> EvaluationMetrics:
16
- payload = dict(
16
+ metrics = dict(
17
17
  run_id=str(run_id),
18
18
  scenario_id=str(scenario_id) if scenario_id else None,
19
19
  )
20
20
 
21
21
  response = authed_api()(
22
22
  method="POST",
23
- endpoint=f"/preview/evaluations/metrics/refresh",
24
- params=payload,
23
+ endpoint="/preview/evaluations/metrics/refresh",
24
+ json=dict(metrics=metrics),
25
25
  )
26
26
 
27
27
  try:
@@ -3,9 +3,6 @@ from typing import Callable
3
3
  from starlette.middleware.base import BaseHTTPMiddleware
4
4
  from fastapi import Request, FastAPI
5
5
 
6
- from opentelemetry.baggage.propagation import W3CBaggagePropagator
7
- from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
8
-
9
6
  from agenta.sdk.utils.exceptions import suppress
10
7
  from agenta.sdk.tracing.propagation import extract
11
8
 
@@ -127,7 +127,7 @@ class VaultMiddleware:
127
127
  request: WorkflowServiceRequest,
128
128
  call_next: Callable[[WorkflowServiceRequest], Any],
129
129
  ):
130
- api_url = f"{ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.host}/api"
130
+ api_url = ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.api_url
131
131
 
132
132
  with suppress():
133
133
  ctx = RunningContext.get()
@@ -53,9 +53,17 @@ class EvaluationStatus(str, Enum):
53
53
 
54
54
 
55
55
  class EvaluationRunFlags(BaseModel):
56
- is_closed: Optional[bool] = None # Indicates if the run is immutable
57
- is_live: Optional[bool] = None # Indicates if the run is updated periodically
58
- is_active: Optional[bool] = None # Indicates if the run is currently active
56
+ is_live: bool = False # Indicates if the run has live queries
57
+ is_active: bool = False # Indicates if the run is currently active
58
+ is_closed: bool = False # Indicates if the run is modifiable
59
+ #
60
+ has_queries: bool = False # Indicates if the run has queries
61
+ has_testsets: bool = False # Indicates if the run has testsets
62
+ has_evaluators: bool = False # Indicates if the run has evaluators
63
+ #
64
+ has_custom: bool = False # Indicates if the run has custom evaluators
65
+ has_human: bool = False # Indicates if the run has human evaluators
66
+ has_auto: bool = False # Indicates if the run has auto evaluators
59
67
 
60
68
 
61
69
  class SimpleEvaluationFlags(EvaluationRunFlags):
@@ -88,7 +88,7 @@ class Slug(BaseModel):
88
88
  def check_url_safety(cls, v):
89
89
  if v is not None:
90
90
  if not match(r"^[a-zA-Z0-9_-]+$", v):
91
- raise ValueError("slug must be URL-safe.")
91
+ raise ValueError("'slug' must be URL-safe.")
92
92
  return v
93
93
 
94
94
 
@@ -122,6 +122,7 @@ class OTLPExporter(OTLPSpanExporter):
122
122
  # "[SPAN] [EXPORT]",
123
123
  # trace_id=UUID(int=trace_id).hex,
124
124
  # span_id=UUID(int=span_id).hex[-16:],
125
+ # span_attributes=_span.attributes,
125
126
  # )
126
127
 
127
128
  serialized_spans.append(super().export(_spans))
@@ -1,7 +1,5 @@
1
1
  from typing import Optional, Dict, List
2
2
  from threading import Lock
3
- from json import dumps
4
- from uuid import UUID
5
3
 
6
4
  from opentelemetry.baggage import get_all as get_baggage
7
5
  from opentelemetry.context import Context
@@ -14,7 +12,6 @@ from opentelemetry.sdk.trace.export import (
14
12
  from opentelemetry.trace import SpanContext
15
13
 
16
14
  from agenta.sdk.utils.logging import get_module_logger
17
- from agenta.sdk.tracing.conventions import Reference
18
15
 
19
16
  from agenta.sdk.contexts.tracing import TracingContext
20
17
 
@@ -70,10 +67,8 @@ class TraceProcessor(SpanProcessor):
70
67
  baggage = get_baggage(parent_context)
71
68
 
72
69
  for key in baggage.keys():
73
- if key.startswith("ag.refs."):
74
- _key = key.replace("ag.refs.", "")
75
- if _key in [_.value for _ in Reference.__members__.values()]:
76
- span.set_attribute(key, baggage[key])
70
+ if key.startswith("ag."):
71
+ span.set_attribute(key, baggage[key])
77
72
 
78
73
  context = TracingContext.get()
79
74
 
@@ -31,6 +31,7 @@ from agenta.sdk.tracing.conventions import Reference, is_valid_attribute_key
31
31
  from agenta.sdk.tracing.propagation import extract, inject
32
32
  from agenta.sdk.utils.cache import TTLLRUCache
33
33
 
34
+ import agenta as ag
34
35
 
35
36
  log = get_module_logger(__name__)
36
37
 
@@ -101,7 +102,7 @@ class Tracing(metaclass=Singleton):
101
102
 
102
103
  # TRACE PROCESSORS -- OTLP
103
104
  try:
104
- log.info("Agenta - OLTP URL: %s", self.otlp_url)
105
+ log.info("Agenta - OTLP URL: %s", self.otlp_url)
105
106
 
106
107
  _otlp = TraceProcessor(
107
108
  OTLPExporter(
@@ -114,7 +115,7 @@ class Tracing(metaclass=Singleton):
114
115
 
115
116
  self.tracer_provider.add_span_processor(_otlp)
116
117
  except: # pylint: disable=bare-except
117
- log.warning("Agenta - OLTP unreachable, skipping exports.")
118
+ log.warning("Agenta - OTLP unreachable, skipping exports.")
118
119
 
119
120
  # --- INLINE
120
121
  if inline:
@@ -215,6 +216,42 @@ class Tracing(metaclass=Singleton):
215
216
  namespace="metrics",
216
217
  )
217
218
 
219
+ def store_session(
220
+ self,
221
+ session_id: Optional[str] = None,
222
+ span: Optional[Span] = None,
223
+ ):
224
+ """Set session attributes on the current span.
225
+
226
+ Args:
227
+ session_id: Unique identifier for the session
228
+ span: Optional span to set attributes on (defaults to current span)
229
+ """
230
+ with suppress():
231
+ if span is None:
232
+ span = self.get_current_span()
233
+
234
+ if session_id:
235
+ span.set_attribute("id", session_id, namespace="session")
236
+
237
+ def store_user(
238
+ self,
239
+ user_id: Optional[str] = None,
240
+ span: Optional[Span] = None,
241
+ ):
242
+ """Set user attributes on the current span.
243
+
244
+ Args:
245
+ user_id: Unique identifier for the user
246
+ span: Optional span to set attributes on (defaults to current span)
247
+ """
248
+ with suppress():
249
+ if span is None:
250
+ span = self.get_current_span()
251
+
252
+ if user_id:
253
+ span.set_attribute("id", user_id, namespace="user")
254
+
218
255
  def is_inline_trace_ready(
219
256
  self,
220
257
  trace_id: Optional[int] = None,
@@ -314,6 +351,58 @@ class Tracing(metaclass=Singleton):
314
351
 
315
352
  return None
316
353
 
354
+ def get_trace_url(
355
+ self,
356
+ trace_id: Optional[str] = None,
357
+ ) -> str:
358
+ """
359
+ Build a URL to view a trace in the Agenta UI.
360
+
361
+ Automatically extracts the trace ID from the current tracing context
362
+ if not explicitly provided.
363
+
364
+ Args:
365
+ trace_id: Optional trace ID (hex string format). If not provided,
366
+ it will be automatically extracted from the current trace context.
367
+
368
+ Returns:
369
+ The full URL to view the trace in the observability dashboard
370
+
371
+ Raises:
372
+ RuntimeError: If the SDK is not initialized, no active trace context exists,
373
+ or scope info cannot be fetched
374
+ """
375
+ if trace_id is None:
376
+ span_ctx = self.get_span_context()
377
+ if span_ctx is None or not span_ctx.is_valid:
378
+ raise RuntimeError(
379
+ "No active trace context found. "
380
+ "Make sure you call this within an instrumented function or span."
381
+ )
382
+
383
+ trace_id = f"{span_ctx.trace_id:032x}"
384
+
385
+ if not ag or not ag.DEFAULT_AGENTA_SINGLETON_INSTANCE:
386
+ raise RuntimeError(
387
+ "Agenta SDK is not initialized. Please call ag.init() first."
388
+ )
389
+
390
+ api_url = ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.api_url
391
+ web_url = api_url.replace("/api", "") if api_url else None
392
+
393
+ (organization_id, workspace_id, project_id) = (
394
+ ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.resolve_scopes()
395
+ )
396
+
397
+ if not web_url or not workspace_id or not project_id:
398
+ raise RuntimeError(
399
+ "Could not determine workspace/project context. Please call ag.init() first."
400
+ )
401
+
402
+ return (
403
+ f"{web_url}/w/{workspace_id}/p/{project_id}/observability?trace={trace_id}"
404
+ )
405
+
317
406
 
318
407
  def get_tracer(
319
408
  tracing: Tracing,
@@ -0,0 +1,3 @@
1
+ from agenta.sdk.workflows.runners.registry import get_runner
2
+
3
+ __all__ = ["get_runner"]