arize-phoenix 7.9.0__tar.gz → 7.9.1__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.

Potentially problematic release.


This version of arize-phoenix might be problematic. Click here for more details.

Files changed (347) hide show
  1. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/PKG-INFO +1 -1
  2. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/Granularity.py +3 -3
  3. arize_phoenix-7.9.1/src/phoenix/server/api/input_types/TimeRange.py +23 -0
  4. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Dimension.py +15 -10
  5. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/EmbeddingDimension.py +17 -12
  6. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Model.py +4 -4
  7. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/TimeSeries.py +12 -10
  8. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/.vite/manifest.json +9 -9
  9. arize_phoenix-7.9.0/src/phoenix/server/static/assets/components-Dn-PoB4S.js → arize_phoenix-7.9.1/src/phoenix/server/static/assets/components-CN9dra1h.js +1 -1
  10. arize_phoenix-7.9.0/src/phoenix/server/static/assets/index-Cky21rQb.js → arize_phoenix-7.9.1/src/phoenix/server/static/assets/index-DcnHbEy5.js +1 -1
  11. arize_phoenix-7.9.0/src/phoenix/server/static/assets/pages-DRhPpbPi.js → arize_phoenix-7.9.1/src/phoenix/server/static/assets/pages-nMcybglv.js +2 -2
  12. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/trace_dataset.py +12 -1
  13. arize_phoenix-7.9.1/src/phoenix/version.py +1 -0
  14. arize_phoenix-7.9.0/src/phoenix/server/api/input_types/TimeRange.py +0 -20
  15. arize_phoenix-7.9.0/src/phoenix/version.py +0 -1
  16. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/.gitignore +0 -0
  17. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/IP_NOTICE +0 -0
  18. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/LICENSE +0 -0
  19. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/README.md +0 -0
  20. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/pyproject.toml +0 -0
  21. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/__init__.py +0 -0
  22. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/auth.py +0 -0
  23. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/config.py +0 -0
  24. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/core/__init__.py +0 -0
  25. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/core/embedding_dimension.py +0 -0
  26. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/core/model.py +0 -0
  27. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/core/model_schema.py +0 -0
  28. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/core/model_schema_adapter.py +0 -0
  29. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/datetime_utils.py +0 -0
  30. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/README.md +0 -0
  31. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/__init__.py +0 -0
  32. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/alembic.ini +0 -0
  33. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/bulk_inserter.py +0 -0
  34. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/engines.py +0 -0
  35. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/enums.py +0 -0
  36. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/facilitator.py +0 -0
  37. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/helpers.py +0 -0
  38. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/insertion/__init__.py +0 -0
  39. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/insertion/constants.py +0 -0
  40. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/insertion/dataset.py +0 -0
  41. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/insertion/document_annotation.py +0 -0
  42. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/insertion/evaluation.py +0 -0
  43. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/insertion/helpers.py +0 -0
  44. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/insertion/span.py +0 -0
  45. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/insertion/span_annotation.py +0 -0
  46. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  47. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/insertion/types.py +0 -0
  48. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/migrate.py +0 -0
  49. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/migrations/__init__.py +0 -0
  50. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  51. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  52. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/migrations/env.py +0 -0
  53. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/migrations/script.py.mako +0 -0
  54. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  55. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  56. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  57. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  58. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  59. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/db/models.py +0 -0
  60. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/exceptions.py +0 -0
  61. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/experiments/__init__.py +0 -0
  62. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  63. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/experiments/evaluators/base.py +0 -0
  64. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  65. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  66. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/experiments/evaluators/utils.py +0 -0
  67. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/experiments/functions.py +0 -0
  68. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/experiments/tracing.py +0 -0
  69. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/experiments/types.py +0 -0
  70. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/experiments/utils.py +0 -0
  71. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/inferences/__init__.py +0 -0
  72. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/inferences/errors.py +0 -0
  73. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/inferences/fixtures.py +0 -0
  74. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/inferences/inferences.py +0 -0
  75. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/inferences/schema.py +0 -0
  76. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/inferences/validation.py +0 -0
  77. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/logging/__init__.py +0 -0
  78. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/logging/_config.py +0 -0
  79. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/logging/_filter.py +0 -0
  80. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/logging/_formatter.py +0 -0
  81. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/metrics/README.md +0 -0
  82. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/metrics/__init__.py +0 -0
  83. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/metrics/binning.py +0 -0
  84. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/metrics/metrics.py +0 -0
  85. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/metrics/mixins.py +0 -0
  86. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  87. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/metrics/timeseries.py +0 -0
  88. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/metrics/wrappers.py +0 -0
  89. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/pointcloud/__init__.py +0 -0
  90. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/pointcloud/clustering.py +0 -0
  91. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/pointcloud/pointcloud.py +0 -0
  92. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/pointcloud/projectors.py +0 -0
  93. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  94. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/py.typed +0 -0
  95. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/__init__.py +0 -0
  96. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/README.md +0 -0
  97. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/__init__.py +0 -0
  98. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/auth.py +0 -0
  99. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/context.py +0 -0
  100. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  101. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  102. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  103. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  104. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  105. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  106. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  107. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  108. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  109. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  110. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  111. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  112. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  113. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  114. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  115. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  116. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  117. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  118. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  119. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  120. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  121. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  122. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  123. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  124. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  125. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  126. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  127. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  128. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  129. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  130. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  131. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  132. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/dataloaders/users.py +0 -0
  133. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/exceptions.py +0 -0
  134. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/helpers/__init__.py +0 -0
  135. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  136. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  137. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/helpers/playground_clients.py +0 -0
  138. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  139. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  140. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  141. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  142. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  143. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  144. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  145. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  146. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  147. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  148. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  149. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  150. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  151. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  152. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  153. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  154. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  155. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  156. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  157. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  158. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  159. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  160. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  161. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  162. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  163. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  164. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  165. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  166. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  167. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  168. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  169. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/TemplateOptions.py +0 -0
  170. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  171. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  172. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/input_types/__init__.py +0 -0
  173. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/interceptor.py +0 -0
  174. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/mutations/__init__.py +0 -0
  175. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  176. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  177. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  178. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  179. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  180. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  181. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  182. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  183. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  184. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/openapi/__init__.py +0 -0
  185. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/openapi/main.py +0 -0
  186. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/openapi/schema.py +0 -0
  187. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/queries.py +0 -0
  188. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/__init__.py +0 -0
  189. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/auth.py +0 -0
  190. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/embeddings.py +0 -0
  191. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/oauth2.py +0 -0
  192. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/utils.py +0 -0
  193. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  194. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  195. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  196. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  197. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  198. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  199. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/v1/pydantic_compat.py +0 -0
  200. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  201. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  202. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  203. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/schema.py +0 -0
  204. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/subscriptions.py +0 -0
  205. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Annotation.py +0 -0
  206. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  207. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  208. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ApiKey.py +0 -0
  209. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  210. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  211. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  212. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Cluster.py +0 -0
  213. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  214. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  215. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Dataset.py +0 -0
  216. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  217. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  218. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  219. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  220. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  221. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  222. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/DimensionType.py +0 -0
  223. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  224. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  225. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  226. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  227. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Evaluation.py +0 -0
  228. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  229. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Event.py +0 -0
  230. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  231. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  232. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Experiment.py +0 -0
  233. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  234. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  235. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  236. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  237. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  238. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Functionality.py +0 -0
  239. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  240. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  241. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Inferences.py +0 -0
  242. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  243. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  244. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/MimeType.py +0 -0
  245. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/NumericRange.py +0 -0
  246. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  247. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Project.py +0 -0
  248. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  249. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  250. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Retrieval.py +0 -0
  251. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  252. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Segments.py +0 -0
  253. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/SortDir.py +0 -0
  254. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Span.py +0 -0
  255. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  256. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  257. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  258. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/TemplateLanguage.py +0 -0
  259. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  260. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/Trace.py +0 -0
  261. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  262. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  263. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/User.py +0 -0
  264. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  265. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/UserRole.py +0 -0
  266. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  267. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  268. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/__init__.py +0 -0
  269. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/node.py +0 -0
  270. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/types/pagination.py +0 -0
  271. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/api/utils.py +0 -0
  272. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/app.py +0 -0
  273. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/bearer_auth.py +0 -0
  274. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/dml_event.py +0 -0
  275. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/dml_event_handler.py +0 -0
  276. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/email/__init__.py +0 -0
  277. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/email/sender.py +0 -0
  278. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/email/templates/__init__.py +0 -0
  279. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/email/templates/password_reset.html +0 -0
  280. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/email/types.py +0 -0
  281. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/grpc_server.py +0 -0
  282. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/jwt_store.py +0 -0
  283. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/main.py +0 -0
  284. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/oauth2.py +0 -0
  285. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/openapi/__init__.py +0 -0
  286. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/prometheus.py +0 -0
  287. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/rate_limiters.py +0 -0
  288. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  289. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  290. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  291. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  292. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  293. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  294. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  295. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  296. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/assets/vendor-DvC8cT4X.js +0 -0
  297. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +0 -0
  298. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/assets/vendor-arizeai-Do1793cv.js +0 -0
  299. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/assets/vendor-codemirror-BzwZPyJM.js +0 -0
  300. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/assets/vendor-recharts-_Jb7JjhG.js +0 -0
  301. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/assets/vendor-shiki-Cl9QBraO.js +0 -0
  302. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +0 -0
  303. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/favicon.ico +0 -0
  304. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/static/modernizr.js +0 -0
  305. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/telemetry.py +0 -0
  306. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/templates/__init__.py +0 -0
  307. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/templates/index.html +0 -0
  308. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/thread_server.py +0 -0
  309. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/server/types.py +0 -0
  310. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/services.py +0 -0
  311. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/session/__init__.py +0 -0
  312. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/session/client.py +0 -0
  313. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/session/data_extractor.py +0 -0
  314. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/session/evaluation.py +0 -0
  315. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/session/session.py +0 -0
  316. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/settings.py +0 -0
  317. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/__init__.py +0 -0
  318. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/attributes.py +0 -0
  319. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/dsl/README.md +0 -0
  320. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/dsl/__init__.py +0 -0
  321. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/dsl/filter.py +0 -0
  322. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/dsl/helpers.py +0 -0
  323. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/dsl/query.py +0 -0
  324. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/errors.py +0 -0
  325. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/evaluation_conventions.py +0 -0
  326. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/exporter.py +0 -0
  327. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/fixtures.py +0 -0
  328. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/otel.py +0 -0
  329. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/projects.py +0 -0
  330. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/schemas.py +0 -0
  331. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/span_evaluations.py +0 -0
  332. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/span_json_decoder.py +0 -0
  333. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/span_json_encoder.py +0 -0
  334. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/utils.py +0 -0
  335. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/v1/__init__.py +0 -0
  336. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  337. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  338. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/utilities/__init__.py +0 -0
  339. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/utilities/client.py +0 -0
  340. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/utilities/deprecation.py +0 -0
  341. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/utilities/error_handling.py +0 -0
  342. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/utilities/json.py +0 -0
  343. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/utilities/logging.py +0 -0
  344. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/utilities/project.py +0 -0
  345. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/utilities/re.py +0 -0
  346. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/utilities/span_store.py +0 -0
  347. {arize_phoenix-7.9.0 → arize_phoenix-7.9.1}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 7.9.0
3
+ Version: 7.9.1
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://docs.arize.com/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -4,7 +4,7 @@ from itertools import accumulate, repeat, takewhile
4
4
 
5
5
  import strawberry
6
6
 
7
- from phoenix.server.api.input_types.TimeRange import TimeRange
7
+ from phoenix.core import model_schema
8
8
 
9
9
 
10
10
  @strawberry.input(
@@ -38,7 +38,7 @@ class Granularity:
38
38
 
39
39
 
40
40
  def to_timestamps(
41
- time_range: TimeRange,
41
+ time_range: model_schema.TimeRange,
42
42
  granularity: Granularity,
43
43
  ) -> Iterator[datetime]:
44
44
  if not granularity.sampling_interval_minutes:
@@ -51,6 +51,6 @@ def to_timestamps(
51
51
  minutes=granularity.sampling_interval_minutes,
52
52
  )
53
53
  ),
54
- initial=time_range.end,
54
+ initial=time_range.stop,
55
55
  ),
56
56
  )
@@ -0,0 +1,23 @@
1
+ from datetime import datetime, timezone
2
+ from typing import Optional
3
+
4
+ import strawberry
5
+
6
+
7
+ @strawberry.input
8
+ class TimeRange:
9
+ start: Optional[datetime] = strawberry.field(
10
+ description="The start of the time range",
11
+ )
12
+ end: Optional[datetime] = strawberry.field(
13
+ description="The end of the time range. Right exclusive.",
14
+ )
15
+
16
+ def __post_init__(self) -> None:
17
+ if self.start:
18
+ self.start = self.start.astimezone(timezone.utc)
19
+ if self.end:
20
+ self.end = self.end.astimezone(timezone.utc)
21
+
22
+ def is_valid(self) -> bool:
23
+ return not self.start or not self.end or self.start < self.end
@@ -9,6 +9,7 @@ from strawberry.types import Info
9
9
  from typing_extensions import Annotated
10
10
 
11
11
  import phoenix.core.model_schema as ms
12
+ from phoenix.core import model_schema
12
13
  from phoenix.core.model_schema import CONTINUOUS, PRIMARY, REFERENCE, ScalarDimension
13
14
  from phoenix.metrics import binning
14
15
  from phoenix.metrics.metrics import Count
@@ -71,14 +72,14 @@ class Dimension(Node):
71
72
  if model[REFERENCE].empty:
72
73
  return None
73
74
  inferences = model[PRIMARY]
74
- time_range, granularity = ensure_timeseries_parameters(
75
+ resolved_time_range, granularity = ensure_timeseries_parameters(
75
76
  inferences,
76
77
  time_range,
77
78
  )
78
79
  data = get_drift_timeseries_data(
79
80
  self.dimension,
80
81
  metric,
81
- time_range,
82
+ resolved_time_range,
82
83
  granularity,
83
84
  pd.DataFrame(
84
85
  {self.dimension.name: self.dimension[REFERENCE]},
@@ -103,14 +104,14 @@ class Dimension(Node):
103
104
  if not isinstance(inferences_role, InferencesRole):
104
105
  inferences_role = InferencesRole.primary
105
106
  inferences = info.context.model[inferences_role.value]
106
- time_range, granularity = ensure_timeseries_parameters(
107
+ resolved_time_range, granularity = ensure_timeseries_parameters(
107
108
  inferences,
108
109
  time_range,
109
110
  )
110
111
  data = get_data_quality_timeseries_data(
111
112
  self.dimension,
112
113
  metric,
113
- time_range,
114
+ resolved_time_range,
114
115
  granularity,
115
116
  inferences_role,
116
117
  )
@@ -150,7 +151,7 @@ class Dimension(Node):
150
151
  if not isinstance(inferences_role, InferencesRole):
151
152
  inferences_role = InferencesRole.primary
152
153
  inferences = info.context.model[inferences_role.value]
153
- time_range, granularity = ensure_timeseries_parameters(
154
+ resolved_time_range, granularity = ensure_timeseries_parameters(
154
155
  inferences,
155
156
  time_range,
156
157
  granularity,
@@ -159,7 +160,7 @@ class Dimension(Node):
159
160
  data=get_data_quality_timeseries_data(
160
161
  self.dimension,
161
162
  metric,
162
- time_range,
163
+ resolved_time_range,
163
164
  granularity,
164
165
  inferences_role,
165
166
  )
@@ -184,7 +185,7 @@ class Dimension(Node):
184
185
  if model[REFERENCE].empty:
185
186
  return DriftTimeSeries(data=[])
186
187
  inferences = model[PRIMARY]
187
- time_range, granularity = ensure_timeseries_parameters(
188
+ resolved_time_range, granularity = ensure_timeseries_parameters(
188
189
  inferences,
189
190
  time_range,
190
191
  granularity,
@@ -193,7 +194,7 @@ class Dimension(Node):
193
194
  data=get_drift_timeseries_data(
194
195
  self.dimension,
195
196
  metric,
196
- time_range,
197
+ resolved_time_range,
197
198
  granularity,
198
199
  pd.DataFrame(
199
200
  {self.dimension.name: self.dimension[REFERENCE]},
@@ -229,10 +230,14 @@ class Dimension(Node):
229
230
  if (df := model[role]).empty:
230
231
  continue
231
232
  if time_range:
233
+ resolved_time_range = model_schema.TimeRange(
234
+ start=time_range.start or df.time_range.start,
235
+ stop=time_range.end or df.time_range.stop,
236
+ )
232
237
  start, stop = row_interval_from_sorted_time_index(
233
238
  df.index,
234
- time_range.start,
235
- time_range.end,
239
+ resolved_time_range.start,
240
+ resolved_time_range.stop,
236
241
  )
237
242
  df = df.iloc[start:stop]
238
243
  summaries[role] = binning_method.segmented_summary(
@@ -15,6 +15,7 @@ from strawberry.types import Info
15
15
  from typing_extensions import Annotated
16
16
 
17
17
  import phoenix.core.model_schema as ms
18
+ from phoenix.core import model_schema
18
19
  from phoenix.core.model_schema import (
19
20
  ACTUAL_LABEL,
20
21
  ACTUAL_SCORE,
@@ -93,14 +94,14 @@ class EmbeddingDimension(Node):
93
94
  if model[REFERENCE].empty:
94
95
  return None
95
96
  dataset = model[PRIMARY]
96
- time_range, granularity = ensure_timeseries_parameters(
97
+ resolved_time_range, granularity = ensure_timeseries_parameters(
97
98
  dataset,
98
99
  time_range,
99
100
  )
100
101
  data = get_drift_timeseries_data(
101
102
  self.dimension,
102
103
  metric,
103
- time_range,
104
+ resolved_time_range,
104
105
  granularity,
105
106
  pd.DataFrame(
106
107
  {self.dimension.name: self.dimension[REFERENCE]},
@@ -127,14 +128,14 @@ class EmbeddingDimension(Node):
127
128
  return None
128
129
  model = info.context.model
129
130
  dataset = model[PRIMARY]
130
- time_range, granularity = ensure_timeseries_parameters(
131
+ resolved_time_range, granularity = ensure_timeseries_parameters(
131
132
  dataset,
132
133
  time_range,
133
134
  )
134
135
  data = get_drift_timeseries_data(
135
136
  self.dimension,
136
137
  metric,
137
- time_range,
138
+ resolved_time_range,
138
139
  granularity,
139
140
  pd.DataFrame(
140
141
  {self.dimension.name: self.dimension(corpus[PRIMARY])},
@@ -167,7 +168,7 @@ class EmbeddingDimension(Node):
167
168
  if not isinstance(inferences_role, InferencesRole):
168
169
  inferences_role = InferencesRole.primary
169
170
  dataset = info.context.model[inferences_role.value]
170
- time_range, granularity = ensure_timeseries_parameters(
171
+ resolved_time_range, granularity = ensure_timeseries_parameters(
171
172
  dataset,
172
173
  time_range,
173
174
  granularity,
@@ -176,7 +177,7 @@ class EmbeddingDimension(Node):
176
177
  data=get_data_quality_timeseries_data(
177
178
  self.dimension,
178
179
  metric,
179
- time_range,
180
+ resolved_time_range,
180
181
  granularity,
181
182
  inferences_role,
182
183
  )
@@ -203,7 +204,7 @@ class EmbeddingDimension(Node):
203
204
  if model[REFERENCE].empty:
204
205
  return DriftTimeSeries(data=[])
205
206
  dataset = model[PRIMARY]
206
- time_range, granularity = ensure_timeseries_parameters(
207
+ resolved_time_range, granularity = ensure_timeseries_parameters(
207
208
  dataset,
208
209
  time_range,
209
210
  granularity,
@@ -212,7 +213,7 @@ class EmbeddingDimension(Node):
212
213
  data=get_drift_timeseries_data(
213
214
  self.dimension,
214
215
  metric,
215
- time_range,
216
+ resolved_time_range,
216
217
  granularity,
217
218
  pd.DataFrame(
218
219
  {self.dimension.name: self.dimension[REFERENCE]},
@@ -242,7 +243,7 @@ class EmbeddingDimension(Node):
242
243
  return DriftTimeSeries(data=[])
243
244
  model = info.context.model
244
245
  dataset = model[PRIMARY]
245
- time_range, granularity = ensure_timeseries_parameters(
246
+ resolved_time_range, granularity = ensure_timeseries_parameters(
246
247
  dataset,
247
248
  time_range,
248
249
  granularity,
@@ -251,7 +252,7 @@ class EmbeddingDimension(Node):
251
252
  data=get_drift_timeseries_data(
252
253
  self.dimension,
253
254
  metric,
254
- time_range,
255
+ resolved_time_range,
255
256
  granularity,
256
257
  pd.DataFrame(
257
258
  {self.dimension.name: self.dimension(corpus[PRIMARY])},
@@ -320,10 +321,14 @@ class EmbeddingDimension(Node):
320
321
  inferences_id = inferences.role
321
322
  row_id_start, row_id_stop = 0, len(inferences)
322
323
  if inferences_id is PRIMARY:
324
+ resolved_time_range = model_schema.TimeRange(
325
+ start=time_range.start or inferences.time_range.start,
326
+ stop=time_range.end or inferences.time_range.stop,
327
+ )
323
328
  row_id_start, row_id_stop = row_interval_from_sorted_time_index(
324
329
  time_index=cast(pd.DatetimeIndex, inferences.index),
325
- time_start=time_range.start,
326
- time_stop=time_range.end,
330
+ time_start=resolved_time_range.start,
331
+ time_stop=resolved_time_range.stop,
327
332
  )
328
333
  vector_column = self.dimension[inferences_id]
329
334
  samples_collected = 0
@@ -167,7 +167,7 @@ class Model:
167
167
  inferences_role = InferencesRole.primary
168
168
  model = info.context.model
169
169
  inferences = model[inferences_role.value]
170
- time_range, granularity = ensure_timeseries_parameters(
170
+ resolved_time_range, granularity = ensure_timeseries_parameters(
171
171
  inferences,
172
172
  time_range,
173
173
  )
@@ -175,7 +175,7 @@ class Model:
175
175
  data = get_timeseries_data(
176
176
  inferences,
177
177
  metric_instance,
178
- time_range,
178
+ resolved_time_range,
179
179
  granularity,
180
180
  )
181
181
  return data[0].value if len(data) else None
@@ -205,7 +205,7 @@ class Model:
205
205
  inferences_role = InferencesRole.primary
206
206
  model = info.context.model
207
207
  inferences = model[inferences_role.value]
208
- time_range, granularity = ensure_timeseries_parameters(
208
+ resolved_time_range, granularity = ensure_timeseries_parameters(
209
209
  inferences,
210
210
  time_range,
211
211
  granularity,
@@ -215,7 +215,7 @@ class Model:
215
215
  data=get_timeseries_data(
216
216
  inferences,
217
217
  metric_instance,
218
- time_range,
218
+ resolved_time_range,
219
219
  granularity,
220
220
  )
221
221
  )
@@ -8,6 +8,7 @@ import pandas as pd
8
8
  import strawberry
9
9
  from strawberry import UNSET
10
10
 
11
+ from phoenix.core import model_schema
11
12
  from phoenix.core.model_schema import CONTINUOUS, PRIMARY, REFERENCE, Column, Dimension, Inferences
12
13
  from phoenix.metrics import Metric, binning
13
14
  from phoenix.metrics.mixins import UnaryOperator
@@ -69,13 +70,13 @@ class TimeSeries:
69
70
  def get_timeseries_data(
70
71
  df: pd.DataFrame,
71
72
  metric: Metric,
72
- time_range: TimeRange,
73
+ time_range: model_schema.TimeRange,
73
74
  granularity: Granularity,
74
75
  ) -> list[TimeSeriesDataPoint]:
75
76
  return df.pipe(
76
77
  timeseries(
77
78
  start_time=time_range.start,
78
- end_time=time_range.end,
79
+ end_time=time_range.stop,
79
80
  evaluation_window=timedelta(
80
81
  minutes=granularity.evaluation_window_minutes,
81
82
  ),
@@ -99,7 +100,7 @@ class DataQualityTimeSeries(TimeSeries):
99
100
  def get_data_quality_timeseries_data(
100
101
  dimension: Dimension,
101
102
  metric: DataQualityMetric,
102
- time_range: TimeRange,
103
+ time_range: model_schema.TimeRange,
103
104
  granularity: Granularity,
104
105
  inferences_role: InferencesRole,
105
106
  ) -> list[TimeSeriesDataPoint]:
@@ -129,7 +130,7 @@ class DriftTimeSeries(TimeSeries):
129
130
  def get_drift_timeseries_data(
130
131
  dimension: Dimension,
131
132
  metric: Union[ScalarDriftMetric, VectorDriftMetric],
132
- time_range: TimeRange,
133
+ time_range: model_schema.TimeRange,
133
134
  granularity: Granularity,
134
135
  reference_data: pd.DataFrame,
135
136
  ) -> list[TimeSeriesDataPoint]:
@@ -165,14 +166,15 @@ class PerformanceTimeSeries(TimeSeries):
165
166
 
166
167
  def ensure_timeseries_parameters(
167
168
  inferences: Inferences,
168
- time_range: Optional[TimeRange] = UNSET,
169
+ time_range_input: Optional[TimeRange] = UNSET,
169
170
  granularity: Optional[Granularity] = UNSET,
170
- ) -> tuple[TimeRange, Granularity]:
171
- if not isinstance(time_range, TimeRange):
172
- start, stop = inferences.time_range
173
- time_range = TimeRange(start=start, end=stop)
171
+ ) -> tuple[model_schema.TimeRange, Granularity]:
172
+ time_range = model_schema.TimeRange(
173
+ start=(time_range_input and time_range_input.start) or inferences.time_range.start,
174
+ stop=(time_range_input and time_range_input.end) or inferences.time_range.stop,
175
+ )
174
176
  if not isinstance(granularity, Granularity):
175
- total_minutes = int((time_range.end - time_range.start).total_seconds()) // 60
177
+ total_minutes = int((time_range.stop - time_range.start).total_seconds()) // 60
176
178
  granularity = Granularity(
177
179
  evaluation_window_minutes=total_minutes,
178
180
  sampling_interval_minutes=total_minutes,
@@ -1,22 +1,22 @@
1
1
  {
2
- "_components-Dn-PoB4S.js": {
3
- "file": "assets/components-Dn-PoB4S.js",
2
+ "_components-CN9dra1h.js": {
3
+ "file": "assets/components-CN9dra1h.js",
4
4
  "name": "components",
5
5
  "imports": [
6
6
  "_vendor-DvC8cT4X.js",
7
- "_pages-DRhPpbPi.js",
7
+ "_pages-nMcybglv.js",
8
8
  "_vendor-arizeai-Do1793cv.js",
9
9
  "_vendor-codemirror-BzwZPyJM.js",
10
10
  "_vendor-three-DwGkEfCM.js"
11
11
  ]
12
12
  },
13
- "_pages-DRhPpbPi.js": {
14
- "file": "assets/pages-DRhPpbPi.js",
13
+ "_pages-nMcybglv.js": {
14
+ "file": "assets/pages-nMcybglv.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
17
  "_vendor-DvC8cT4X.js",
18
18
  "_vendor-arizeai-Do1793cv.js",
19
- "_components-Dn-PoB4S.js",
19
+ "_components-CN9dra1h.js",
20
20
  "_vendor-codemirror-BzwZPyJM.js",
21
21
  "_vendor-recharts-_Jb7JjhG.js"
22
22
  ]
@@ -69,15 +69,15 @@
69
69
  "name": "vendor-three"
70
70
  },
71
71
  "index.tsx": {
72
- "file": "assets/index-Cky21rQb.js",
72
+ "file": "assets/index-DcnHbEy5.js",
73
73
  "name": "index",
74
74
  "src": "index.tsx",
75
75
  "isEntry": true,
76
76
  "imports": [
77
77
  "_vendor-DvC8cT4X.js",
78
78
  "_vendor-arizeai-Do1793cv.js",
79
- "_pages-DRhPpbPi.js",
80
- "_components-Dn-PoB4S.js",
79
+ "_pages-nMcybglv.js",
80
+ "_components-CN9dra1h.js",
81
81
  "_vendor-three-DwGkEfCM.js",
82
82
  "_vendor-codemirror-BzwZPyJM.js",
83
83
  "_vendor-shiki-Cl9QBraO.js",
@@ -1,4 +1,4 @@
1
- import{r as p,R as G,j as e,n as Wn,a as we,e as Xe,s as T1,b as e1,c as ke,d as N1,f as Da,g as ge,h as Pa,i as Oa,k as R1,l,m as _a,o as Se,C as t1,p as Be,q as $e,t as N,u as Fa,v as Na,L as Un,w as jn,x as Qn,y as oe,z as w,A as u1,B as qn,D as m,E as Xn,F as Yn,G as Ze,$ as Ra,H as Ha,I as Ka,J as Z1,K as Jn,M as a1,N as i1,O as et,P as r1,Q as Ba,S as $a,T as Za,U,V as Ga,W as Wa,X as Ua,Y as nt,Z as ja,_ as Qa,a0 as tt,a1 as qa,a2 as V,a3 as at,a4 as Te,a5 as m1,a6 as Ee,a7 as F,a8 as Xa,a9 as Ya,aa as Ja,ab as ei,ac as hn,ad as ni,ae as ti,af as ai,ag as gn,ah as ii,ai as ri,aj as oi,ak as I1,al as G1,am as li,an as si,ao as ci,ap as di,aq as ui,ar as mi,as as pi,at as hi,au as gi,av as fi,aw as Ci,ax as bi,ay as Li,az as vi,aA as yi,aB as wi,aC as ki}from"./vendor-DvC8cT4X.js";import{m as Si,T as xi,a as fn,u as Mi}from"./pages-DRhPpbPi.js";import{u as Ti,_ as it,a as te,T as j,b as Ii,c as Ai,R as J,d as Ge,e as ne,f as zi,E as rt,g as B,h as W1,i as Ve,j as ot,k as ve,D as p1,l as o1,I as U1,m as j1,n as lt,P as Q1,C as h1,o as g1,A as We,L as Ce,p as Ei,q as ye,F as st,r as Vi,s as Di,t as Pi,v as ce,w as de,x as Oi,y as _i,z as Cn,B as Fi}from"./vendor-arizeai-Do1793cv.js";import{L as ct,a as dt,l as H1,j as ut,h as Ni,b as Ri,c as Hi,d as Ki,e as Bi,f as $i,s as Zi,R as Ue,g as mt,n as je,i as pt,E as q1,p as Gi,k as Wi}from"./vendor-codemirror-BzwZPyJM.js";import{V as Ui}from"./vendor-three-DwGkEfCM.js";const ht=function(){var n={defaultValue:null,kind:"LocalArgument",name:"clusters"},t={defaultValue:null,kind:"LocalArgument",name:"dataQualityMetricColumnName"},a={defaultValue:null,kind:"LocalArgument",name:"fetchDataQualityMetric"},i={defaultValue:null,kind:"LocalArgument",name:"fetchPerformanceMetric"},r={defaultValue:null,kind:"LocalArgument",name:"performanceMetric"},o=[{alias:null,args:null,kind:"ScalarField",name:"primaryValue",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"referenceValue",storageKey:null}],s=[{alias:null,args:[{kind:"Variable",name:"clusters",variableName:"clusters"}],concreteType:"Cluster",kind:"LinkedField",name:"clusters",plural:!0,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"eventIds",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"driftRatio",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"primaryToCorpusRatio",storageKey:null},{condition:"fetchDataQualityMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"columnName",variableName:"dataQualityMetricColumnName"},{kind:"Literal",name:"metric",value:"mean"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"dataQualityMetric",plural:!1,selections:o,storageKey:null}]},{condition:"fetchPerformanceMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"metric",variableName:"performanceMetric"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"performanceMetric",plural:!1,selections:o,storageKey:null}]}],storageKey:null}];return{fragment:{argumentDefinitions:[n,t,a,i,r],kind:"Fragment",metadata:null,name:"pointCloudStore_clusterMetricsQuery",selections:s,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[n,a,t,i,r],kind:"Operation",name:"pointCloudStore_clusterMetricsQuery",selections:s},params:{cacheID:"86666967012812887ac0a0149d2d2535",id:null,metadata:{},name:"pointCloudStore_clusterMetricsQuery",operationKind:"query",text:`query pointCloudStore_clusterMetricsQuery(
1
+ import{r as p,R as G,j as e,n as Wn,a as we,e as Xe,s as T1,b as e1,c as ke,d as N1,f as Da,g as ge,h as Pa,i as Oa,k as R1,l,m as _a,o as Se,C as t1,p as Be,q as $e,t as N,u as Fa,v as Na,L as Un,w as jn,x as Qn,y as oe,z as w,A as u1,B as qn,D as m,E as Xn,F as Yn,G as Ze,$ as Ra,H as Ha,I as Ka,J as Z1,K as Jn,M as a1,N as i1,O as et,P as r1,Q as Ba,S as $a,T as Za,U,V as Ga,W as Wa,X as Ua,Y as nt,Z as ja,_ as Qa,a0 as tt,a1 as qa,a2 as V,a3 as at,a4 as Te,a5 as m1,a6 as Ee,a7 as F,a8 as Xa,a9 as Ya,aa as Ja,ab as ei,ac as hn,ad as ni,ae as ti,af as ai,ag as gn,ah as ii,ai as ri,aj as oi,ak as I1,al as G1,am as li,an as si,ao as ci,ap as di,aq as ui,ar as mi,as as pi,at as hi,au as gi,av as fi,aw as Ci,ax as bi,ay as Li,az as vi,aA as yi,aB as wi,aC as ki}from"./vendor-DvC8cT4X.js";import{m as Si,T as xi,a as fn,u as Mi}from"./pages-nMcybglv.js";import{u as Ti,_ as it,a as te,T as j,b as Ii,c as Ai,R as J,d as Ge,e as ne,f as zi,E as rt,g as B,h as W1,i as Ve,j as ot,k as ve,D as p1,l as o1,I as U1,m as j1,n as lt,P as Q1,C as h1,o as g1,A as We,L as Ce,p as Ei,q as ye,F as st,r as Vi,s as Di,t as Pi,v as ce,w as de,x as Oi,y as _i,z as Cn,B as Fi}from"./vendor-arizeai-Do1793cv.js";import{L as ct,a as dt,l as H1,j as ut,h as Ni,b as Ri,c as Hi,d as Ki,e as Bi,f as $i,s as Zi,R as Ue,g as mt,n as je,i as pt,E as q1,p as Gi,k as Wi}from"./vendor-codemirror-BzwZPyJM.js";import{V as Ui}from"./vendor-three-DwGkEfCM.js";const ht=function(){var n={defaultValue:null,kind:"LocalArgument",name:"clusters"},t={defaultValue:null,kind:"LocalArgument",name:"dataQualityMetricColumnName"},a={defaultValue:null,kind:"LocalArgument",name:"fetchDataQualityMetric"},i={defaultValue:null,kind:"LocalArgument",name:"fetchPerformanceMetric"},r={defaultValue:null,kind:"LocalArgument",name:"performanceMetric"},o=[{alias:null,args:null,kind:"ScalarField",name:"primaryValue",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"referenceValue",storageKey:null}],s=[{alias:null,args:[{kind:"Variable",name:"clusters",variableName:"clusters"}],concreteType:"Cluster",kind:"LinkedField",name:"clusters",plural:!0,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"eventIds",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"driftRatio",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"primaryToCorpusRatio",storageKey:null},{condition:"fetchDataQualityMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"columnName",variableName:"dataQualityMetricColumnName"},{kind:"Literal",name:"metric",value:"mean"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"dataQualityMetric",plural:!1,selections:o,storageKey:null}]},{condition:"fetchPerformanceMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"metric",variableName:"performanceMetric"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"performanceMetric",plural:!1,selections:o,storageKey:null}]}],storageKey:null}];return{fragment:{argumentDefinitions:[n,t,a,i,r],kind:"Fragment",metadata:null,name:"pointCloudStore_clusterMetricsQuery",selections:s,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[n,a,t,i,r],kind:"Operation",name:"pointCloudStore_clusterMetricsQuery",selections:s},params:{cacheID:"86666967012812887ac0a0149d2d2535",id:null,metadata:{},name:"pointCloudStore_clusterMetricsQuery",operationKind:"query",text:`query pointCloudStore_clusterMetricsQuery(
2
2
  $clusters: [ClusterInput!]!
3
3
  $fetchDataQualityMetric: Boolean!
4
4
  $dataQualityMetricColumnName: String
@@ -1,4 +1,4 @@
1
- import{r as c,j as e,dL as v,l as n,U as F,R as w,D as E,bq as L,dM as S,dN as R,dO as a,dP as k,t as I,dQ as A}from"./vendor-DvC8cT4X.js";import{k as C,Q as _,D as j,Y as z}from"./vendor-arizeai-Do1793cv.js";import{E as O,L as T,R as D,r as N,b as G,F as M,A as U,c as q,d as B,P as J,h as K,M as Q,e as m,D as V,f as W,g as H,i as Y,j as $,k as X,l as Z,p as ee,n as h,o as ae,S as re,s as te,q as oe,t as g,v as ne,w as u,x as b,y as se,z as le,B as ie,C as de,G as ce,H as x,I as pe,J as me,K as he,N as ge,O as ue,Q as be,U as xe,V as fe}from"./pages-DRhPpbPi.js";import{V as Pe,d2 as ye,at as ve,ab as Fe,d3 as we,d4 as Ee}from"./components-Dn-PoB4S.js";import"./vendor-three-DwGkEfCM.js";import"./vendor-codemirror-BzwZPyJM.js";import"./vendor-shiki-Cl9QBraO.js";import"./vendor-recharts-_Jb7JjhG.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))d(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&d(l)}).observe(document,{childList:!0,subtree:!0});function i(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function d(t){if(t.ep)return;t.ep=!0;const o=i(t);fetch(t.href,o)}})();const f="arize-phoenix-feature-flags",p={__RESET__:!1};function Le(){const r=localStorage.getItem(f);if(!r)return p;try{const s=JSON.parse(r);return Object.assign({},p,s)}catch{return p}}const P=c.createContext(null);function Se(){const r=w.useContext(P);if(r===null)throw new Error("useFeatureFlags must be used within a FeatureFlagsProvider");return r}function Re(r){const[s,i]=c.useState(Le()),d=t=>{localStorage.setItem(f,JSON.stringify(t)),i(t)};return e(P.Provider,{value:{featureFlags:s,setFeatureFlags:d},children:e(ke,{children:r.children})})}function ke(r){const{children:s}=r,{featureFlags:i,setFeatureFlags:d}=Se(),[t,o]=c.useState(!1);return v("ctrl+shift+f",()=>o(!0)),n(F,{children:[s,e(j,{type:"modal",isDismissable:!0,onDismiss:()=>o(!1),children:t&&e(C,{title:"Feature Flags",children:e(Pe,{height:"size-1000",padding:"size-100",children:Object.keys(i).map(l=>e(_,{isSelected:i[l],onChange:y=>d({...i,[l]:y}),children:l},l))})})})]})}function Ie(){return e(L,{styles:E`
1
+ import{r as c,j as e,dL as v,l as n,U as F,R as w,D as E,bq as L,dM as S,dN as R,dO as a,dP as k,t as I,dQ as A}from"./vendor-DvC8cT4X.js";import{k as C,Q as _,D as j,Y as z}from"./vendor-arizeai-Do1793cv.js";import{E as O,L as T,R as D,r as N,b as G,F as M,A as U,c as q,d as B,P as J,h as K,M as Q,e as m,D as V,f as W,g as H,i as Y,j as $,k as X,l as Z,p as ee,n as h,o as ae,S as re,s as te,q as oe,t as g,v as ne,w as u,x as b,y as se,z as le,B as ie,C as de,G as ce,H as x,I as pe,J as me,K as he,N as ge,O as ue,Q as be,U as xe,V as fe}from"./pages-nMcybglv.js";import{V as Pe,d2 as ye,at as ve,ab as Fe,d3 as we,d4 as Ee}from"./components-CN9dra1h.js";import"./vendor-three-DwGkEfCM.js";import"./vendor-codemirror-BzwZPyJM.js";import"./vendor-shiki-Cl9QBraO.js";import"./vendor-recharts-_Jb7JjhG.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))d(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&d(l)}).observe(document,{childList:!0,subtree:!0});function i(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function d(t){if(t.ep)return;t.ep=!0;const o=i(t);fetch(t.href,o)}})();const f="arize-phoenix-feature-flags",p={__RESET__:!1};function Le(){const r=localStorage.getItem(f);if(!r)return p;try{const s=JSON.parse(r);return Object.assign({},p,s)}catch{return p}}const P=c.createContext(null);function Se(){const r=w.useContext(P);if(r===null)throw new Error("useFeatureFlags must be used within a FeatureFlagsProvider");return r}function Re(r){const[s,i]=c.useState(Le()),d=t=>{localStorage.setItem(f,JSON.stringify(t)),i(t)};return e(P.Provider,{value:{featureFlags:s,setFeatureFlags:d},children:e(ke,{children:r.children})})}function ke(r){const{children:s}=r,{featureFlags:i,setFeatureFlags:d}=Se(),[t,o]=c.useState(!1);return v("ctrl+shift+f",()=>o(!0)),n(F,{children:[s,e(j,{type:"modal",isDismissable:!0,onDismiss:()=>o(!1),children:t&&e(C,{title:"Feature Flags",children:e(Pe,{height:"size-1000",padding:"size-100",children:Object.keys(i).map(l=>e(_,{isSelected:i[l],onChange:y=>d({...i,[l]:y}),children:l},l))})})})]})}function Ie(){return e(L,{styles:E`
2
2
  body {
3
3
  background-color: var(--ac-global-color-grey-75);
4
4
  color: var(--ac-global-text-color-900);
@@ -1,4 +1,4 @@
1
- import{z as R,aD as de,aE as Le,aF as _e,aG as Oa,A as _d,r as u,j as e,R as ve,n as Ea,D as v,l as s,aH as je,a0 as Y,U as B,t as L,a6 as Be,a7 as G,a8 as Ke,a9 as Te,ac as W,aI as he,aJ as mn,aK as gn,aL as Oe,aM as Ed,aN as Et,aO as Dn,aP as Ga,a2 as ie,aQ as Va,ab as Gn,g as Xl,aR as wd,a4 as zt,G as Rd,aS as Md,aT as bt,aU as St,aV as ka,aW as da,aX as Yl,o as Xa,aY as Ad,ay as Nd,az as zd,aZ as Vd,p as ei,q as $d,a_ as Od,ah as Qd,a$ as jd,b0 as fl,b1 as qd,b2 as Ud,b3 as Bd,b4 as Hd,b5 as Gd,b6 as Wd,b7 as Jd,b8 as Zd,b9 as Xd}from"./vendor-DvC8cT4X.js";import{A as ce,C as j,h as Vt,k as J,D as ee,B as $t,y as qe,z as ne,G as Yd,s as Ya,p as et,P as Wn,j as Jn,q as nt,v as Zn,w as ca,H as Xe,L as Qa,J as ni,K as ec,M as ai,N as nc,O as ac,Q as ua,e as we,f as Xn,T as ue,S as Ot,i as Re,g as ae,E as at,a as De,U as Qt,V as jt,c as Pn,o as hl,W as tc,n as lc,I as ic,m as kl,l as rc,u as sc,X as oc,r as dc,R as xa,d as ti}from"./vendor-arizeai-Do1793cv.js";import{s as qt,a as me,l as cc,j as li,b as Ae,i as ii,c as ri,d as Tn,e as si,f as uc,g as Da,D as mc,h as ja,k as gc,T as On,m as pc,n as bl,o as yc,p as fc,q as Sl,r as hc,t as kc,N as bc,u as Sc,L as ye,v as Ce,w as wa,B as vc,_ as k,x as Cn,I as D,C as Cc,G as oi,y as Ut,P as ma,z as tt,S as Fc,A as Kc,E as Tc,F as xc,H as Ic,J as Dc,K as Pc,M as Lc,O as un,Q as N,R as He,U as di,V as C,W as ze,X as Bt,Y as Yn,Z as Me,$ as F,a0 as pe,a1 as Fe,a2 as ga,a3 as pn,a4 as kn,a5 as lt,a6 as xe,a7 as re,a8 as Ze,a9 as Ln,aa as se,ab as Ne,ac as ci,ad as We,ae as ui,af as Ye,ag as _n,ah as Ht,ai as an,aj as bn,ak as Gt,al as mi,am as gi,an as yn,ao as ke,ap as be,aq as Se,ar as vl,as as Cl,at as Sn,au as _c,av as Ec,aw as U,ax as pi,ay as Wt,az as it,aA as pa,aB as yi,aC as ya,aD as fa,aE as fi,aF as vn,aG as Ee,aH as rt,aI as En,aJ as hi,aK as Jt,aL as tn,aM as ki,aN as wc,aO as Rc,aP as Mc,aQ as Ac,aR as Nc,aS as ln,aT as rn,aU as zc,aV as Ge,aW as Vc,aX as $c,aY as bi,aZ as Oc,a_ as Qc,a$ as Fl,b0 as jc,b1 as qc,b2 as Uc,b3 as Bc,b4 as Hc,b5 as Gc,b6 as Si,b7 as Wc,b8 as Jc,b9 as Zc,ba as Xc,bb as Yc,bc as qn,bd as Zt,be as vi,bf as ra,bg as wt,bh as $n,bi as Kn,bj as eu,bk as nu,bl as Ci,bm as st,bn as Fi,bo as sn,bp as au,bq as tu,br as Pa,bs as Pe,bt as qa,bu as Ki,bv as lu,bw as $e,bx as Xt,by as iu,bz as ru,bA as su,bB as ou,bC as Yt,bD as Ue,bE as en,bF as ha,bG as du,bH as ot,bI as Ti,bJ as xi,bK as vt,bL as cu,bM as dt,bN as ct,bO as Je,bP as Ve,bQ as uu,bR as el,bS as Ii,bT as Di,bU as Pi,bV as mu,bW as on,bX as Li,bY as xn,bZ as gu,b_ as Kl,b$ as _i,c0 as pu,c1 as yu,c2 as fu,c3 as hu,c4 as Ei,c5 as dn,c6 as ku,c7 as sa,c8 as Rt,c9 as bu,ca as wi,cb as Ri,cc as Su,cd as vu,ce as Cu,cf as ut,cg as Mi,ch as Ra,ci as Tl,cj as Ai,ck as nl,cl as Fu,cm as Ku,cn as al,co as Ni,cp as zi,cq as Tu,cr as Mt,cs as Vi,ct as xu,cu as Iu,cv as $a,cw as Du,cx as Pu,cy as $i,cz as Oi,cA as Lu,cB as _u,cC as Eu,cD as wu,cE as Qi,cF as tl,cG as ji,cH as Ru,cI as Mu,cJ as At,cK as Au,cL as Nu,cM as zu,cN as Vu,cO as $u,cP as Ou,cQ as qi,cR as Qu,cS as ju,cT as qu,cU as Uu,cV as Bu,cW as Hu,cX as Gu,cY as Wu,cZ as Ju,c_ as Zu,c$ as Xu,d0 as xl,d1 as Il}from"./components-Dn-PoB4S.js";import{p as Ma,R as wn,n as Rn,i as Yu,E as Ui,m as Bi,o as Hi,g as em}from"./vendor-codemirror-BzwZPyJM.js";import{R as Mn,C as Aa,X as An,Y as nn,a as Nn,T as zn,B as oa,A as La,b as Gi,c as ll,L as Wi,d as nm,P as am,e as tm,f as lm}from"./vendor-recharts-_Jb7JjhG.js";const im=4,rm={user:["user","human"],ai:["assistant","bot","ai"],system:["system"],tool:["tool"]},sm="Unable to parse span input messages, expected messages which include a role and content.",om="Unable to parse span output messages, expected messages which include a role and content.",dm="Unable to parse span output expected output.value to be present.",cm="Unable to parse span attributes, attributes must be valid JSON.",um="Unable to parse model config, expected llm.model_name to be present.",mm="Unable to parse model config, expected llm.invocation_parameters JSON string to be present.",gm="Unable to parse invocation parameters response_format, expected llm.invocation_parameters.response_format to be a well formed json object or undefined.",pm="Unable to parse tools, expected tools to be an array of valid tools.",ym="Unable to parse prompt template variables, expected prompt template variables to be a valid JSON object string.",Dl={AZURE_OPENAI:[],ANTHROPIC:["claude"],OPENAI:["gpt","o1"],GEMINI:["gemini"]},Ia="TOOL_CHOICE",Ua="tool_choice",Un="RESPONSE_FORMAT",Qn="response_format",fm=[Ia,Un],il=qt()(R.union([R.literal("auto"),R.literal("none"),R.literal("required"),R.object({type:R.literal("function"),function:R.object({name:R.string()})})])),rl=R.object({type:R.union([R.literal("auto"),R.literal("any"),R.literal("tool")]),disable_parallel_tool_use:R.boolean().optional(),name:R.string().optional()}),hm=rl.transform(n=>{switch(n.type){case"any":case"auto":return"auto";case"tool":return n.name?{type:"function",function:{name:n.name}}:"auto";default:return"auto"}}),km=il.transform(n=>typeof n=="string"?{type:"auto"}:{type:"tool",name:n.function.name});R.union([il,rl]);const bm=n=>{const{success:a,data:t}=il.safeParse(n);if(a)return{provider:"OPENAI",toolChoice:t};const{success:l,data:i}=rl.safeParse(n);return l?{provider:"ANTHROPIC",toolChoice:i}:{provider:null,toolChoice:null}},Sm=n=>{const{provider:a,toolChoice:t}=bm(n);if(a==null||t==null)throw new Error("Could not detect provider of tool choice");switch(a){case"AZURE_OPENAI":case"OPENAI":return t;case"ANTHROPIC":return hm.parse(t);default:me()}},vm=({toolChoice:n,targetProvider:a})=>{switch(a){case"AZURE_OPENAI":case"OPENAI":return n;case"ANTHROPIC":return km.parse(n);case"GEMINI":return n;default:me()}},Cm=({toolChoice:n,targetProvider:a})=>{try{const t=Sm(n);return vm({toolChoice:t,targetProvider:a})}catch{return null}},Fm=R.object({tool_call:R.object({id:R.string().optional(),function:R.object({name:R.string(),arguments:R.string()}).partial()}).partial()}).partial(),Ji=R.object({[de.message]:R.object({[Le.role]:R.string(),[Le.content]:R.union([R.string(),R.array(R.record(R.string(),R.unknown()))]).default(""),[Le.tool_calls]:R.array(Fm).optional(),[Le.tool_call_id]:R.string().optional()})}),Km=R.object({[de.llm]:R.object({[_e.input_messages]:R.array(Ji)})}),Tm=R.object({[de.llm]:R.object({[_e.output_messages]:R.array(Ji)})}),xm=R.object({[de.output]:R.object({value:R.string()})}),Zi=qt()(R.enum(["user","ai","system","tool"])),Im=qt()(R.object({id:R.number(),role:Zi,content:R.string().optional(),toolCallId:R.string().optional(),toolCalls:R.array(cc).optional()})),Dm=R.array(Im),sl=R.lazy(()=>R.record(li)),Pm=sl,Xi=R.string().transform((n,a)=>{const{json:t}=Ae(n);if(!ii(t))return a.addIssue({code:R.ZodIssueCode.custom,message:"The invocation parameters must be a valid JSON object"}),R.NEVER;const{success:l,data:i}=Pm.safeParse(t);return l?i:(a.addIssue({code:R.ZodIssueCode.custom,message:"The invocation parameters must be a valid JSON object"}),R.NEVER)}).default("{}"),Lm=R.object({[de.llm]:R.object({[_e.provider]:R.string().optional(),[_e.model_name]:R.string()})}),Yi=R.object({[de.llm]:R.object({[_e.invocation_parameters]:Xi})}),_m=R.object({[de.llm]:R.object({[_e.invocation_parameters]:Xi.pipe(R.object({response_format:sl.optional()}))})}),Em=R.string().transform((n,a)=>{const{json:t}=Ae(n);return t==null||!ii(t)?(a.addIssue({code:R.ZodIssueCode.custom,message:"The tool JSON schema must be a valid JSON object"}),R.NEVER):t}).transform((n,a)=>{const{data:t,success:l}=ri.safeParse(n);return l?t:(a.addIssue({code:R.ZodIssueCode.custom,message:"The tool JSON schema must be a valid tool schema"}),R.NEVER)}),wm=R.object({[de.llm]:R.object({[_e.tools]:R.array(R.object({[de.tool]:R.object({[Oa.json_schema]:Em})}).optional()).optional()}).optional()}).optional(),Rm=R.lazy(()=>R.object({type:R.literal("json_schema"),json_schema:R.object({name:R.string().describe("The name of the schema"),schema:li.describe("The schema itself in JSON format"),strict:R.literal(!0).describe("The schema must be strict")})})),Mm=_d(Rm,{removeAdditionalStrategy:"passthrough"}),Am=R.string().transform((n,a)=>{const{json:t}=Ae(n);return Tn(t)?Object.entries(t).reduce((i,[r,o])=>{if(typeof o=="string")i[r]=o;else{const{json:c}=si(o);c!=null&&(i[r]=c)}return i},{}):(a.addIssue({code:R.ZodIssueCode.custom,message:"The prompt template variables must be a valid JSON object"}),R.NEVER)}),Nm=R.object({[de.llm]:R.object({[_e.prompt_template]:R.object({variables:Am}).optional()}).optional()}).optional();function er(n){return Zi.safeParse(n).success}function Wa(n){if(er(n))return n;for(const[a,t]of Object.entries(rm))if(t.includes(n))return a;return gc}function zm({toolCalls:n,provider:a}){if(n!=null)return n.map(({tool_call:t})=>{var i,r,o,c;if(t==null)return null;let l={};if(((i=t.function)==null?void 0:i.arguments)!=null){const{json:d}=Ae(t.function.arguments);Tn(d)&&(l=d)}switch(a){case"OPENAI":case"AZURE_OPENAI":return{id:t.id??"",function:{name:((r=t.function)==null?void 0:r.name)??"",arguments:l}};case"ANTHROPIC":return{id:t.id??"",type:"tool_use",name:((o=t.function)==null?void 0:o.name)??"",input:l};case"GEMINI":return{id:t.id??"",function:{name:((c=t.function)==null?void 0:c.name)??"",arguments:l}};default:me()}}).filter(t=>t!=null)}function nr({messages:n,provider:a}){return n.map(({message:t})=>({id:Da(),role:t.tool_call_id!=null?Wa("tool"):Wa(t.role),content:typeof t.content=="string"?t.content:void 0,toolCalls:zm({provider:a,toolCalls:t.tool_calls}),toolCallId:t.tool_call_id}))}function Vm({provider:n,parsedAttributes:a}){var l;const t=Km.safeParse(a);if(!t.success)return{messageParsingErrors:[sm],messages:null};if(n==="ANTHROPIC"){const{success:i,data:r}=Yi.safeParse(a);if(i){const o=t.data.llm.input_messages,c=(l=r.llm.invocation_parameters)==null?void 0:l.system;typeof c=="string"&&c&&(!o||o[0].message.role!=="system")&&t.data.llm.input_messages.unshift({message:{role:"system",content:c}})}}return{messageParsingErrors:[],messages:nr({provider:n,messages:t.data.llm.input_messages})}}function $m({provider:n,parsedAttributes:a}){const t=[],l=Tm.safeParse(a);if(l.success)return{output:nr({provider:n,messages:l.data.llm.output_messages}),outputParsingErrors:t};t.push(om);const i=xm.safeParse(a);return i.success?{output:i.data.output.value,outputParsingErrors:t}:(t.push(dm),{output:void 0,outputParsingErrors:t})}function Om(n){if(n==null)return null;switch(n.toLowerCase()){case"openai":return"OPENAI";case"anthropic":return"ANTHROPIC";case"google":return"GEMINI";case"azure":return"AZURE_OPENAI";default:return null}}function Qm(n){for(const a of Object.keys(Dl))if(Dl[a].some(l=>n.includes(l)))return a;return mc}function jm(n){const{success:a,data:t}=Lm.safeParse(n);if(a){const l=Om(t.llm.provider)||Qm(t.llm.model_name);return{modelConfig:{modelName:t.llm.model_name,provider:l,invocationParameters:[],supportedInvocationParameters:[]},parsingErrors:[]}}return{modelConfig:null,parsingErrors:[um]}}function qm(n,a=[]){const{success:t,data:l}=Yi.safeParse(n),i=[];return t||i.push(mm),{invocationParameters:Ym((l==null?void 0:l.llm.invocation_parameters)??{},a),parsingErrors:i}}function Um(n){const{success:a,data:t}=_m.safeParse(n);return a?{responseFormat:t.llm.invocation_parameters.response_format,parsingErrors:[]}:{responseFormat:void 0,parsingErrors:[gm]}}function Bm(n){var a;return(((a=n==null?void 0:n.llm)==null?void 0:a.tools)??[]).map(t=>(t==null?void 0:t.tool)==null?null:{id:ja(),definition:t.tool.json_schema}).filter(t=>t!=null)}function Hm(n){var l;const{data:a,success:t}=wm.safeParse(n);return t?((l=a==null?void 0:a.llm)==null?void 0:l.tools)==null?{tools:null,parsingErrors:[]}:{tools:Bm(a),parsingErrors:[]}:{tools:null,parsingErrors:[pm]}}function Gm(n){var l;const{success:a,data:t}=Nm.safeParse(n);return a?((l=t==null?void 0:t.llm)==null?void 0:l.prompt_template)==null?{variables:null,parsingErrors:[]}:{variables:t.llm.prompt_template.variables,parsingErrors:[]}:{variables:null,parsingErrors:[ym]}}function Wm(n){const a=uc(),{json:t,parseError:l}=Ae(n.attributes);if(l)return{playgroundInstance:{...a,spanId:(n==null?void 0:n.id)??null},parsingErrors:[cm]};const i=n.invocationParameters,r=jm(t);let{modelConfig:o}=r;const{parsingErrors:c}=r,{messages:d,messageParsingErrors:m}=Vm({provider:(o==null?void 0:o.provider)??a.model.provider,parsedAttributes:t}),{output:f,outputParsingErrors:g}=$m({provider:(o==null?void 0:o.provider)??a.model.provider,parsedAttributes:t}),{invocationParameters:y,parsingErrors:p}=qm(t,i),{variables:h,parsingErrors:b}=Gm(t),{parsingErrors:K}=Um(t);o=o!=null?{...o,invocationParameters:K.length>0?y.filter(P=>P.invocationName!==Qn&&P.canonicalName!==Un):y}:null;const{tools:T,parsingErrors:I}=Hm(t);return{playgroundInstance:{...a,model:o??a.model,template:d!=null?{__type:"chat",messages:d}:a.template,output:f,spanId:n.id,tools:T??a.tools},playgroundInput:h!=null?{variablesValueCache:h}:void 0,parsingErrors:[...m,...g,...c,...I,...p,...K,...b]}}const Jm=n=>Dm.safeParse(n).success,ar=({instance:n,templateLanguage:a})=>{if(a==On.NONE)return[];const t=new Set,l=n.template.__type,i=pc(a);switch(l){case"chat":{n.template.messages.forEach(r=>{(r.content==null?[]:i.extractVariables(r.content)).forEach(c=>{t.add(c)})});break}case"text_completion":{i.extractVariables(n.template.prompt).forEach(o=>{t.add(o)});break}default:me()}return Array.from(t)},Zm=({instances:n,templateLanguage:a})=>a==On.NONE?[]:Array.from(new Set(n.flatMap(t=>ar({instance:t,templateLanguage:a})))),tr=({instances:n,templateLanguage:a,input:t})=>{if(a==On.NONE)return{variablesMap:{},variableKeys:[]};const l=Zm({instances:n,templateLanguage:a}),i=t.variablesValueCache??{};return{variablesMap:l.reduce((o,c)=>(o[c]=i[c]||"",o),{}),variableKeys:l}};function Bn(n,a){return n.invocationName===a.invocationName||n.canonicalName!=null&&a.canonicalName!=null&&n.canonicalName===a.canonicalName}const Xm=(n,a)=>n.filter(t=>a.some(l=>Bn(l,t))).map(t=>{var l;return{...t,invocationName:((l=a.find(i=>Bn(i,t)))==null?void 0:l.invocationName)??t.invocationName}}),mt=n=>n.replace(/_([a-z])/g,(a,t)=>t.toUpperCase()),Ym=(n,a)=>Object.entries(n).map(([t,l])=>{const i=a.find(r=>r.canonicalName&&r.canonicalName.toLowerCase()===t.toLowerCase()||r.invocationName&&r.invocationName.toLowerCase()===t.toLowerCase());return i==null||i.invocationInputField==null||i.invocationName==null?null:{canonicalName:i.canonicalName,invocationName:i.invocationName,[mt(i.invocationInputField)]:l}}).filter(t=>t!=null),Ba=n=>{const{provider:a,validatedToolDefinition:t}=fc(n.definition);switch(a){case"OPENAI":case"AZURE_OPENAI":return t.function.name;case"ANTHROPIC":return t.name;case"UNKNOWN":return null;default:me()}},Pl=({provider:n,toolNumber:a})=>{switch(n){case"OPENAI":case"AZURE_OPENAI":return{id:ja(),definition:Sl(a)};case"ANTHROPIC":return{id:ja(),definition:hc(a)};case"GEMINI":return{id:ja(),definition:Sl(a)};default:me()}},eg=n=>{switch(n){case"OPENAI":case"AZURE_OPENAI":return bl();case"ANTHROPIC":return yc();case"GEMINI":return bl();default:me()}};function ng(n){return{content:n.content,role:ag(n.role),toolCalls:n.toolCalls,toolCallId:n.toolCallId}}function ag(n){switch(n){case"system":return"SYSTEM";case"user":return"USER";case"tool":return"TOOL";case"ai":return"AI";default:me()}}const lr=({playgroundStore:n,instanceId:a,credentials:t})=>{const{instances:l}=n.getState(),i=l.find(m=>m.id===a);if(!i)throw new Error(`No instance found for id ${a}`);if(i.template.__type!=="chat")throw new Error("We only support chat templates for now");const r=i.model.supportedInvocationParameters;let o=[...i.model.invocationParameters];const c=Cm({toolChoice:i.toolChoice,targetProvider:i.model.provider});i.tools.length>0?(o=o.filter(m=>m.invocationName!==Ua&&m.canonicalName!==Ia),o.push({canonicalName:Ia,invocationName:Ua,valueJson:c})):o=o.filter(m=>m.invocationName!==Ua&&m.canonicalName!==Ia),o=r.length?Xm(o,r):o;const d=i.model.provider==="AZURE_OPENAI"?{endpoint:i.model.endpoint,apiVersion:i.model.apiVersion}:{};return{messages:i.template.messages.map(ng),model:{providerKey:i.model.provider,name:i.model.modelName||"",...d},invocationParameters:o,tools:i.tools.length?i.tools.map(m=>m.definition):void 0,apiKey:t[i.model.provider]||null}},tg=({playgroundStore:n,instanceId:a,credentials:t})=>{const l=lr({playgroundStore:n,instanceId:a,credentials:t}),{instances:i,templateLanguage:r,input:o}=n.getState(),{variablesMap:c}=tr({instances:i,input:o,templateLanguage:r});return{...l,template:{variables:c,language:r}}},Ll=({playgroundStore:n,instanceId:a,credentials:t,datasetId:l})=>({...lr({playgroundStore:n,instanceId:a,credentials:t}),templateLanguage:n.getState().templateLanguage,datasetId:l});function ir(n){return n==null||n===""?"{}":typeof n=="string"?n:JSON.stringify(n,null,2)}function rr(n,a){return a.filter(t=>t.required).every(t=>n.some(l=>Bn(l,t)))}const lg=n=>{for(const[a,t]of Object.entries(n))if(a.endsWith("DefaultValue")&&t!=null)return n[a]};function A1(n,a){const t=new Map(n.map(l=>[l.canonicalName||l.invocationName,l]));return a.forEach(l=>{var d;const i=l.canonicalName||l.invocationName,r=lg(l),o=mt(l.invocationInputField||"");if(!l.invocationName||!l.invocationInputField||!i||r==null||((d=t.get(i))==null?void 0:d[o])!=null)return;const c={canonicalName:l.canonicalName,invocationName:l.invocationName,[o]:r};t.set(i,c)}),Array.from(t.values())}const sr=u.createContext(null);function N1({children:n,...a}){const[t]=u.useState(()=>kc(a));return e(sr.Provider,{value:t,children:n})}function Ja(n,a){const t=ve.useContext(sr);if(!t)throw new Error("Missing CredentialsContext.Provider in the tree");return Ea(t,n,a)}const or=u.createContext(null);function ig(){const n=u.useContext(or);if(n===null)throw new Error("useFunctionality must be used within a FunctionalityProvider");return n}function z1(n){return e(or.Provider,{value:{authenticationEnabled:window.Config.authenticationEnabled},children:n.children})}const rg=v`
1
+ import{z as R,aD as de,aE as Le,aF as _e,aG as Oa,A as _d,r as u,j as e,R as ve,n as Ea,D as v,l as s,aH as je,a0 as Y,U as B,t as L,a6 as Be,a7 as G,a8 as Ke,a9 as Te,ac as W,aI as he,aJ as mn,aK as gn,aL as Oe,aM as Ed,aN as Et,aO as Dn,aP as Ga,a2 as ie,aQ as Va,ab as Gn,g as Xl,aR as wd,a4 as zt,G as Rd,aS as Md,aT as bt,aU as St,aV as ka,aW as da,aX as Yl,o as Xa,aY as Ad,ay as Nd,az as zd,aZ as Vd,p as ei,q as $d,a_ as Od,ah as Qd,a$ as jd,b0 as fl,b1 as qd,b2 as Ud,b3 as Bd,b4 as Hd,b5 as Gd,b6 as Wd,b7 as Jd,b8 as Zd,b9 as Xd}from"./vendor-DvC8cT4X.js";import{A as ce,C as j,h as Vt,k as J,D as ee,B as $t,y as qe,z as ne,G as Yd,s as Ya,p as et,P as Wn,j as Jn,q as nt,v as Zn,w as ca,H as Xe,L as Qa,J as ni,K as ec,M as ai,N as nc,O as ac,Q as ua,e as we,f as Xn,T as ue,S as Ot,i as Re,g as ae,E as at,a as De,U as Qt,V as jt,c as Pn,o as hl,W as tc,n as lc,I as ic,m as kl,l as rc,u as sc,X as oc,r as dc,R as xa,d as ti}from"./vendor-arizeai-Do1793cv.js";import{s as qt,a as me,l as cc,j as li,b as Ae,i as ii,c as ri,d as Tn,e as si,f as uc,g as Da,D as mc,h as ja,k as gc,T as On,m as pc,n as bl,o as yc,p as fc,q as Sl,r as hc,t as kc,N as bc,u as Sc,L as ye,v as Ce,w as wa,B as vc,_ as k,x as Cn,I as D,C as Cc,G as oi,y as Ut,P as ma,z as tt,S as Fc,A as Kc,E as Tc,F as xc,H as Ic,J as Dc,K as Pc,M as Lc,O as un,Q as N,R as He,U as di,V as C,W as ze,X as Bt,Y as Yn,Z as Me,$ as F,a0 as pe,a1 as Fe,a2 as ga,a3 as pn,a4 as kn,a5 as lt,a6 as xe,a7 as re,a8 as Ze,a9 as Ln,aa as se,ab as Ne,ac as ci,ad as We,ae as ui,af as Ye,ag as _n,ah as Ht,ai as an,aj as bn,ak as Gt,al as mi,am as gi,an as yn,ao as ke,ap as be,aq as Se,ar as vl,as as Cl,at as Sn,au as _c,av as Ec,aw as U,ax as pi,ay as Wt,az as it,aA as pa,aB as yi,aC as ya,aD as fa,aE as fi,aF as vn,aG as Ee,aH as rt,aI as En,aJ as hi,aK as Jt,aL as tn,aM as ki,aN as wc,aO as Rc,aP as Mc,aQ as Ac,aR as Nc,aS as ln,aT as rn,aU as zc,aV as Ge,aW as Vc,aX as $c,aY as bi,aZ as Oc,a_ as Qc,a$ as Fl,b0 as jc,b1 as qc,b2 as Uc,b3 as Bc,b4 as Hc,b5 as Gc,b6 as Si,b7 as Wc,b8 as Jc,b9 as Zc,ba as Xc,bb as Yc,bc as qn,bd as Zt,be as vi,bf as ra,bg as wt,bh as $n,bi as Kn,bj as eu,bk as nu,bl as Ci,bm as st,bn as Fi,bo as sn,bp as au,bq as tu,br as Pa,bs as Pe,bt as qa,bu as Ki,bv as lu,bw as $e,bx as Xt,by as iu,bz as ru,bA as su,bB as ou,bC as Yt,bD as Ue,bE as en,bF as ha,bG as du,bH as ot,bI as Ti,bJ as xi,bK as vt,bL as cu,bM as dt,bN as ct,bO as Je,bP as Ve,bQ as uu,bR as el,bS as Ii,bT as Di,bU as Pi,bV as mu,bW as on,bX as Li,bY as xn,bZ as gu,b_ as Kl,b$ as _i,c0 as pu,c1 as yu,c2 as fu,c3 as hu,c4 as Ei,c5 as dn,c6 as ku,c7 as sa,c8 as Rt,c9 as bu,ca as wi,cb as Ri,cc as Su,cd as vu,ce as Cu,cf as ut,cg as Mi,ch as Ra,ci as Tl,cj as Ai,ck as nl,cl as Fu,cm as Ku,cn as al,co as Ni,cp as zi,cq as Tu,cr as Mt,cs as Vi,ct as xu,cu as Iu,cv as $a,cw as Du,cx as Pu,cy as $i,cz as Oi,cA as Lu,cB as _u,cC as Eu,cD as wu,cE as Qi,cF as tl,cG as ji,cH as Ru,cI as Mu,cJ as At,cK as Au,cL as Nu,cM as zu,cN as Vu,cO as $u,cP as Ou,cQ as qi,cR as Qu,cS as ju,cT as qu,cU as Uu,cV as Bu,cW as Hu,cX as Gu,cY as Wu,cZ as Ju,c_ as Zu,c$ as Xu,d0 as xl,d1 as Il}from"./components-CN9dra1h.js";import{p as Ma,R as wn,n as Rn,i as Yu,E as Ui,m as Bi,o as Hi,g as em}from"./vendor-codemirror-BzwZPyJM.js";import{R as Mn,C as Aa,X as An,Y as nn,a as Nn,T as zn,B as oa,A as La,b as Gi,c as ll,L as Wi,d as nm,P as am,e as tm,f as lm}from"./vendor-recharts-_Jb7JjhG.js";const im=4,rm={user:["user","human"],ai:["assistant","bot","ai"],system:["system"],tool:["tool"]},sm="Unable to parse span input messages, expected messages which include a role and content.",om="Unable to parse span output messages, expected messages which include a role and content.",dm="Unable to parse span output expected output.value to be present.",cm="Unable to parse span attributes, attributes must be valid JSON.",um="Unable to parse model config, expected llm.model_name to be present.",mm="Unable to parse model config, expected llm.invocation_parameters JSON string to be present.",gm="Unable to parse invocation parameters response_format, expected llm.invocation_parameters.response_format to be a well formed json object or undefined.",pm="Unable to parse tools, expected tools to be an array of valid tools.",ym="Unable to parse prompt template variables, expected prompt template variables to be a valid JSON object string.",Dl={AZURE_OPENAI:[],ANTHROPIC:["claude"],OPENAI:["gpt","o1"],GEMINI:["gemini"]},Ia="TOOL_CHOICE",Ua="tool_choice",Un="RESPONSE_FORMAT",Qn="response_format",fm=[Ia,Un],il=qt()(R.union([R.literal("auto"),R.literal("none"),R.literal("required"),R.object({type:R.literal("function"),function:R.object({name:R.string()})})])),rl=R.object({type:R.union([R.literal("auto"),R.literal("any"),R.literal("tool")]),disable_parallel_tool_use:R.boolean().optional(),name:R.string().optional()}),hm=rl.transform(n=>{switch(n.type){case"any":case"auto":return"auto";case"tool":return n.name?{type:"function",function:{name:n.name}}:"auto";default:return"auto"}}),km=il.transform(n=>typeof n=="string"?{type:"auto"}:{type:"tool",name:n.function.name});R.union([il,rl]);const bm=n=>{const{success:a,data:t}=il.safeParse(n);if(a)return{provider:"OPENAI",toolChoice:t};const{success:l,data:i}=rl.safeParse(n);return l?{provider:"ANTHROPIC",toolChoice:i}:{provider:null,toolChoice:null}},Sm=n=>{const{provider:a,toolChoice:t}=bm(n);if(a==null||t==null)throw new Error("Could not detect provider of tool choice");switch(a){case"AZURE_OPENAI":case"OPENAI":return t;case"ANTHROPIC":return hm.parse(t);default:me()}},vm=({toolChoice:n,targetProvider:a})=>{switch(a){case"AZURE_OPENAI":case"OPENAI":return n;case"ANTHROPIC":return km.parse(n);case"GEMINI":return n;default:me()}},Cm=({toolChoice:n,targetProvider:a})=>{try{const t=Sm(n);return vm({toolChoice:t,targetProvider:a})}catch{return null}},Fm=R.object({tool_call:R.object({id:R.string().optional(),function:R.object({name:R.string(),arguments:R.string()}).partial()}).partial()}).partial(),Ji=R.object({[de.message]:R.object({[Le.role]:R.string(),[Le.content]:R.union([R.string(),R.array(R.record(R.string(),R.unknown()))]).default(""),[Le.tool_calls]:R.array(Fm).optional(),[Le.tool_call_id]:R.string().optional()})}),Km=R.object({[de.llm]:R.object({[_e.input_messages]:R.array(Ji)})}),Tm=R.object({[de.llm]:R.object({[_e.output_messages]:R.array(Ji)})}),xm=R.object({[de.output]:R.object({value:R.string()})}),Zi=qt()(R.enum(["user","ai","system","tool"])),Im=qt()(R.object({id:R.number(),role:Zi,content:R.string().optional(),toolCallId:R.string().optional(),toolCalls:R.array(cc).optional()})),Dm=R.array(Im),sl=R.lazy(()=>R.record(li)),Pm=sl,Xi=R.string().transform((n,a)=>{const{json:t}=Ae(n);if(!ii(t))return a.addIssue({code:R.ZodIssueCode.custom,message:"The invocation parameters must be a valid JSON object"}),R.NEVER;const{success:l,data:i}=Pm.safeParse(t);return l?i:(a.addIssue({code:R.ZodIssueCode.custom,message:"The invocation parameters must be a valid JSON object"}),R.NEVER)}).default("{}"),Lm=R.object({[de.llm]:R.object({[_e.provider]:R.string().optional(),[_e.model_name]:R.string()})}),Yi=R.object({[de.llm]:R.object({[_e.invocation_parameters]:Xi})}),_m=R.object({[de.llm]:R.object({[_e.invocation_parameters]:Xi.pipe(R.object({response_format:sl.optional()}))})}),Em=R.string().transform((n,a)=>{const{json:t}=Ae(n);return t==null||!ii(t)?(a.addIssue({code:R.ZodIssueCode.custom,message:"The tool JSON schema must be a valid JSON object"}),R.NEVER):t}).transform((n,a)=>{const{data:t,success:l}=ri.safeParse(n);return l?t:(a.addIssue({code:R.ZodIssueCode.custom,message:"The tool JSON schema must be a valid tool schema"}),R.NEVER)}),wm=R.object({[de.llm]:R.object({[_e.tools]:R.array(R.object({[de.tool]:R.object({[Oa.json_schema]:Em})}).optional()).optional()}).optional()}).optional(),Rm=R.lazy(()=>R.object({type:R.literal("json_schema"),json_schema:R.object({name:R.string().describe("The name of the schema"),schema:li.describe("The schema itself in JSON format"),strict:R.literal(!0).describe("The schema must be strict")})})),Mm=_d(Rm,{removeAdditionalStrategy:"passthrough"}),Am=R.string().transform((n,a)=>{const{json:t}=Ae(n);return Tn(t)?Object.entries(t).reduce((i,[r,o])=>{if(typeof o=="string")i[r]=o;else{const{json:c}=si(o);c!=null&&(i[r]=c)}return i},{}):(a.addIssue({code:R.ZodIssueCode.custom,message:"The prompt template variables must be a valid JSON object"}),R.NEVER)}),Nm=R.object({[de.llm]:R.object({[_e.prompt_template]:R.object({variables:Am}).optional()}).optional()}).optional();function er(n){return Zi.safeParse(n).success}function Wa(n){if(er(n))return n;for(const[a,t]of Object.entries(rm))if(t.includes(n))return a;return gc}function zm({toolCalls:n,provider:a}){if(n!=null)return n.map(({tool_call:t})=>{var i,r,o,c;if(t==null)return null;let l={};if(((i=t.function)==null?void 0:i.arguments)!=null){const{json:d}=Ae(t.function.arguments);Tn(d)&&(l=d)}switch(a){case"OPENAI":case"AZURE_OPENAI":return{id:t.id??"",function:{name:((r=t.function)==null?void 0:r.name)??"",arguments:l}};case"ANTHROPIC":return{id:t.id??"",type:"tool_use",name:((o=t.function)==null?void 0:o.name)??"",input:l};case"GEMINI":return{id:t.id??"",function:{name:((c=t.function)==null?void 0:c.name)??"",arguments:l}};default:me()}}).filter(t=>t!=null)}function nr({messages:n,provider:a}){return n.map(({message:t})=>({id:Da(),role:t.tool_call_id!=null?Wa("tool"):Wa(t.role),content:typeof t.content=="string"?t.content:void 0,toolCalls:zm({provider:a,toolCalls:t.tool_calls}),toolCallId:t.tool_call_id}))}function Vm({provider:n,parsedAttributes:a}){var l;const t=Km.safeParse(a);if(!t.success)return{messageParsingErrors:[sm],messages:null};if(n==="ANTHROPIC"){const{success:i,data:r}=Yi.safeParse(a);if(i){const o=t.data.llm.input_messages,c=(l=r.llm.invocation_parameters)==null?void 0:l.system;typeof c=="string"&&c&&(!o||o[0].message.role!=="system")&&t.data.llm.input_messages.unshift({message:{role:"system",content:c}})}}return{messageParsingErrors:[],messages:nr({provider:n,messages:t.data.llm.input_messages})}}function $m({provider:n,parsedAttributes:a}){const t=[],l=Tm.safeParse(a);if(l.success)return{output:nr({provider:n,messages:l.data.llm.output_messages}),outputParsingErrors:t};t.push(om);const i=xm.safeParse(a);return i.success?{output:i.data.output.value,outputParsingErrors:t}:(t.push(dm),{output:void 0,outputParsingErrors:t})}function Om(n){if(n==null)return null;switch(n.toLowerCase()){case"openai":return"OPENAI";case"anthropic":return"ANTHROPIC";case"google":return"GEMINI";case"azure":return"AZURE_OPENAI";default:return null}}function Qm(n){for(const a of Object.keys(Dl))if(Dl[a].some(l=>n.includes(l)))return a;return mc}function jm(n){const{success:a,data:t}=Lm.safeParse(n);if(a){const l=Om(t.llm.provider)||Qm(t.llm.model_name);return{modelConfig:{modelName:t.llm.model_name,provider:l,invocationParameters:[],supportedInvocationParameters:[]},parsingErrors:[]}}return{modelConfig:null,parsingErrors:[um]}}function qm(n,a=[]){const{success:t,data:l}=Yi.safeParse(n),i=[];return t||i.push(mm),{invocationParameters:Ym((l==null?void 0:l.llm.invocation_parameters)??{},a),parsingErrors:i}}function Um(n){const{success:a,data:t}=_m.safeParse(n);return a?{responseFormat:t.llm.invocation_parameters.response_format,parsingErrors:[]}:{responseFormat:void 0,parsingErrors:[gm]}}function Bm(n){var a;return(((a=n==null?void 0:n.llm)==null?void 0:a.tools)??[]).map(t=>(t==null?void 0:t.tool)==null?null:{id:ja(),definition:t.tool.json_schema}).filter(t=>t!=null)}function Hm(n){var l;const{data:a,success:t}=wm.safeParse(n);return t?((l=a==null?void 0:a.llm)==null?void 0:l.tools)==null?{tools:null,parsingErrors:[]}:{tools:Bm(a),parsingErrors:[]}:{tools:null,parsingErrors:[pm]}}function Gm(n){var l;const{success:a,data:t}=Nm.safeParse(n);return a?((l=t==null?void 0:t.llm)==null?void 0:l.prompt_template)==null?{variables:null,parsingErrors:[]}:{variables:t.llm.prompt_template.variables,parsingErrors:[]}:{variables:null,parsingErrors:[ym]}}function Wm(n){const a=uc(),{json:t,parseError:l}=Ae(n.attributes);if(l)return{playgroundInstance:{...a,spanId:(n==null?void 0:n.id)??null},parsingErrors:[cm]};const i=n.invocationParameters,r=jm(t);let{modelConfig:o}=r;const{parsingErrors:c}=r,{messages:d,messageParsingErrors:m}=Vm({provider:(o==null?void 0:o.provider)??a.model.provider,parsedAttributes:t}),{output:f,outputParsingErrors:g}=$m({provider:(o==null?void 0:o.provider)??a.model.provider,parsedAttributes:t}),{invocationParameters:y,parsingErrors:p}=qm(t,i),{variables:h,parsingErrors:b}=Gm(t),{parsingErrors:K}=Um(t);o=o!=null?{...o,invocationParameters:K.length>0?y.filter(P=>P.invocationName!==Qn&&P.canonicalName!==Un):y}:null;const{tools:T,parsingErrors:I}=Hm(t);return{playgroundInstance:{...a,model:o??a.model,template:d!=null?{__type:"chat",messages:d}:a.template,output:f,spanId:n.id,tools:T??a.tools},playgroundInput:h!=null?{variablesValueCache:h}:void 0,parsingErrors:[...m,...g,...c,...I,...p,...K,...b]}}const Jm=n=>Dm.safeParse(n).success,ar=({instance:n,templateLanguage:a})=>{if(a==On.NONE)return[];const t=new Set,l=n.template.__type,i=pc(a);switch(l){case"chat":{n.template.messages.forEach(r=>{(r.content==null?[]:i.extractVariables(r.content)).forEach(c=>{t.add(c)})});break}case"text_completion":{i.extractVariables(n.template.prompt).forEach(o=>{t.add(o)});break}default:me()}return Array.from(t)},Zm=({instances:n,templateLanguage:a})=>a==On.NONE?[]:Array.from(new Set(n.flatMap(t=>ar({instance:t,templateLanguage:a})))),tr=({instances:n,templateLanguage:a,input:t})=>{if(a==On.NONE)return{variablesMap:{},variableKeys:[]};const l=Zm({instances:n,templateLanguage:a}),i=t.variablesValueCache??{};return{variablesMap:l.reduce((o,c)=>(o[c]=i[c]||"",o),{}),variableKeys:l}};function Bn(n,a){return n.invocationName===a.invocationName||n.canonicalName!=null&&a.canonicalName!=null&&n.canonicalName===a.canonicalName}const Xm=(n,a)=>n.filter(t=>a.some(l=>Bn(l,t))).map(t=>{var l;return{...t,invocationName:((l=a.find(i=>Bn(i,t)))==null?void 0:l.invocationName)??t.invocationName}}),mt=n=>n.replace(/_([a-z])/g,(a,t)=>t.toUpperCase()),Ym=(n,a)=>Object.entries(n).map(([t,l])=>{const i=a.find(r=>r.canonicalName&&r.canonicalName.toLowerCase()===t.toLowerCase()||r.invocationName&&r.invocationName.toLowerCase()===t.toLowerCase());return i==null||i.invocationInputField==null||i.invocationName==null?null:{canonicalName:i.canonicalName,invocationName:i.invocationName,[mt(i.invocationInputField)]:l}}).filter(t=>t!=null),Ba=n=>{const{provider:a,validatedToolDefinition:t}=fc(n.definition);switch(a){case"OPENAI":case"AZURE_OPENAI":return t.function.name;case"ANTHROPIC":return t.name;case"UNKNOWN":return null;default:me()}},Pl=({provider:n,toolNumber:a})=>{switch(n){case"OPENAI":case"AZURE_OPENAI":return{id:ja(),definition:Sl(a)};case"ANTHROPIC":return{id:ja(),definition:hc(a)};case"GEMINI":return{id:ja(),definition:Sl(a)};default:me()}},eg=n=>{switch(n){case"OPENAI":case"AZURE_OPENAI":return bl();case"ANTHROPIC":return yc();case"GEMINI":return bl();default:me()}};function ng(n){return{content:n.content,role:ag(n.role),toolCalls:n.toolCalls,toolCallId:n.toolCallId}}function ag(n){switch(n){case"system":return"SYSTEM";case"user":return"USER";case"tool":return"TOOL";case"ai":return"AI";default:me()}}const lr=({playgroundStore:n,instanceId:a,credentials:t})=>{const{instances:l}=n.getState(),i=l.find(m=>m.id===a);if(!i)throw new Error(`No instance found for id ${a}`);if(i.template.__type!=="chat")throw new Error("We only support chat templates for now");const r=i.model.supportedInvocationParameters;let o=[...i.model.invocationParameters];const c=Cm({toolChoice:i.toolChoice,targetProvider:i.model.provider});i.tools.length>0?(o=o.filter(m=>m.invocationName!==Ua&&m.canonicalName!==Ia),o.push({canonicalName:Ia,invocationName:Ua,valueJson:c})):o=o.filter(m=>m.invocationName!==Ua&&m.canonicalName!==Ia),o=r.length?Xm(o,r):o;const d=i.model.provider==="AZURE_OPENAI"?{endpoint:i.model.endpoint,apiVersion:i.model.apiVersion}:{};return{messages:i.template.messages.map(ng),model:{providerKey:i.model.provider,name:i.model.modelName||"",...d},invocationParameters:o,tools:i.tools.length?i.tools.map(m=>m.definition):void 0,apiKey:t[i.model.provider]||null}},tg=({playgroundStore:n,instanceId:a,credentials:t})=>{const l=lr({playgroundStore:n,instanceId:a,credentials:t}),{instances:i,templateLanguage:r,input:o}=n.getState(),{variablesMap:c}=tr({instances:i,input:o,templateLanguage:r});return{...l,template:{variables:c,language:r}}},Ll=({playgroundStore:n,instanceId:a,credentials:t,datasetId:l})=>({...lr({playgroundStore:n,instanceId:a,credentials:t}),templateLanguage:n.getState().templateLanguage,datasetId:l});function ir(n){return n==null||n===""?"{}":typeof n=="string"?n:JSON.stringify(n,null,2)}function rr(n,a){return a.filter(t=>t.required).every(t=>n.some(l=>Bn(l,t)))}const lg=n=>{for(const[a,t]of Object.entries(n))if(a.endsWith("DefaultValue")&&t!=null)return n[a]};function A1(n,a){const t=new Map(n.map(l=>[l.canonicalName||l.invocationName,l]));return a.forEach(l=>{var d;const i=l.canonicalName||l.invocationName,r=lg(l),o=mt(l.invocationInputField||"");if(!l.invocationName||!l.invocationInputField||!i||r==null||((d=t.get(i))==null?void 0:d[o])!=null)return;const c={canonicalName:l.canonicalName,invocationName:l.invocationName,[o]:r};t.set(i,c)}),Array.from(t.values())}const sr=u.createContext(null);function N1({children:n,...a}){const[t]=u.useState(()=>kc(a));return e(sr.Provider,{value:t,children:n})}function Ja(n,a){const t=ve.useContext(sr);if(!t)throw new Error("Missing CredentialsContext.Provider in the tree");return Ea(t,n,a)}const or=u.createContext(null);function ig(){const n=u.useContext(or);if(n===null)throw new Error("useFunctionality must be used within a FunctionalityProvider");return n}function z1(n){return e(or.Provider,{value:{authenticationEnabled:window.Config.authenticationEnabled},children:n.children})}const rg=v`
2
2
  display: flex;
3
3
  direction: row;
4
4
  height: 100vh;
@@ -3336,7 +3336,7 @@ fragment ExperimentsTableFragment_2HEEH6 on Dataset {
3336
3336
  align-items: center;
3337
3337
  color: var(--ac-global-color-primary);
3338
3338
  gap: var(--ac-global-dimension-size-50);
3339
- `;function yh(n){const{datasetId:a,experimentIds:t,displayFullText:l}=n,[i,r]=u.useState(""),o=L.useLazyLoadQuery(Io,{experimentIds:t,datasetId:a,filterCondition:i}),c=u.useMemo(()=>{var I,P;return((P=(I=o.dataset)==null?void 0:I.experiments)==null?void 0:P.edges.reduce((w,S)=>{var x,_;return w[S.experiment.id]={...S.experiment,projectId:((_=(x=S.experiment)==null?void 0:x.project)==null?void 0:_.id)||null},w},{}))||{}},[o]),d=u.useMemo(()=>o.comparisons.map(I=>{const P=I.runComparisonItems.reduce((w,S)=>(w[S.experimentId]=S,w),{});return{...I,id:I.example.id,input:I.example.revision.input,referenceOutput:I.example.revision.referenceOutput,runComparisonMap:P}}),[o]),[m,f]=u.useState(null),g=u.useMemo(()=>[{header:"input",accessorKey:"input",minWidth:500,cell:({row:I})=>e(Tl,{controls:s(ue,{children:[e(N,{size:"S","aria-label":"View example details",icon:e(D,{svg:e(Pa,{})}),onPress:()=>{u.startTransition(()=>{f(e(u.Suspense,{children:e(ol,{exampleId:I.original.example.id,onDismiss:()=>{f(null)}})}))})}}),e(De,{children:"View Example"})]}),children:e(ul,{children:e(Ra,{json:I.original.input,disableTitle:!0,space:l?2:0})})})},{header:"reference output",accessorKey:"referenceOutput",minWidth:500,cell:l?bh:sa}],[l]),y=u.useMemo(()=>t.map(I=>({header:()=>{var _,E,O,z;const P=(_=c[I])==null?void 0:_.name,w=(E=c[I])==null?void 0:E.metadata,S=(O=c[I])==null?void 0:O.projectId,x=((z=c[I])==null?void 0:z.sequenceNumber)||0;return s(k,{direction:"row",gap:"size-100",wrap:!0,alignItems:"center",justifyContent:"space-between",children:[s(k,{direction:"row",gap:"size-100",wrap:!0,alignItems:"center",children:[e(ut,{sequenceNumber:x}),e(F,{children:P})]}),e(Mi,{experimentId:I,metadata:w,isQuiet:!0,projectId:S})]})},accessorKey:I,minSize:500,cell:({row:P})=>{var H,Z;const w=P.original.runComparisonMap[I],S=(w==null?void 0:w.runs.length)||0;if(S===0)return e(jl,{});if(S>1)return e(F,{color:"warning",children:`${S} runs`});const x=w==null?void 0:w.runs[0];let _=null;const E=(H=x==null?void 0:x.trace)==null?void 0:H.traceId,O=(Z=x==null?void 0:x.trace)==null?void 0:Z.projectId;return E&&O&&(_=s(ue,{children:[e(N,{variant:"default",className:"trace-button",size:"S","aria-label":"View run trace",icon:e(D,{svg:e(lt,{})}),onPress:()=>{u.startTransition(()=>{f(e(Mo,{traceId:E,projectId:O,title:"Experiment Run Trace"}))})}}),e(De,{children:"View Trace"})]})),x?e(Tl,{controls:s(B,{children:[s(ue,{children:[e(N,{variant:"default",className:"expand-button",size:"S","aria-label":"View example run details",icon:e(D,{svg:e(Pa,{})}),onPress:()=>{u.startTransition(()=>{f(e(Sh,{selectedExample:P.original,datasetId:a,experimentInfoById:c}))})}}),e(De,{children:"View run details"})]}),_]}),children:e(kh,{...x,displayFullText:l,setDialog:f})}):e(jl,{})}})),[t,c,a,l]),p=u.useMemo(()=>[...g,...y,{id:"tail",minSize:500}],[g,y]),h=Ke({columns:p,data:d,getCoreRowModel:Te(),columnResizeMode:"onChange"}),b=ve.useMemo(()=>{const I=h.getFlatHeaders(),P={};for(let w=0;w<I.length;w++){const S=I[w];P[`--header-${S.id}-size`]=S.getSize(),P[`--col-${S.column.id}-size`]=S.column.getSize()}return P},[h.getState().columnSizingInfo,h.getState().columnSizing]),T=h.getRowModel().rows.length===0;return s(k,{direction:"column",height:"100%",children:[e(C,{paddingTop:"size-100",paddingBottom:"size-100",paddingStart:"size-200",paddingEnd:"size-200",borderBottomColor:"grey-300",borderBottomWidth:"thin",flex:"none",children:e(uh,{onValidCondition:r})}),s("div",{css:gh,children:[s("table",{css:v(tn,Ai),style:{...b,width:h.getTotalSize(),minWidth:"100%"},children:[e("thead",{children:h.getHeaderGroups().map(I=>e("tr",{children:I.headers.map(P=>s("th",{style:{width:`calc(var(--header-${P==null?void 0:P.id}-size) * 1px)`},children:[e("div",{children:W(P.column.columnDef.header,P.getContext())}),e("div",{onMouseDown:P.getResizeHandler(),onTouchStart:P.getResizeHandler(),className:`resizer ${P.column.getIsResizing()?"isResizing":""}`})]},P.id))},I.id))}),T?e(sn,{}):h.getState().columnSizingInfo.isResizingColumn?e(fh,{table:h}):e(Eo,{table:h})]}),e(ee,{isDismissable:!0,type:"slideOver",onDismiss:()=>{f(null)},children:m})]})]})}function Eo({table:n}){return e("tbody",{children:n.getRowModel().rows.map(a=>e("tr",{children:a.getVisibleCells().map(t=>e("td",{style:{width:`calc(var(--col-${t.column.id}-size) * 1px)`},children:W(t.column.columnDef.cell,t.getContext())},t.id))},a.id))})}const fh=ve.memo(Eo,(n,a)=>n.table.options.data===a.table.options.data);function hh(n){const{datasetId:a,exampleId:t}=n,l=Y();return e("div",{onClick:i=>{i.preventDefault(),i.stopPropagation()},children:e(Jn,{buttonSize:"compact",align:"end",onAction:i=>{switch(i){case"gotoExample":return l(`/datasets/${a}/examples/${t}`);default:me()}},children:e(ie,{children:s(k,{direction:"row",gap:"size-75",justifyContent:"start",alignItems:"center",children:[e(D,{svg:e(Ku,{})}),e(F,{children:"Go to example"})]})},"gotoExample")})})}function kh(n){const{output:a,error:t,startTime:l,endTime:i,annotations:r,displayFullText:o,setDialog:c}=n;if(t)return e(wo,{error:t});const d=r!=null&&r.edges.length?r.edges.map(m=>m.annotation):[];return s(k,{direction:"column",gap:"size-100",height:"100%",justifyContent:"space-between",children:[e(ul,{children:e(Ra,{json:a,disableTitle:!0,space:o?2:0})}),s("ul",{css:v`
3339
+ `;function yh(n){const{datasetId:a,experimentIds:t,displayFullText:l}=n,[i,r]=u.useState(""),o=L.useLazyLoadQuery(Io,{experimentIds:t,datasetId:a,filterCondition:i}),c=u.useMemo(()=>{var I,P;return((P=(I=o.dataset)==null?void 0:I.experiments)==null?void 0:P.edges.reduce((w,S)=>{var x,_;return w[S.experiment.id]={...S.experiment,projectId:((_=(x=S.experiment)==null?void 0:x.project)==null?void 0:_.id)||null},w},{}))||{}},[o]),d=u.useMemo(()=>o.comparisons.map(I=>{const P=I.runComparisonItems.reduce((w,S)=>(w[S.experimentId]=S,w),{});return{...I,id:I.example.id,input:I.example.revision.input,referenceOutput:I.example.revision.referenceOutput,runComparisonMap:P}}),[o]),[m,f]=u.useState(null),g=u.useMemo(()=>[{header:"input",accessorKey:"input",minWidth:500,cell:({row:I})=>e(Tl,{controls:s(ue,{children:[e(N,{size:"S","aria-label":"View example details",icon:e(D,{svg:e(Pa,{})}),onPress:()=>{u.startTransition(()=>{f(e(u.Suspense,{children:e(ol,{exampleId:I.original.example.id,onDismiss:()=>{f(null)}})}))})}}),e(De,{children:"View Example"})]}),children:e(ul,{children:e(Ra,{json:I.original.input,disableTitle:!0,space:l?2:0})})})},{header:"reference output",accessorKey:"referenceOutput",minWidth:500,cell:l?bh:sa}],[l]),y=u.useMemo(()=>t.map(I=>({header:()=>{var _,E,O,z;const P=(_=c[I])==null?void 0:_.name,w=(E=c[I])==null?void 0:E.metadata,S=(O=c[I])==null?void 0:O.projectId,x=((z=c[I])==null?void 0:z.sequenceNumber)||0;return s(k,{direction:"row",gap:"size-100",wrap:!0,alignItems:"center",justifyContent:"space-between",children:[s(k,{direction:"row",gap:"size-100",wrap:!0,alignItems:"center",children:[e(ut,{sequenceNumber:x}),e(F,{children:P})]}),e(Mi,{experimentId:I,metadata:w,isQuiet:!0,projectId:S})]})},accessorKey:I,minSize:500,cell:({row:P})=>{var H,Z;const w=P.original.runComparisonMap[I],S=(w==null?void 0:w.runs.length)||0;if(S===0)return e(jl,{});if(S>1)return e(F,{color:"warning",children:`${S} runs`});const x=w==null?void 0:w.runs[0];let _=null;const E=(H=x==null?void 0:x.trace)==null?void 0:H.traceId,O=(Z=x==null?void 0:x.trace)==null?void 0:Z.projectId;return E&&O&&(_=s(ue,{children:[e(N,{variant:"default",className:"trace-button",size:"S","aria-label":"View run trace",icon:e(D,{svg:e(lt,{})}),onPress:()=>{u.startTransition(()=>{f(e(Mo,{traceId:E,projectId:O,title:"Experiment Run Trace"}))})}}),e(De,{children:"View Trace"})]})),x?e(Tl,{controls:s(B,{children:[s(ue,{children:[e(N,{variant:"default",className:"expand-button",size:"S","aria-label":"View example run details",icon:e(D,{svg:e(Pa,{})}),onPress:()=>{u.startTransition(()=>{f(e(Sh,{selectedExample:P.original,datasetId:a,experimentInfoById:c}))})}}),e(De,{children:"View run details"})]}),_]}),children:e(kh,{...x,displayFullText:l,setDialog:f})}):e(jl,{})}})),[t,c,a,l]),p=u.useMemo(()=>[...g,...y],[g,y]),h=Ke({columns:p,data:d,getCoreRowModel:Te(),columnResizeMode:"onChange"}),b=ve.useMemo(()=>{const I=h.getFlatHeaders(),P={};for(let w=0;w<I.length;w++){const S=I[w];P[`--header-${S.id}-size`]=S.getSize(),P[`--col-${S.column.id}-size`]=S.column.getSize()}return P},[h.getState().columnSizingInfo,h.getState().columnSizing]),T=h.getRowModel().rows.length===0;return s(k,{direction:"column",height:"100%",children:[e(C,{paddingTop:"size-100",paddingBottom:"size-100",paddingStart:"size-200",paddingEnd:"size-200",borderBottomColor:"grey-300",borderBottomWidth:"thin",flex:"none",children:e(uh,{onValidCondition:r})}),s("div",{css:gh,children:[s("table",{css:v(tn,Ai),style:{...b,width:h.getTotalSize(),minWidth:"100%"},children:[e("thead",{children:h.getHeaderGroups().map(I=>e("tr",{children:I.headers.map(P=>s("th",{style:{width:`calc(var(--header-${P==null?void 0:P.id}-size) * 1px)`},children:[e("div",{children:W(P.column.columnDef.header,P.getContext())}),e("div",{onMouseDown:P.getResizeHandler(),onTouchStart:P.getResizeHandler(),className:`resizer ${P.column.getIsResizing()?"isResizing":""}`})]},P.id))},I.id))}),T?e(sn,{}):h.getState().columnSizingInfo.isResizingColumn?e(fh,{table:h}):e(Eo,{table:h})]}),e(ee,{isDismissable:!0,type:"slideOver",onDismiss:()=>{f(null)},children:m})]})]})}function Eo({table:n}){return e("tbody",{children:n.getRowModel().rows.map(a=>e("tr",{children:a.getVisibleCells().map(t=>e("td",{style:{width:`calc(var(--col-${t.column.id}-size) * 1px)`,wordBreak:"break-all"},children:W(t.column.columnDef.cell,t.getContext())},t.id))},a.id))})}const fh=ve.memo(Eo,(n,a)=>n.table.options.data===a.table.options.data);function hh(n){const{datasetId:a,exampleId:t}=n,l=Y();return e("div",{onClick:i=>{i.preventDefault(),i.stopPropagation()},children:e(Jn,{buttonSize:"compact",align:"end",onAction:i=>{switch(i){case"gotoExample":return l(`/datasets/${a}/examples/${t}`);default:me()}},children:e(ie,{children:s(k,{direction:"row",gap:"size-75",justifyContent:"start",alignItems:"center",children:[e(D,{svg:e(Ku,{})}),e(F,{children:"Go to example"})]})},"gotoExample")})})}function kh(n){const{output:a,error:t,startTime:l,endTime:i,annotations:r,displayFullText:o,setDialog:c}=n;if(t)return e(wo,{error:t});const d=r!=null&&r.edges.length?r.edges.map(m=>m.annotation):[];return s(k,{direction:"column",gap:"size-100",height:"100%",justifyContent:"space-between",children:[e(ul,{children:e(Ra,{json:a,disableTitle:!0,space:o?2:0})}),s("ul",{css:v`
3340
3340
  display: flex;
3341
3341
  flex-direction: row;
3342
3342
  gap: var(--ac-global-dimension-static-size-100);
@@ -196,6 +196,17 @@ class TraceDataset:
196
196
  end_time: Optional[datetime] = cast(datetime, row.get("end_time"))
197
197
  if end_time is pd.NaT:
198
198
  end_time = None
199
+ events = cast(Any, row.get("events"))
200
+ if isinstance(events, np.ndarray):
201
+ events = events.tolist()
202
+ elif isinstance(events, str):
203
+ events = json.loads(events)
204
+ assert isinstance(events, list)
205
+ elif isinstance(events, Iterable):
206
+ events = list(events)
207
+ elif pd.isna(events):
208
+ events = []
209
+ assert isinstance(events, list)
199
210
  yield json_to_span(
200
211
  {
201
212
  "name": row["name"],
@@ -207,7 +218,7 @@ class TraceDataset:
207
218
  "status_code": row["status_code"],
208
219
  "status_message": row.get("status_message") or "",
209
220
  "attributes": attributes,
210
- "events": row.get("events") or [],
221
+ "events": events,
211
222
  "conversation": row.get("conversation"),
212
223
  }
213
224
  )
@@ -0,0 +1 @@
1
+ __version__ = "7.9.1"
@@ -1,20 +0,0 @@
1
- from datetime import datetime, timezone
2
-
3
- import strawberry
4
-
5
-
6
- @strawberry.input
7
- class TimeRange:
8
- start: datetime = strawberry.field(
9
- description="The start of the time range",
10
- )
11
- end: datetime = strawberry.field(
12
- description="The end of the time range. Right exclusive.",
13
- )
14
-
15
- def __post_init__(self) -> None:
16
- self.start = self.start.astimezone(timezone.utc)
17
- self.end = self.end.astimezone(timezone.utc)
18
-
19
- def is_valid(self) -> bool:
20
- return self.start < self.end
@@ -1 +0,0 @@
1
- __version__ = "7.9.0"
File without changes
File without changes