mirascope 2.0.0a5__py3-none-any.whl → 2.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. mirascope/__init__.py +10 -1
  2. mirascope/_stubs.py +363 -0
  3. mirascope/api/__init__.py +8 -0
  4. mirascope/api/_generated/__init__.py +285 -2
  5. mirascope/api/_generated/annotations/__init__.py +33 -0
  6. mirascope/api/_generated/annotations/client.py +506 -0
  7. mirascope/api/_generated/annotations/raw_client.py +1414 -0
  8. mirascope/api/_generated/annotations/types/__init__.py +31 -0
  9. mirascope/api/_generated/annotations/types/annotations_create_request_label.py +5 -0
  10. mirascope/api/_generated/annotations/types/annotations_create_response.py +48 -0
  11. mirascope/api/_generated/annotations/types/annotations_create_response_label.py +5 -0
  12. mirascope/api/_generated/annotations/types/annotations_get_response.py +48 -0
  13. mirascope/api/_generated/annotations/types/annotations_get_response_label.py +5 -0
  14. mirascope/api/_generated/annotations/types/annotations_list_request_label.py +5 -0
  15. mirascope/api/_generated/annotations/types/annotations_list_response.py +21 -0
  16. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +50 -0
  17. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +5 -0
  18. mirascope/api/_generated/annotations/types/annotations_update_request_label.py +5 -0
  19. mirascope/api/_generated/annotations/types/annotations_update_response.py +48 -0
  20. mirascope/api/_generated/annotations/types/annotations_update_response_label.py +5 -0
  21. mirascope/api/_generated/api_keys/__init__.py +12 -2
  22. mirascope/api/_generated/api_keys/client.py +77 -0
  23. mirascope/api/_generated/api_keys/raw_client.py +422 -39
  24. mirascope/api/_generated/api_keys/types/__init__.py +7 -1
  25. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +4 -12
  26. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +4 -12
  27. mirascope/api/_generated/api_keys/types/api_keys_list_all_for_org_response_item.py +40 -0
  28. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +4 -12
  29. mirascope/api/_generated/client.py +42 -0
  30. mirascope/api/_generated/core/client_wrapper.py +2 -14
  31. mirascope/api/_generated/core/datetime_utils.py +1 -3
  32. mirascope/api/_generated/core/file.py +2 -5
  33. mirascope/api/_generated/core/http_client.py +36 -112
  34. mirascope/api/_generated/core/jsonable_encoder.py +1 -3
  35. mirascope/api/_generated/core/pydantic_utilities.py +19 -74
  36. mirascope/api/_generated/core/query_encoder.py +1 -3
  37. mirascope/api/_generated/core/serialization.py +4 -10
  38. mirascope/api/_generated/docs/client.py +2 -6
  39. mirascope/api/_generated/docs/raw_client.py +51 -5
  40. mirascope/api/_generated/environment.py +3 -3
  41. mirascope/api/_generated/environments/__init__.py +6 -0
  42. mirascope/api/_generated/environments/client.py +117 -0
  43. mirascope/api/_generated/environments/raw_client.py +530 -51
  44. mirascope/api/_generated/environments/types/__init__.py +10 -0
  45. mirascope/api/_generated/environments/types/environments_create_response.py +1 -3
  46. mirascope/api/_generated/environments/types/environments_get_analytics_response.py +60 -0
  47. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_functions_item.py +24 -0
  48. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_models_item.py +22 -0
  49. mirascope/api/_generated/environments/types/environments_get_response.py +1 -3
  50. mirascope/api/_generated/environments/types/environments_list_response_item.py +1 -3
  51. mirascope/api/_generated/environments/types/environments_update_response.py +1 -3
  52. mirascope/api/_generated/errors/__init__.py +8 -0
  53. mirascope/api/_generated/errors/bad_request_error.py +1 -2
  54. mirascope/api/_generated/errors/conflict_error.py +1 -2
  55. mirascope/api/_generated/errors/forbidden_error.py +1 -5
  56. mirascope/api/_generated/errors/internal_server_error.py +1 -6
  57. mirascope/api/_generated/errors/not_found_error.py +1 -5
  58. mirascope/api/_generated/errors/payment_required_error.py +15 -0
  59. mirascope/api/_generated/errors/service_unavailable_error.py +14 -0
  60. mirascope/api/_generated/errors/too_many_requests_error.py +15 -0
  61. mirascope/api/_generated/errors/unauthorized_error.py +11 -0
  62. mirascope/api/_generated/functions/__init__.py +39 -0
  63. mirascope/api/_generated/functions/client.py +647 -0
  64. mirascope/api/_generated/functions/raw_client.py +1890 -0
  65. mirascope/api/_generated/functions/types/__init__.py +53 -0
  66. mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +20 -0
  67. mirascope/api/_generated/functions/types/functions_create_response.py +37 -0
  68. mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +20 -0
  69. mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +39 -0
  70. mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +20 -0
  71. mirascope/api/_generated/functions/types/functions_get_by_env_response.py +53 -0
  72. mirascope/api/_generated/functions/types/functions_get_by_env_response_dependencies_value.py +22 -0
  73. mirascope/api/_generated/functions/types/functions_get_response.py +37 -0
  74. mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +20 -0
  75. mirascope/api/_generated/functions/types/functions_list_by_env_response.py +25 -0
  76. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item.py +56 -0
  77. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item_dependencies_value.py +22 -0
  78. mirascope/api/_generated/functions/types/functions_list_response.py +21 -0
  79. mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +41 -0
  80. mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +20 -0
  81. mirascope/api/_generated/health/client.py +2 -6
  82. mirascope/api/_generated/health/raw_client.py +51 -5
  83. mirascope/api/_generated/health/types/health_check_response.py +1 -3
  84. mirascope/api/_generated/organization_invitations/__init__.py +33 -0
  85. mirascope/api/_generated/organization_invitations/client.py +546 -0
  86. mirascope/api/_generated/organization_invitations/raw_client.py +1519 -0
  87. mirascope/api/_generated/organization_invitations/types/__init__.py +53 -0
  88. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response.py +34 -0
  89. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response_role.py +7 -0
  90. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_request_role.py +7 -0
  91. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response.py +48 -0
  92. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_role.py +7 -0
  93. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_status.py +7 -0
  94. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response.py +48 -0
  95. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_role.py +7 -0
  96. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_status.py +7 -0
  97. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item.py +48 -0
  98. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_role.py +7 -0
  99. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_status.py +7 -0
  100. mirascope/api/_generated/organization_memberships/__init__.py +19 -0
  101. mirascope/api/_generated/organization_memberships/client.py +302 -0
  102. mirascope/api/_generated/organization_memberships/raw_client.py +736 -0
  103. mirascope/api/_generated/organization_memberships/types/__init__.py +27 -0
  104. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item.py +33 -0
  105. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item_role.py +7 -0
  106. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_request_role.py +7 -0
  107. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response.py +31 -0
  108. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response_role.py +7 -0
  109. mirascope/api/_generated/organizations/__init__.py +26 -0
  110. mirascope/api/_generated/organizations/client.py +465 -0
  111. mirascope/api/_generated/organizations/raw_client.py +1799 -108
  112. mirascope/api/_generated/organizations/types/__init__.py +48 -0
  113. mirascope/api/_generated/organizations/types/organizations_create_payment_intent_response.py +24 -0
  114. mirascope/api/_generated/organizations/types/organizations_create_response.py +4 -3
  115. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +1 -3
  116. mirascope/api/_generated/organizations/types/organizations_get_response.py +4 -3
  117. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +1 -3
  118. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +4 -3
  119. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +1 -3
  120. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_request_target_plan.py +7 -0
  121. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response.py +47 -0
  122. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item.py +33 -0
  123. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item_resource.py +7 -0
  124. mirascope/api/_generated/organizations/types/organizations_router_balance_response.py +24 -0
  125. mirascope/api/_generated/organizations/types/organizations_subscription_response.py +53 -0
  126. mirascope/api/_generated/organizations/types/organizations_subscription_response_current_plan.py +7 -0
  127. mirascope/api/_generated/organizations/types/organizations_subscription_response_payment_method.py +26 -0
  128. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change.py +34 -0
  129. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change_target_plan.py +7 -0
  130. mirascope/api/_generated/organizations/types/organizations_update_response.py +4 -3
  131. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +1 -3
  132. mirascope/api/_generated/organizations/types/organizations_update_subscription_request_target_plan.py +7 -0
  133. mirascope/api/_generated/organizations/types/organizations_update_subscription_response.py +35 -0
  134. mirascope/api/_generated/project_memberships/__init__.py +25 -0
  135. mirascope/api/_generated/project_memberships/client.py +437 -0
  136. mirascope/api/_generated/project_memberships/raw_client.py +1039 -0
  137. mirascope/api/_generated/project_memberships/types/__init__.py +29 -0
  138. mirascope/api/_generated/project_memberships/types/project_memberships_create_request_role.py +7 -0
  139. mirascope/api/_generated/project_memberships/types/project_memberships_create_response.py +35 -0
  140. mirascope/api/_generated/project_memberships/types/project_memberships_create_response_role.py +7 -0
  141. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item.py +33 -0
  142. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item_role.py +7 -0
  143. mirascope/api/_generated/project_memberships/types/project_memberships_update_request_role.py +7 -0
  144. mirascope/api/_generated/project_memberships/types/project_memberships_update_response.py +35 -0
  145. mirascope/api/_generated/project_memberships/types/project_memberships_update_response_role.py +7 -0
  146. mirascope/api/_generated/projects/__init__.py +2 -12
  147. mirascope/api/_generated/projects/client.py +17 -71
  148. mirascope/api/_generated/projects/raw_client.py +295 -51
  149. mirascope/api/_generated/projects/types/__init__.py +1 -6
  150. mirascope/api/_generated/projects/types/projects_create_response.py +3 -9
  151. mirascope/api/_generated/projects/types/projects_get_response.py +3 -9
  152. mirascope/api/_generated/projects/types/projects_list_response_item.py +3 -9
  153. mirascope/api/_generated/projects/types/projects_update_response.py +3 -9
  154. mirascope/api/_generated/reference.md +3619 -182
  155. mirascope/api/_generated/tags/__init__.py +19 -0
  156. mirascope/api/_generated/tags/client.py +504 -0
  157. mirascope/api/_generated/tags/raw_client.py +1288 -0
  158. mirascope/api/_generated/tags/types/__init__.py +17 -0
  159. mirascope/api/_generated/tags/types/tags_create_response.py +41 -0
  160. mirascope/api/_generated/tags/types/tags_get_response.py +41 -0
  161. mirascope/api/_generated/tags/types/tags_list_response.py +23 -0
  162. mirascope/api/_generated/tags/types/tags_list_response_tags_item.py +41 -0
  163. mirascope/api/_generated/tags/types/tags_update_response.py +41 -0
  164. mirascope/api/_generated/token_cost/__init__.py +7 -0
  165. mirascope/api/_generated/token_cost/client.py +160 -0
  166. mirascope/api/_generated/token_cost/raw_client.py +264 -0
  167. mirascope/api/_generated/token_cost/types/__init__.py +8 -0
  168. mirascope/api/_generated/token_cost/types/token_cost_calculate_request_usage.py +54 -0
  169. mirascope/api/_generated/token_cost/types/token_cost_calculate_response.py +52 -0
  170. mirascope/api/_generated/traces/__init__.py +42 -0
  171. mirascope/api/_generated/traces/client.py +941 -0
  172. mirascope/api/_generated/traces/raw_client.py +2177 -23
  173. mirascope/api/_generated/traces/types/__init__.py +60 -0
  174. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +4 -11
  175. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +2 -6
  176. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +1 -3
  177. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +8 -24
  178. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +2 -6
  179. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +3 -9
  180. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +2 -6
  181. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +3 -9
  182. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +4 -8
  183. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +2 -6
  184. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +8 -24
  185. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +2 -6
  186. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +3 -9
  187. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value_values_item.py +1 -3
  188. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +6 -18
  189. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +3 -9
  190. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +8 -24
  191. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +2 -6
  192. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +2 -6
  193. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value_values_item.py +1 -3
  194. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +2 -6
  195. mirascope/api/_generated/traces/types/traces_create_response.py +2 -5
  196. mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +3 -9
  197. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +60 -0
  198. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +24 -0
  199. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +22 -0
  200. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response.py +33 -0
  201. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response_spans_item.py +88 -0
  202. mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +33 -0
  203. mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +88 -0
  204. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response.py +25 -0
  205. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response_traces_item.py +44 -0
  206. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item.py +26 -0
  207. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item_operator.py +7 -0
  208. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_by.py +7 -0
  209. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_order.py +7 -0
  210. mirascope/api/_generated/traces/types/traces_search_by_env_response.py +26 -0
  211. mirascope/api/_generated/traces/types/traces_search_by_env_response_spans_item.py +50 -0
  212. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +26 -0
  213. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +7 -0
  214. mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +7 -0
  215. mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +5 -0
  216. mirascope/api/_generated/traces/types/traces_search_response.py +26 -0
  217. mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +50 -0
  218. mirascope/api/_generated/types/__init__.py +48 -0
  219. mirascope/api/_generated/types/already_exists_error.py +1 -3
  220. mirascope/api/_generated/types/bad_request_error_body.py +50 -0
  221. mirascope/api/_generated/types/click_house_error.py +22 -0
  222. mirascope/api/_generated/types/database_error.py +1 -3
  223. mirascope/api/_generated/types/date.py +3 -0
  224. mirascope/api/_generated/types/http_api_decode_error.py +1 -3
  225. mirascope/api/_generated/types/immutable_resource_error.py +22 -0
  226. mirascope/api/_generated/types/internal_server_error_body.py +49 -0
  227. mirascope/api/_generated/types/issue.py +1 -3
  228. mirascope/api/_generated/types/issue_tag.py +1 -8
  229. mirascope/api/_generated/types/not_found_error_body.py +1 -3
  230. mirascope/api/_generated/types/number_from_string.py +3 -0
  231. mirascope/api/_generated/types/permission_denied_error.py +1 -3
  232. mirascope/api/_generated/types/permission_denied_error_tag.py +1 -3
  233. mirascope/api/_generated/types/plan_limit_exceeded_error.py +32 -0
  234. mirascope/api/_generated/types/plan_limit_exceeded_error_tag.py +7 -0
  235. mirascope/api/_generated/types/pricing_unavailable_error.py +23 -0
  236. mirascope/api/_generated/types/property_key_key.py +1 -3
  237. mirascope/api/_generated/types/rate_limit_error.py +31 -0
  238. mirascope/api/_generated/types/rate_limit_error_tag.py +5 -0
  239. mirascope/api/_generated/types/service_unavailable_error_body.py +24 -0
  240. mirascope/api/_generated/types/service_unavailable_error_tag.py +7 -0
  241. mirascope/api/_generated/types/stripe_error.py +20 -0
  242. mirascope/api/_generated/types/subscription_past_due_error.py +31 -0
  243. mirascope/api/_generated/types/subscription_past_due_error_tag.py +7 -0
  244. mirascope/api/_generated/types/unauthorized_error_body.py +21 -0
  245. mirascope/api/_generated/types/unauthorized_error_tag.py +5 -0
  246. mirascope/api/settings.py +19 -1
  247. mirascope/llm/__init__.py +55 -8
  248. mirascope/llm/calls/__init__.py +2 -1
  249. mirascope/llm/calls/calls.py +3 -1
  250. mirascope/llm/calls/decorator.py +21 -7
  251. mirascope/llm/content/tool_call.py +6 -0
  252. mirascope/llm/content/tool_output.py +22 -5
  253. mirascope/llm/exceptions.py +284 -71
  254. mirascope/llm/formatting/__init__.py +19 -2
  255. mirascope/llm/formatting/format.py +219 -30
  256. mirascope/llm/formatting/output_parser.py +178 -0
  257. mirascope/llm/formatting/partial.py +80 -7
  258. mirascope/llm/formatting/primitives.py +192 -0
  259. mirascope/llm/formatting/types.py +21 -64
  260. mirascope/llm/mcp/__init__.py +2 -2
  261. mirascope/llm/mcp/mcp_client.py +130 -0
  262. mirascope/llm/messages/__init__.py +3 -0
  263. mirascope/llm/messages/_utils.py +34 -0
  264. mirascope/llm/models/__init__.py +5 -0
  265. mirascope/llm/models/models.py +137 -69
  266. mirascope/llm/{providers/base → models}/params.py +16 -37
  267. mirascope/llm/models/thinking_config.py +61 -0
  268. mirascope/llm/prompts/_utils.py +0 -32
  269. mirascope/llm/prompts/decorator.py +16 -5
  270. mirascope/llm/prompts/prompts.py +131 -68
  271. mirascope/llm/providers/__init__.py +18 -2
  272. mirascope/llm/providers/anthropic/__init__.py +3 -21
  273. mirascope/llm/providers/anthropic/_utils/__init__.py +2 -0
  274. mirascope/llm/providers/anthropic/_utils/beta_decode.py +22 -11
  275. mirascope/llm/providers/anthropic/_utils/beta_encode.py +75 -25
  276. mirascope/llm/providers/anthropic/_utils/decode.py +22 -11
  277. mirascope/llm/providers/anthropic/_utils/encode.py +82 -20
  278. mirascope/llm/providers/anthropic/_utils/errors.py +2 -2
  279. mirascope/llm/providers/anthropic/beta_provider.py +64 -18
  280. mirascope/llm/providers/anthropic/provider.py +91 -33
  281. mirascope/llm/providers/base/__init__.py +0 -2
  282. mirascope/llm/providers/base/_utils.py +55 -11
  283. mirascope/llm/providers/base/base_provider.py +116 -37
  284. mirascope/llm/providers/google/__init__.py +2 -17
  285. mirascope/llm/providers/google/_utils/__init__.py +2 -0
  286. mirascope/llm/providers/google/_utils/decode.py +37 -15
  287. mirascope/llm/providers/google/_utils/encode.py +127 -19
  288. mirascope/llm/providers/google/_utils/errors.py +3 -2
  289. mirascope/llm/providers/google/model_info.py +1 -0
  290. mirascope/llm/providers/google/provider.py +68 -19
  291. mirascope/llm/providers/mirascope/__init__.py +5 -0
  292. mirascope/llm/providers/mirascope/_utils.py +73 -0
  293. mirascope/llm/providers/mirascope/provider.py +349 -0
  294. mirascope/llm/providers/mlx/__init__.py +2 -17
  295. mirascope/llm/providers/mlx/_utils.py +8 -3
  296. mirascope/llm/providers/mlx/encoding/base.py +5 -2
  297. mirascope/llm/providers/mlx/encoding/transformers.py +5 -2
  298. mirascope/llm/providers/mlx/mlx.py +23 -6
  299. mirascope/llm/providers/mlx/provider.py +42 -13
  300. mirascope/llm/providers/ollama/__init__.py +1 -13
  301. mirascope/llm/providers/openai/_utils/errors.py +2 -2
  302. mirascope/llm/providers/openai/completions/__init__.py +2 -20
  303. mirascope/llm/providers/openai/completions/_utils/decode.py +14 -3
  304. mirascope/llm/providers/openai/completions/_utils/encode.py +35 -28
  305. mirascope/llm/providers/openai/completions/base_provider.py +40 -11
  306. mirascope/llm/providers/openai/provider.py +40 -10
  307. mirascope/llm/providers/openai/responses/__init__.py +1 -17
  308. mirascope/llm/providers/openai/responses/_utils/__init__.py +2 -0
  309. mirascope/llm/providers/openai/responses/_utils/decode.py +21 -8
  310. mirascope/llm/providers/openai/responses/_utils/encode.py +59 -19
  311. mirascope/llm/providers/openai/responses/provider.py +56 -18
  312. mirascope/llm/providers/provider_id.py +1 -0
  313. mirascope/llm/providers/provider_registry.py +96 -19
  314. mirascope/llm/providers/together/__init__.py +1 -13
  315. mirascope/llm/responses/__init__.py +6 -1
  316. mirascope/llm/responses/_utils.py +102 -12
  317. mirascope/llm/responses/base_response.py +5 -2
  318. mirascope/llm/responses/base_stream_response.py +139 -45
  319. mirascope/llm/responses/response.py +2 -1
  320. mirascope/llm/responses/root_response.py +89 -17
  321. mirascope/llm/responses/stream_response.py +6 -9
  322. mirascope/llm/tools/decorator.py +17 -8
  323. mirascope/llm/tools/tool_schema.py +43 -10
  324. mirascope/llm/tools/toolkit.py +35 -27
  325. mirascope/llm/tools/tools.py +123 -30
  326. mirascope/ops/__init__.py +64 -109
  327. mirascope/ops/_internal/configuration.py +82 -31
  328. mirascope/ops/_internal/exporters/exporters.py +64 -11
  329. mirascope/ops/_internal/instrumentation/llm/common.py +530 -0
  330. mirascope/ops/_internal/instrumentation/llm/cost.py +190 -0
  331. mirascope/ops/_internal/instrumentation/llm/encode.py +1 -1
  332. mirascope/ops/_internal/instrumentation/llm/llm.py +116 -1243
  333. mirascope/ops/_internal/instrumentation/llm/model.py +1798 -0
  334. mirascope/ops/_internal/instrumentation/llm/response.py +521 -0
  335. mirascope/ops/_internal/instrumentation/llm/serialize.py +300 -0
  336. mirascope/ops/_internal/protocols.py +83 -1
  337. mirascope/ops/_internal/traced_calls.py +4 -0
  338. mirascope/ops/_internal/traced_functions.py +141 -12
  339. mirascope/ops/_internal/tracing.py +78 -1
  340. mirascope/ops/_internal/utils.py +52 -4
  341. mirascope/ops/_internal/versioned_functions.py +54 -43
  342. {mirascope-2.0.0a5.dist-info → mirascope-2.0.1.dist-info}/METADATA +14 -13
  343. mirascope-2.0.1.dist-info/RECORD +423 -0
  344. {mirascope-2.0.0a5.dist-info → mirascope-2.0.1.dist-info}/licenses/LICENSE +1 -1
  345. mirascope/llm/formatting/_utils.py +0 -78
  346. mirascope/llm/mcp/client.py +0 -118
  347. mirascope/llm/providers/_missing_import_stubs.py +0 -49
  348. mirascope-2.0.0a5.dist-info/RECORD +0 -265
  349. {mirascope-2.0.0a5.dist-info → mirascope-2.0.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,60 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+ from .traces_get_analytics_summary_response_top_functions_item import (
10
+ TracesGetAnalyticsSummaryResponseTopFunctionsItem,
11
+ )
12
+ from .traces_get_analytics_summary_response_top_models_item import (
13
+ TracesGetAnalyticsSummaryResponseTopModelsItem,
14
+ )
15
+
16
+
17
+ class TracesGetAnalyticsSummaryResponse(UniversalBaseModel):
18
+ total_spans: typing_extensions.Annotated[float, FieldMetadata(alias="totalSpans")]
19
+ avg_duration_ms: typing_extensions.Annotated[
20
+ typing.Optional[float], FieldMetadata(alias="avgDurationMs")
21
+ ] = None
22
+ p50duration_ms: typing_extensions.Annotated[
23
+ typing.Optional[float], FieldMetadata(alias="p50DurationMs")
24
+ ] = None
25
+ p95duration_ms: typing_extensions.Annotated[
26
+ typing.Optional[float], FieldMetadata(alias="p95DurationMs")
27
+ ] = None
28
+ p99duration_ms: typing_extensions.Annotated[
29
+ typing.Optional[float], FieldMetadata(alias="p99DurationMs")
30
+ ] = None
31
+ error_rate: typing_extensions.Annotated[float, FieldMetadata(alias="errorRate")]
32
+ total_tokens: typing_extensions.Annotated[float, FieldMetadata(alias="totalTokens")]
33
+ total_input_tokens: typing_extensions.Annotated[
34
+ float, FieldMetadata(alias="totalInputTokens")
35
+ ]
36
+ total_output_tokens: typing_extensions.Annotated[
37
+ float, FieldMetadata(alias="totalOutputTokens")
38
+ ]
39
+ total_cost_usd: typing_extensions.Annotated[
40
+ float, FieldMetadata(alias="totalCostUsd")
41
+ ]
42
+ top_models: typing_extensions.Annotated[
43
+ typing.List[TracesGetAnalyticsSummaryResponseTopModelsItem],
44
+ FieldMetadata(alias="topModels"),
45
+ ]
46
+ top_functions: typing_extensions.Annotated[
47
+ typing.List[TracesGetAnalyticsSummaryResponseTopFunctionsItem],
48
+ FieldMetadata(alias="topFunctions"),
49
+ ]
50
+
51
+ if IS_PYDANTIC_V2:
52
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
53
+ extra="allow", frozen=True
54
+ ) # type: ignore # Pydantic v2
55
+ else:
56
+
57
+ class Config:
58
+ frozen = True
59
+ smart_union = True
60
+ extra = pydantic.Extra.allow
@@ -0,0 +1,24 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+
10
+
11
+ class TracesGetAnalyticsSummaryResponseTopFunctionsItem(UniversalBaseModel):
12
+ function_name: typing_extensions.Annotated[str, FieldMetadata(alias="functionName")]
13
+ count: float
14
+
15
+ if IS_PYDANTIC_V2:
16
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
17
+ extra="allow", frozen=True
18
+ ) # type: ignore # Pydantic v2
19
+ else:
20
+
21
+ class Config:
22
+ frozen = True
23
+ smart_union = True
24
+ extra = pydantic.Extra.allow
@@ -0,0 +1,22 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class TracesGetAnalyticsSummaryResponseTopModelsItem(UniversalBaseModel):
10
+ model: str
11
+ count: float
12
+
13
+ if IS_PYDANTIC_V2:
14
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
15
+ extra="allow", frozen=True
16
+ ) # type: ignore # Pydantic v2
17
+ else:
18
+
19
+ class Config:
20
+ frozen = True
21
+ smart_union = True
22
+ extra = pydantic.Extra.allow
@@ -0,0 +1,33 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+ from .traces_get_trace_detail_by_env_response_spans_item import (
10
+ TracesGetTraceDetailByEnvResponseSpansItem,
11
+ )
12
+
13
+
14
+ class TracesGetTraceDetailByEnvResponse(UniversalBaseModel):
15
+ trace_id: typing_extensions.Annotated[str, FieldMetadata(alias="traceId")]
16
+ spans: typing.List[TracesGetTraceDetailByEnvResponseSpansItem]
17
+ root_span_id: typing_extensions.Annotated[
18
+ typing.Optional[str], FieldMetadata(alias="rootSpanId")
19
+ ] = None
20
+ total_duration_ms: typing_extensions.Annotated[
21
+ typing.Optional[float], FieldMetadata(alias="totalDurationMs")
22
+ ] = None
23
+
24
+ if IS_PYDANTIC_V2:
25
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
26
+ extra="allow", frozen=True
27
+ ) # type: ignore # Pydantic v2
28
+ else:
29
+
30
+ class Config:
31
+ frozen = True
32
+ smart_union = True
33
+ extra = pydantic.Extra.allow
@@ -0,0 +1,88 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+
10
+
11
+ class TracesGetTraceDetailByEnvResponseSpansItem(UniversalBaseModel):
12
+ trace_id: typing_extensions.Annotated[str, FieldMetadata(alias="traceId")]
13
+ span_id: typing_extensions.Annotated[str, FieldMetadata(alias="spanId")]
14
+ parent_span_id: typing_extensions.Annotated[
15
+ typing.Optional[str], FieldMetadata(alias="parentSpanId")
16
+ ] = None
17
+ environment_id: typing_extensions.Annotated[
18
+ str, FieldMetadata(alias="environmentId")
19
+ ]
20
+ project_id: typing_extensions.Annotated[str, FieldMetadata(alias="projectId")]
21
+ organization_id: typing_extensions.Annotated[
22
+ str, FieldMetadata(alias="organizationId")
23
+ ]
24
+ start_time: typing_extensions.Annotated[str, FieldMetadata(alias="startTime")]
25
+ end_time: typing_extensions.Annotated[str, FieldMetadata(alias="endTime")]
26
+ duration_ms: typing_extensions.Annotated[
27
+ typing.Optional[float], FieldMetadata(alias="durationMs")
28
+ ] = None
29
+ name: str
30
+ kind: float
31
+ status_code: typing_extensions.Annotated[
32
+ typing.Optional[float], FieldMetadata(alias="statusCode")
33
+ ] = None
34
+ status_message: typing_extensions.Annotated[
35
+ typing.Optional[str], FieldMetadata(alias="statusMessage")
36
+ ] = None
37
+ model: typing.Optional[str] = None
38
+ provider: typing.Optional[str] = None
39
+ input_tokens: typing_extensions.Annotated[
40
+ typing.Optional[float], FieldMetadata(alias="inputTokens")
41
+ ] = None
42
+ output_tokens: typing_extensions.Annotated[
43
+ typing.Optional[float], FieldMetadata(alias="outputTokens")
44
+ ] = None
45
+ total_tokens: typing_extensions.Annotated[
46
+ typing.Optional[float], FieldMetadata(alias="totalTokens")
47
+ ] = None
48
+ cost_usd: typing_extensions.Annotated[
49
+ typing.Optional[float], FieldMetadata(alias="costUsd")
50
+ ] = None
51
+ function_id: typing_extensions.Annotated[
52
+ typing.Optional[str], FieldMetadata(alias="functionId")
53
+ ] = None
54
+ function_name: typing_extensions.Annotated[
55
+ typing.Optional[str], FieldMetadata(alias="functionName")
56
+ ] = None
57
+ function_version: typing_extensions.Annotated[
58
+ typing.Optional[str], FieldMetadata(alias="functionVersion")
59
+ ] = None
60
+ error_type: typing_extensions.Annotated[
61
+ typing.Optional[str], FieldMetadata(alias="errorType")
62
+ ] = None
63
+ error_message: typing_extensions.Annotated[
64
+ typing.Optional[str], FieldMetadata(alias="errorMessage")
65
+ ] = None
66
+ attributes: str
67
+ events: typing.Optional[str] = None
68
+ links: typing.Optional[str] = None
69
+ service_name: typing_extensions.Annotated[
70
+ typing.Optional[str], FieldMetadata(alias="serviceName")
71
+ ] = None
72
+ service_version: typing_extensions.Annotated[
73
+ typing.Optional[str], FieldMetadata(alias="serviceVersion")
74
+ ] = None
75
+ resource_attributes: typing_extensions.Annotated[
76
+ typing.Optional[str], FieldMetadata(alias="resourceAttributes")
77
+ ] = None
78
+
79
+ if IS_PYDANTIC_V2:
80
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
81
+ extra="allow", frozen=True
82
+ ) # type: ignore # Pydantic v2
83
+ else:
84
+
85
+ class Config:
86
+ frozen = True
87
+ smart_union = True
88
+ extra = pydantic.Extra.allow
@@ -0,0 +1,33 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+ from .traces_get_trace_detail_response_spans_item import (
10
+ TracesGetTraceDetailResponseSpansItem,
11
+ )
12
+
13
+
14
+ class TracesGetTraceDetailResponse(UniversalBaseModel):
15
+ trace_id: typing_extensions.Annotated[str, FieldMetadata(alias="traceId")]
16
+ spans: typing.List[TracesGetTraceDetailResponseSpansItem]
17
+ root_span_id: typing_extensions.Annotated[
18
+ typing.Optional[str], FieldMetadata(alias="rootSpanId")
19
+ ] = None
20
+ total_duration_ms: typing_extensions.Annotated[
21
+ typing.Optional[float], FieldMetadata(alias="totalDurationMs")
22
+ ] = None
23
+
24
+ if IS_PYDANTIC_V2:
25
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
26
+ extra="allow", frozen=True
27
+ ) # type: ignore # Pydantic v2
28
+ else:
29
+
30
+ class Config:
31
+ frozen = True
32
+ smart_union = True
33
+ extra = pydantic.Extra.allow
@@ -0,0 +1,88 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+
10
+
11
+ class TracesGetTraceDetailResponseSpansItem(UniversalBaseModel):
12
+ trace_id: typing_extensions.Annotated[str, FieldMetadata(alias="traceId")]
13
+ span_id: typing_extensions.Annotated[str, FieldMetadata(alias="spanId")]
14
+ parent_span_id: typing_extensions.Annotated[
15
+ typing.Optional[str], FieldMetadata(alias="parentSpanId")
16
+ ] = None
17
+ environment_id: typing_extensions.Annotated[
18
+ str, FieldMetadata(alias="environmentId")
19
+ ]
20
+ project_id: typing_extensions.Annotated[str, FieldMetadata(alias="projectId")]
21
+ organization_id: typing_extensions.Annotated[
22
+ str, FieldMetadata(alias="organizationId")
23
+ ]
24
+ start_time: typing_extensions.Annotated[str, FieldMetadata(alias="startTime")]
25
+ end_time: typing_extensions.Annotated[str, FieldMetadata(alias="endTime")]
26
+ duration_ms: typing_extensions.Annotated[
27
+ typing.Optional[float], FieldMetadata(alias="durationMs")
28
+ ] = None
29
+ name: str
30
+ kind: float
31
+ status_code: typing_extensions.Annotated[
32
+ typing.Optional[float], FieldMetadata(alias="statusCode")
33
+ ] = None
34
+ status_message: typing_extensions.Annotated[
35
+ typing.Optional[str], FieldMetadata(alias="statusMessage")
36
+ ] = None
37
+ model: typing.Optional[str] = None
38
+ provider: typing.Optional[str] = None
39
+ input_tokens: typing_extensions.Annotated[
40
+ typing.Optional[float], FieldMetadata(alias="inputTokens")
41
+ ] = None
42
+ output_tokens: typing_extensions.Annotated[
43
+ typing.Optional[float], FieldMetadata(alias="outputTokens")
44
+ ] = None
45
+ total_tokens: typing_extensions.Annotated[
46
+ typing.Optional[float], FieldMetadata(alias="totalTokens")
47
+ ] = None
48
+ cost_usd: typing_extensions.Annotated[
49
+ typing.Optional[float], FieldMetadata(alias="costUsd")
50
+ ] = None
51
+ function_id: typing_extensions.Annotated[
52
+ typing.Optional[str], FieldMetadata(alias="functionId")
53
+ ] = None
54
+ function_name: typing_extensions.Annotated[
55
+ typing.Optional[str], FieldMetadata(alias="functionName")
56
+ ] = None
57
+ function_version: typing_extensions.Annotated[
58
+ typing.Optional[str], FieldMetadata(alias="functionVersion")
59
+ ] = None
60
+ error_type: typing_extensions.Annotated[
61
+ typing.Optional[str], FieldMetadata(alias="errorType")
62
+ ] = None
63
+ error_message: typing_extensions.Annotated[
64
+ typing.Optional[str], FieldMetadata(alias="errorMessage")
65
+ ] = None
66
+ attributes: str
67
+ events: typing.Optional[str] = None
68
+ links: typing.Optional[str] = None
69
+ service_name: typing_extensions.Annotated[
70
+ typing.Optional[str], FieldMetadata(alias="serviceName")
71
+ ] = None
72
+ service_version: typing_extensions.Annotated[
73
+ typing.Optional[str], FieldMetadata(alias="serviceVersion")
74
+ ] = None
75
+ resource_attributes: typing_extensions.Annotated[
76
+ typing.Optional[str], FieldMetadata(alias="resourceAttributes")
77
+ ] = None
78
+
79
+ if IS_PYDANTIC_V2:
80
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
81
+ extra="allow", frozen=True
82
+ ) # type: ignore # Pydantic v2
83
+ else:
84
+
85
+ class Config:
86
+ frozen = True
87
+ smart_union = True
88
+ extra = pydantic.Extra.allow
@@ -0,0 +1,25 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .traces_list_by_function_hash_response_traces_item import (
8
+ TracesListByFunctionHashResponseTracesItem,
9
+ )
10
+
11
+
12
+ class TracesListByFunctionHashResponse(UniversalBaseModel):
13
+ traces: typing.List[TracesListByFunctionHashResponseTracesItem]
14
+ total: float
15
+
16
+ if IS_PYDANTIC_V2:
17
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
18
+ extra="allow", frozen=True
19
+ ) # type: ignore # Pydantic v2
20
+ else:
21
+
22
+ class Config:
23
+ frozen = True
24
+ smart_union = True
25
+ extra = pydantic.Extra.allow
@@ -0,0 +1,44 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+
10
+
11
+ class TracesListByFunctionHashResponseTracesItem(UniversalBaseModel):
12
+ id: str
13
+ otel_trace_id: typing_extensions.Annotated[str, FieldMetadata(alias="otelTraceId")]
14
+ environment_id: typing_extensions.Annotated[
15
+ str, FieldMetadata(alias="environmentId")
16
+ ]
17
+ project_id: typing_extensions.Annotated[str, FieldMetadata(alias="projectId")]
18
+ organization_id: typing_extensions.Annotated[
19
+ str, FieldMetadata(alias="organizationId")
20
+ ]
21
+ service_name: typing_extensions.Annotated[
22
+ typing.Optional[str], FieldMetadata(alias="serviceName")
23
+ ] = None
24
+ service_version: typing_extensions.Annotated[
25
+ typing.Optional[str], FieldMetadata(alias="serviceVersion")
26
+ ] = None
27
+ resource_attributes: typing_extensions.Annotated[
28
+ typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]],
29
+ FieldMetadata(alias="resourceAttributes"),
30
+ ] = None
31
+ created_at: typing_extensions.Annotated[
32
+ typing.Optional[str], FieldMetadata(alias="createdAt")
33
+ ] = None
34
+
35
+ if IS_PYDANTIC_V2:
36
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
37
+ extra="allow", frozen=True
38
+ ) # type: ignore # Pydantic v2
39
+ else:
40
+
41
+ class Config:
42
+ frozen = True
43
+ smart_union = True
44
+ extra = pydantic.Extra.allow
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .traces_search_by_env_request_attribute_filters_item_operator import (
8
+ TracesSearchByEnvRequestAttributeFiltersItemOperator,
9
+ )
10
+
11
+
12
+ class TracesSearchByEnvRequestAttributeFiltersItem(UniversalBaseModel):
13
+ key: str
14
+ operator: TracesSearchByEnvRequestAttributeFiltersItemOperator
15
+ value: typing.Optional[str] = None
16
+
17
+ if IS_PYDANTIC_V2:
18
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
19
+ extra="allow", frozen=True
20
+ ) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ TracesSearchByEnvRequestAttributeFiltersItemOperator = typing.Union[
6
+ typing.Literal["eq", "neq", "contains", "exists"], typing.Any
7
+ ]
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ TracesSearchByEnvRequestSortBy = typing.Union[
6
+ typing.Literal["start_time", "duration_ms", "total_tokens"], typing.Any
7
+ ]
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ TracesSearchByEnvRequestSortOrder = typing.Union[
6
+ typing.Literal["asc", "desc"], typing.Any
7
+ ]
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+ from .traces_search_by_env_response_spans_item import TracesSearchByEnvResponseSpansItem
10
+
11
+
12
+ class TracesSearchByEnvResponse(UniversalBaseModel):
13
+ spans: typing.List[TracesSearchByEnvResponseSpansItem]
14
+ total: float
15
+ has_more: typing_extensions.Annotated[bool, FieldMetadata(alias="hasMore")]
16
+
17
+ if IS_PYDANTIC_V2:
18
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
19
+ extra="allow", frozen=True
20
+ ) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
@@ -0,0 +1,50 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+
10
+
11
+ class TracesSearchByEnvResponseSpansItem(UniversalBaseModel):
12
+ trace_id: typing_extensions.Annotated[str, FieldMetadata(alias="traceId")]
13
+ span_id: typing_extensions.Annotated[str, FieldMetadata(alias="spanId")]
14
+ name: str
15
+ start_time: typing_extensions.Annotated[str, FieldMetadata(alias="startTime")]
16
+ duration_ms: typing_extensions.Annotated[
17
+ typing.Optional[float], FieldMetadata(alias="durationMs")
18
+ ] = None
19
+ model: typing.Optional[str] = None
20
+ provider: typing.Optional[str] = None
21
+ input_tokens: typing_extensions.Annotated[
22
+ typing.Optional[float], FieldMetadata(alias="inputTokens")
23
+ ] = None
24
+ output_tokens: typing_extensions.Annotated[
25
+ typing.Optional[float], FieldMetadata(alias="outputTokens")
26
+ ] = None
27
+ total_tokens: typing_extensions.Annotated[
28
+ typing.Optional[float], FieldMetadata(alias="totalTokens")
29
+ ] = None
30
+ cost_usd: typing_extensions.Annotated[
31
+ typing.Optional[float], FieldMetadata(alias="costUsd")
32
+ ] = None
33
+ function_id: typing_extensions.Annotated[
34
+ typing.Optional[str], FieldMetadata(alias="functionId")
35
+ ] = None
36
+ function_name: typing_extensions.Annotated[
37
+ typing.Optional[str], FieldMetadata(alias="functionName")
38
+ ] = None
39
+ has_children: typing_extensions.Annotated[bool, FieldMetadata(alias="hasChildren")]
40
+
41
+ if IS_PYDANTIC_V2:
42
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
43
+ extra="allow", frozen=True
44
+ ) # type: ignore # Pydantic v2
45
+ else:
46
+
47
+ class Config:
48
+ frozen = True
49
+ smart_union = True
50
+ extra = pydantic.Extra.allow
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .traces_search_request_attribute_filters_item_operator import (
8
+ TracesSearchRequestAttributeFiltersItemOperator,
9
+ )
10
+
11
+
12
+ class TracesSearchRequestAttributeFiltersItem(UniversalBaseModel):
13
+ key: str
14
+ operator: TracesSearchRequestAttributeFiltersItemOperator
15
+ value: typing.Optional[str] = None
16
+
17
+ if IS_PYDANTIC_V2:
18
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
19
+ extra="allow", frozen=True
20
+ ) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ TracesSearchRequestAttributeFiltersItemOperator = typing.Union[
6
+ typing.Literal["eq", "neq", "contains", "exists"], typing.Any
7
+ ]
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ TracesSearchRequestSortBy = typing.Union[
6
+ typing.Literal["start_time", "duration_ms", "total_tokens"], typing.Any
7
+ ]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ TracesSearchRequestSortOrder = typing.Union[typing.Literal["asc", "desc"], typing.Any]
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+ from .traces_search_response_spans_item import TracesSearchResponseSpansItem
10
+
11
+
12
+ class TracesSearchResponse(UniversalBaseModel):
13
+ spans: typing.List[TracesSearchResponseSpansItem]
14
+ total: float
15
+ has_more: typing_extensions.Annotated[bool, FieldMetadata(alias="hasMore")]
16
+
17
+ if IS_PYDANTIC_V2:
18
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
19
+ extra="allow", frozen=True
20
+ ) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow